def test_replace_dict_post_data_parameters(): # This tests all of: # 1. keeping a parameter # 2. removing a parameter # 3. replacing a parameter # 4. replacing a parameter using a callable # 5. removing a parameter using a callable # 6. replacing a parameter that doesn't exist body = { "one": "keep", "two": "lose", "three": "change", "four": "shout", "five": "whisper" } request = Request("POST", "http://google.com", body, {}) request.headers["Content-Type"] = "application/x-www-form-urlencoded" replace_post_data_parameters( request, [ ("two", None), ("three", "tada"), ("four", lambda key, value, request: value.upper()), ("five", lambda key, value, request: None), ("six", "doesntexist"), ], ) expected_data = {"one": "keep", "three": "tada", "four": "SHOUT"} assert request.body == expected_data
def test_replace_post_data_parameters_empty_body(): # This test ensures replace_post_data_parameters doesn't throw exception when body is empty. body = None request = Request("POST", "http://google.com", body, {}) replace_post_data_parameters( request, [ ("two", None), ("three", "tada"), ("four", lambda key, value, request: value.upper()), ("five", lambda key, value, request: None), ("six", "doesntexist"), ], ) assert request.body is None
def test_replace_post_data_parameters(): # This tests all of: # 1. keeping a parameter # 2. removing a parameter # 3. replacing a parameter # 4. replacing a parameter using a callable # 5. removing a parameter using a callable # 6. replacing a parameter that doesn't exist body = b'one=keep&two=lose&three=change&four=shout&five=whisper' request = Request('POST', 'http://google.com', body, {}) replace_post_data_parameters(request, [ ('two', None), ('three', 'tada'), ('four', lambda key, value, request: value.upper()), ('five', lambda key, value, request: None), ('six', 'doesntexist'), ]) assert request.body == b'one=keep&three=tada&four=SHOUT'
def test_replace_json_post_data_parameters(): # This tests all of: # 1. keeping a parameter # 2. removing a parameter # 3. replacing a parameter # 4. replacing a parameter using a callable # 5. removing a parameter using a callable # 6. replacing a parameter that doesn't exist body = b'{"one": "keep", "two": "lose", "three": "change", "four": "shout", "five": "whisper"}' request = Request('POST', 'http://google.com', body, {}) request.headers['Content-Type'] = 'application/json' replace_post_data_parameters(request, [ ('two', None), ('three', 'tada'), ('four', lambda key, value, request: value.upper()), ('five', lambda key, value, request: None), ('six', 'doesntexist'), ]) request_data = json.loads(request.body.decode('utf-8')) expected_data = json.loads('{"one": "keep", "three": "tada", "four": "SHOUT"}') assert request_data == expected_data
def test_replace_post_data_parameters(): # This tests all of: # 1. keeping a parameter # 2. removing a parameter # 3. replacing a parameter # 4. replacing a parameter using a callable # 5. removing a parameter using a callable # 6. replacing a parameter that doesn't exist body = b"one=keep&two=lose&three=change&four=shout&five=whisper" request = Request("POST", "http://google.com", body, {}) replace_post_data_parameters( request, [ ("two", None), ("three", "tada"), ("four", lambda key, value, request: value.upper()), ("five", lambda key, value, request: None), ("six", "doesntexist"), ], ) assert request.body == b"one=keep&three=tada&four=SHOUT"
def filter_request(request): """Prevents secret request data from being saved in the cassettes.""" request = deepcopy(request) # do not destroy the original request if 'Authorization' in request.headers: request.headers['Authorization'] = 'bearer XYZ' # protect payer if VISIT_TERMS_URL in request.uri: request.uri = re.sub('(filter.PayerId=)(?:\d+)', r'\g<1>{}'.format(PAYER['Id']), request.uri) replace_post_data_parameters(request, { 'username': '******', 'password': '******' }) if request.method == 'POST' and request.body: try: data = json.loads(request.body) except json.JSONDecodeError: pass else: if (request.uri.startswith(VISIT_RESERVE_TEMPORARY_URL) or request.uri.startswith(VISIT_TERMS_VALUATION_URL)) \ and 'PayerDetailsList' in data: payer_details_ = PAYER_DETAILS.copy() payer_details_['ServaId'] = data['ServiceId'] data['PayerDetailsList'] = [payer_details_] if request.uri.startswith( VISIT_RESERVE_URL) and 'PayerData' in data: payer_details_ = PAYER_DETAILS.copy() payer_details_['ServaId'] = data['ServiceId'] data['PayerData'] = payer_details_ request.body = json.dumps(data).encode() return request
def test_remove_all_json_post_data_parameters(): body = b'{"id": "secret", "foo": "bar"}' request = Request('POST', 'http://google.com', body, {}) request.headers['Content-Type'] = 'application/json' replace_post_data_parameters(request, [('id', None), ('foo', None)]) assert request.body == b'{}'
def test_remove_all_post_data_parameters(): body = b'id=secret&foo=bar' request = Request('POST', 'http://google.com', body, {}) replace_post_data_parameters(request, [('id', None), ('foo', None)]) assert request.body == b''
def test_preserve_multiple_post_data_parameters(): body = b'id=secret&foo=bar&foo=baz' request = Request('POST', 'http://google.com', body, {}) replace_post_data_parameters(request, [('id', None)]) assert request.body == b'foo=bar&foo=baz'
def test_remove_all_dict_post_data_parameters(): body = {"id": "secret", "foo": "bar"} request = Request("POST", "http://google.com", body, {}) request.headers["Content-Type"] = "application/x-www-form-urlencoded" replace_post_data_parameters(request, [("id", None), ("foo", None)]) assert request.body == {}
def test_remove_all_json_post_data_parameters(): body = b'{"id": "secret", "foo": "bar"}' request = Request("POST", "http://google.com", body, {}) request.headers["Content-Type"] = "application/json" replace_post_data_parameters(request, [("id", None), ("foo", None)]) assert request.body == b"{}"
def test_remove_all_post_data_parameters(): body = b"id=secret&foo=bar" request = Request("POST", "http://google.com", body, {}) replace_post_data_parameters(request, [("id", None), ("foo", None)]) assert request.body == b""
def test_preserve_multiple_post_data_parameters(): body = b"id=secret&foo=bar&foo=baz" request = Request("POST", "http://google.com", body, {}) replace_post_data_parameters(request, [("id", None)]) assert request.body == b"foo=bar&foo=baz"