示例#1
0
def _before_record_request(request: VcrRequest) -> VcrRequest:
    """This function formats and cleans request data to make it
    more readable and idempotent when re-snapshotting"""

    request.uri = re.sub(r"\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}",
                         "2000-01-01_00-00-00", request.uri)

    try:
        body_str = request.body.decode("utf-8")
    except Exception:
        body_str = None

    if "content-type" in request.headers:
        request.headers["content-type"] = re.sub(
            r"boundary=[0-9a-f]+",
            "boundary=fffffff0000000",
            request.headers["content-type"],
        )
        if (request.headers["content-type"].startswith("multipart/form-data")
                and body_str is not None):
            for regex_to_replace, replace_with in _REPLACE_IN_REQUEST_MULTIFORM.items(
            ):
                body_str = re.sub(regex_to_replace, replace_with, body_str)

    if body_str is not None:
        for regex_to_replace, replace_with in _REPLACE_IN_REQUEST_CONTENT.items(
        ):
            body_str = re.sub(regex_to_replace, replace_with, body_str)
        request.body = body_str
    return request
示例#2
0
def test_record_errors_to_cassette(temp_yaml_file, record_errors):
    custom_persister = CustomPersister()

    cassette_request = Request(
        **{
            'method': 'GET',
            'uri': 'http://127.0.0.1:8080/test',
            'body': None,
            'headers': {
                'User-Agent': 'python-requests/2.26.0',
                'Accept-Encoding': 'gzip, deflate',
                'Accept': '*/*',
                'Connection': 'keep-alive'
            }
        })
    cassette_response = {
        'status': {
            'code': 401,
            'message': 'Unauthorized'
        },
        'headers': {
            'Server': ['http-kit'],
            'Content-Length': ['19'],
            'Date': ['Fri, 15 Oct 2021 10:41:06 GMT']
        },
        'body': {
            'string': b'Unauthorized access'
        }
    }

    cassette_request.uri = 'http://127.0.0.1:8080/test'
    cassette_dict = {
        "requests": [cassette_request],
        "responses": [cassette_response]
    }
    CustomPersister.record_errors = record_errors
    CustomPersister.base_uri = "http://127.0.0.1:8080"
    CustomPersister.mock_url = "http://cornell"
    custom_persister.save_cassette(temp_yaml_file, cassette_dict,
                                   yamlserializer)
    output = open(temp_yaml_file, encoding="utf-8")
    if record_errors:
        assert yaml.safe_load(output)["interactions"] == [{
            "request":
            cassette_request._to_dict(),  # pylint: disable=protected-access
            "response":
            cassette_response
        }]
    else:
        assert output.read() == "0"