getsentry / getsentry/responses

_recorder.record captures header 'content-encoding: gzip' but does not return gzip content on replay

Open
#724 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
Python
Stars
4.3k
Forks
378
Avg merge
4d 1h
Merged PRs (30d)
1

Description

### Describe the bug

`headers` has been added to the recording file which may include `content-encoding`. When a recording with `content-encoding: gzip` is replayed an error is received:

> urllib3.exceptions.DecodeError: ('Received response with content-encoding: gzip, but failed to decode it.', error('Error -3 while decompressing data: incorrect header check'))

### Additional context

_No response_

### Version of `responses`

0.25.3

### Steps to Reproduce

```python
# Recording code

@_recorder.record(file_path="out.yaml")
def record():
# call lookup API
```

```yaml
- response:
auto_calculate_content_length: false
body: '[{"first_name":true,"last_name":true,"email":false,"phone_number":false,"custom_id":true,"user_id":"abc123","status":{"code":"ACTIVE","description":"The
user is fully active with all features enabled. Further restrictions may apply
for some features."},"employers":[{"id":"abc123","sso_required":false}]}]'
content_type: text/plain
headers:
API-Version: '1'
X-Dep-Next: T-0.8.4
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: f8903c30-4fb2-4b30-95b1-b20e0fdfb515
X-Runtime: '0.129368'
apigw-requestid: Z0iA3ibpIAMEaxg=
cache-control: max-age=0, private, must-revalidate
content-encoding: gzip
etag: W/"2b965752b6adbb3fd7467a489ad314b0"
referrer-policy: strict-origin-when-cross-origin
vary: Accept-Encoding, Origin
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: '0'
method: GET
status: 200
url: https://api.com/v1/users/lookup?custom_id=060419806551&last_name=Murphy&first_name=Lucy
```

```python
# Test code

@responses.activate
def test_lookup_api():
responses._add_from_file(file_path="out.yaml")

lookup = # call lookup API
assert lookup["first_name"] == True
```

### Expected Result

Pass

### Actual Result

urllib3.exceptions.DecodeError: ('Received response with content-encoding: gzip, but failed to decode it.', error('Error -3 while decompressing data: incorrect header check'))

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.