Skip to content

Commit 6ca17e2

Browse files
committed
Make sure cached body is decompressed
1 parent bf0b0cd commit 6ca17e2

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

test/cache.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import {promisify} from 'util';
2+
import {gzip} from 'zlib';
13
import test from 'ava';
24
import pEvent = require('p-event');
35
import getStream = require('get-stream');
@@ -227,3 +229,33 @@ test('does not break POST requests', withServer, async (t, server, got) => {
227229

228230
t.is(headers['content-length'], '0');
229231
});
232+
233+
test('decompresses cached responses', withServer, async (t, server, got) => {
234+
const etag = 'foobar';
235+
236+
const payload = JSON.stringify({foo: 'bar'});
237+
const compressed = await promisify(gzip)(payload);
238+
239+
server.get('/', (request, response) => {
240+
if (request.headers['if-none-match'] === etag) {
241+
response.statusCode = 304;
242+
response.end();
243+
} else {
244+
response.setHeader('content-encoding', 'gzip');
245+
response.setHeader('cache-control', 'public, max-age: 60');
246+
response.setHeader('etag', 'foobar');
247+
response.end(compressed);
248+
}
249+
});
250+
251+
const cache = new Map();
252+
253+
for (let i = 0; i < 2; i++) {
254+
await t.notThrowsAsync(got({
255+
cache,
256+
responseType: 'json',
257+
decompress: true,
258+
retry: 2
259+
}));
260+
}
261+
});

0 commit comments

Comments
 (0)