From 927555a4facee90f9368de9eb2537a65c510cbf9 Mon Sep 17 00:00:00 2001 From: zkx5xkt <58633293+zkx5xkt@users.noreply.github.com> Date: Mon, 31 Oct 2022 17:22:01 +0200 Subject: [PATCH] add test for cache revalidation 304 with compression (#2170) --- test/cache.ts | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/cache.ts b/test/cache.ts index 4cf8e36d9..dc0e9f08c 100644 --- a/test/cache.ts +++ b/test/cache.ts @@ -470,3 +470,40 @@ test('response.complete is true when using keepalive agent', withServer, async ( t.true(first.complete); }); + +test('response is correct after cache revalidation results in 304 status code when compression is on', withServer, async (t, server, got) => { + const etag = 'foobar'; + + const payload = JSON.stringify({foo: 'bar'}); + const compressed = await promisify(gzip)(payload); + + server.get('/', (request, response) => { + if (request.headers['if-none-match'] === etag) { + response.statusCode = 304; + response.setHeader('etag', etag); + response.end(); + } else { + response.setHeader('content-encoding', 'gzip'); + response.setHeader('cache-control', 'public, max-age=0'); + response.setHeader('etag', etag); + response.end(compressed); + } + }); + + const cache = new Map(); + + await got({ + cache, + decompress: true, + }); + + await delay(10); + + const response = await got({ + cache, + decompress: true, + }); + + t.is(response.isFromCache, true); + t.is(response.body, payload); +});