77from typing import TYPE_CHECKING
88
99from .config import PROXY_URL
10+ from .proxy_testcase import get_recording_id
1011
1112if TYPE_CHECKING :
1213 from typing import Any , Dict
1314
1415
16+ def set_bodiless_matcher ():
17+ # type: () -> None
18+ """Adjusts the "match" operation to EXCLUDE the body when matching a request to a recording's entries.
19+
20+ This method must be called during test case execution, rather than at a session, module, or class level.
21+ """
22+
23+ x_recording_id = get_recording_id ()
24+ _send_matcher_request ("BodilessMatcher" , {"x-recording-id" : x_recording_id })
25+
26+
1527def add_body_key_sanitizer (** kwargs ):
1628 # type: (**Any) -> None
1729 """Registers a sanitizer that offers regex update of a specific JTokenPath within a returned body.
@@ -28,7 +40,7 @@ def add_body_key_sanitizer(**kwargs):
2840 """
2941
3042 request_args = _get_request_args (** kwargs )
31- _send_request ("BodyKeySanitizer" , request_args )
43+ _send_sanitizer_request ("BodyKeySanitizer" , request_args )
3244
3345
3446def add_body_regex_sanitizer (** kwargs ):
@@ -46,7 +58,7 @@ def add_body_regex_sanitizer(**kwargs):
4658 """
4759
4860 request_args = _get_request_args (** kwargs )
49- _send_request ("BodyRegexSanitizer" , request_args )
61+ _send_sanitizer_request ("BodyRegexSanitizer" , request_args )
5062
5163
5264def add_continuation_sanitizer (** kwargs ):
@@ -65,7 +77,7 @@ def add_continuation_sanitizer(**kwargs):
6577 """
6678
6779 request_args = _get_request_args (** kwargs )
68- _send_request ("ContinuationSanitizer" , request_args )
80+ _send_sanitizer_request ("ContinuationSanitizer" , request_args )
6981
7082
7183def add_general_regex_sanitizer (** kwargs ):
@@ -82,7 +94,7 @@ def add_general_regex_sanitizer(**kwargs):
8294 """
8395
8496 request_args = _get_request_args (** kwargs )
85- _send_request ("GeneralRegexSanitizer" , request_args )
97+ _send_sanitizer_request ("GeneralRegexSanitizer" , request_args )
8698
8799
88100def add_header_regex_sanitizer (** kwargs ):
@@ -102,14 +114,14 @@ def add_header_regex_sanitizer(**kwargs):
102114 """
103115
104116 request_args = _get_request_args (** kwargs )
105- _send_request ("HeaderRegexSanitizer" , request_args )
117+ _send_sanitizer_request ("HeaderRegexSanitizer" , request_args )
106118
107119
108120def add_oauth_response_sanitizer ():
109121 # type: () -> None
110122 """Registers a sanitizer that cleans out all request/response pairs that match an oauth regex in their URI."""
111123
112- _send_request ("OAuthResponseSanitizer" , {})
124+ _send_sanitizer_request ("OAuthResponseSanitizer" , {})
113125
114126
115127def add_remove_header_sanitizer (** kwargs ):
@@ -121,7 +133,7 @@ def add_remove_header_sanitizer(**kwargs):
121133 """
122134
123135 request_args = _get_request_args (** kwargs )
124- _send_request ("RemoveHeaderSanitizer" , request_args )
136+ _send_sanitizer_request ("RemoveHeaderSanitizer" , request_args )
125137
126138
127139def add_request_subscription_id_sanitizer (** kwargs ):
@@ -134,7 +146,7 @@ def add_request_subscription_id_sanitizer(**kwargs):
134146 """
135147
136148 request_args = _get_request_args (** kwargs )
137- _send_request ("ReplaceRequestSubscriptionId" , request_args )
149+ _send_sanitizer_request ("ReplaceRequestSubscriptionId" , request_args )
138150
139151
140152def add_uri_regex_sanitizer (** kwargs ):
@@ -149,35 +161,59 @@ def add_uri_regex_sanitizer(**kwargs):
149161 """
150162
151163 request_args = _get_request_args (** kwargs )
152- _send_request ("UriRegexSanitizer" , request_args )
164+ _send_sanitizer_request ("UriRegexSanitizer" , request_args )
153165
154166
155167def _get_request_args (** kwargs ):
156168 # type: (**Any) -> Dict
157169 """Returns a dictionary of sanitizer constructor headers"""
158170
159171 request_args = {}
160- request_args ["groupForReplace" ] = kwargs .get ("group_for_replace" )
161- request_args ["headersForRemoval" ] = kwargs .get ("headers" )
162- request_args ["jsonPath" ] = kwargs .get ("json_path" )
163- request_args ["key" ] = kwargs .get ("key" )
164- request_args ["method" ] = kwargs .get ("method" )
165- request_args ["regex" ] = kwargs .get ("regex" )
166- request_args ["resetAfterFirst" ] = kwargs .get ("reset_after_first" )
167- request_args ["value" ] = kwargs .get ("value" )
172+ if "group_for_replace" in kwargs :
173+ request_args ["groupForReplace" ] = kwargs .get ("group_for_replace" )
174+ if "headers" in kwargs :
175+ request_args ["headersForRemoval" ] = kwargs .get ("headers" )
176+ if "json_path" in kwargs :
177+ request_args ["jsonPath" ] = kwargs .get ("json_path" )
178+ if "key" in kwargs :
179+ request_args ["key" ] = kwargs .get ("key" )
180+ if "method" in kwargs :
181+ request_args ["method" ] = kwargs .get ("method" )
182+ if "regex" in kwargs :
183+ request_args ["regex" ] = kwargs .get ("regex" )
184+ if "reset_after_first" in kwargs :
185+ request_args ["resetAfterFirst" ] = kwargs .get ("reset_after_first" )
186+ if "value" in kwargs :
187+ request_args ["value" ] = kwargs .get ("value" )
168188 return request_args
169189
170190
171- def _send_request (sanitizer , parameters ):
191+ def _send_matcher_request (matcher , headers ):
192+ # type: (str, Dict) -> None
193+ """Sends a POST request to the test proxy endpoint to register the specified matcher.
194+
195+ :param str matcher: The name of the matcher to set.
196+ :param dict headers: Any matcher headers, as a dictionary.
197+ """
198+
199+ headers_to_send = {"x-abstraction-identifier" : matcher }
200+ headers_to_send .update (headers )
201+ requests .post (
202+ "{}/Admin/SetMatcher" .format (PROXY_URL ),
203+ headers = headers_to_send ,
204+ )
205+
206+
207+ def _send_sanitizer_request (sanitizer , parameters ):
172208 # type: (str, Dict) -> None
173- """Send a POST request to the test proxy endpoint to register the specified sanitizer.
209+ """Sends a POST request to the test proxy endpoint to register the specified sanitizer.
174210
175211 :param str sanitizer: The name of the sanitizer to add.
176212 :param dict parameters: The sanitizer constructor parameters, as a dictionary.
177213 """
178214
179215 requests .post (
180216 "{}/Admin/AddSanitizer" .format (PROXY_URL ),
181- headers = {"x-abstraction-identifier" : sanitizer },
217+ headers = {"x-abstraction-identifier" : sanitizer , "Content-Type" : "application/json" },
182218 json = parameters
183219 )
0 commit comments