コード例 #1
0
ファイル: test_filters.py プロジェクト: jairhenrique/vcrpy
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
コード例 #2
0
ファイル: test_filters.py プロジェクト: jairhenrique/vcrpy
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
コード例 #3
0
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'
コード例 #4
0
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
コード例 #5
0
ファイル: test_filters.py プロジェクト: jairhenrique/vcrpy
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"
コード例 #6
0
ファイル: conftest.py プロジェクト: przemal/luxmed
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
コード例 #7
0
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'{}'
コード例 #8
0
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''
コード例 #9
0
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'
コード例 #10
0
ファイル: test_filters.py プロジェクト: jairhenrique/vcrpy
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 == {}
コード例 #11
0
ファイル: test_filters.py プロジェクト: jairhenrique/vcrpy
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"{}"
コード例 #12
0
ファイル: test_filters.py プロジェクト: jairhenrique/vcrpy
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""
コード例 #13
0
ファイル: test_filters.py プロジェクト: jairhenrique/vcrpy
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"