From a2ee26eff8db80d45103695db2ce7ee164d1af63 Mon Sep 17 00:00:00 2001 From: taty2010 Date: Fri, 6 Jan 2023 13:18:22 -0600 Subject: [PATCH 1/4] fix: appending origin cookies to prevent override and to match test order --- packages/runtime/src/templates/edge-shared/utils.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/runtime/src/templates/edge-shared/utils.ts b/packages/runtime/src/templates/edge-shared/utils.ts index 4d9b95cde6..ea70ab52b7 100644 --- a/packages/runtime/src/templates/edge-shared/utils.ts +++ b/packages/runtime/src/templates/edge-shared/utils.ts @@ -31,8 +31,13 @@ export const addMiddlewareHeaders = async ( // We need to await the response to get the origin headers, then we can add the ones from middleware. const res = await originResponse const response = new Response(res.body, res) + let originCookies = response.headers.get('set-cookie') middlewareResponse.headers.forEach((value, key) => { response.headers.set(key, value) + // Append origin cookies after middleware cookies + if (key == 'set-cookie' && originCookies) { + response.headers.append(key, originCookies) + } }) return response } From d1257165566c57bc89fa309bd46e0d20562f8103 Mon Sep 17 00:00:00 2001 From: taty2010 Date: Fri, 6 Jan 2023 13:21:35 -0600 Subject: [PATCH 2/4] test: remove usuallySkip from tests related to middleware + API cookie merge --- .../skip-trailing-slash-redirect/index.test.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/test/e2e/modified-tests/skip-trailing-slash-redirect/index.test.ts b/test/e2e/modified-tests/skip-trailing-slash-redirect/index.test.ts index 937b9e2a63..c9d60ce5a7 100644 --- a/test/e2e/modified-tests/skip-trailing-slash-redirect/index.test.ts +++ b/test/e2e/modified-tests/skip-trailing-slash-redirect/index.test.ts @@ -47,16 +47,14 @@ describe('skip-trailing-slash-redirect', () => { expect(res.headers.get('x-from-middleware')).toBe('true') expect(await res.text()).toBe('hello from middleware') }) - // NTL Skip - usuallySkip('should merge cookies from middleware and API routes correctly', async () => { + it('should merge cookies from middleware and API routes correctly', async () => { const res = await fetchViaHTTP(next.url, '/api/test-cookie', undefined, { redirect: 'manual', }) expect(res.status).toBe(200) expect(res.headers.get('set-cookie')).toEqual('from-middleware=1; Path=/, hello=From API') }) - // NTL Skip - usuallySkip('should merge cookies from middleware and edge API routes correctly', async () => { + it('should merge cookies from middleware and edge API routes correctly', async () => { const res = await fetchViaHTTP(next.url, '/api/test-cookie-edge', undefined, { redirect: 'manual', }) From b1dca3601cd8a96c69610af7346bb3364ce3b45e Mon Sep 17 00:00:00 2001 From: Tatyana <43764894+taty2010@users.noreply.github.com> Date: Fri, 6 Jan 2023 16:16:47 -0600 Subject: [PATCH 3/4] Fix: let to const Co-authored-by: Erica Pisani --- packages/runtime/src/templates/edge-shared/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/runtime/src/templates/edge-shared/utils.ts b/packages/runtime/src/templates/edge-shared/utils.ts index ea70ab52b7..3fe315bcf0 100644 --- a/packages/runtime/src/templates/edge-shared/utils.ts +++ b/packages/runtime/src/templates/edge-shared/utils.ts @@ -31,7 +31,7 @@ export const addMiddlewareHeaders = async ( // We need to await the response to get the origin headers, then we can add the ones from middleware. const res = await originResponse const response = new Response(res.body, res) - let originCookies = response.headers.get('set-cookie') + const originCookies = response.headers.get('set-cookie') middlewareResponse.headers.forEach((value, key) => { response.headers.set(key, value) // Append origin cookies after middleware cookies From 24a7bc06552f1d0ab3ef9d2f1698cf14f5dda0c0 Mon Sep 17 00:00:00 2001 From: Tatyana <43764894+taty2010@users.noreply.github.com> Date: Mon, 9 Jan 2023 09:18:34 -0600 Subject: [PATCH 4/4] change to strict comparison Co-authored-by: Matt Kane --- packages/runtime/src/templates/edge-shared/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/runtime/src/templates/edge-shared/utils.ts b/packages/runtime/src/templates/edge-shared/utils.ts index 3fe315bcf0..ec3a868d5c 100644 --- a/packages/runtime/src/templates/edge-shared/utils.ts +++ b/packages/runtime/src/templates/edge-shared/utils.ts @@ -35,7 +35,7 @@ export const addMiddlewareHeaders = async ( middlewareResponse.headers.forEach((value, key) => { response.headers.set(key, value) // Append origin cookies after middleware cookies - if (key == 'set-cookie' && originCookies) { + if (key === 'set-cookie' && originCookies) { response.headers.append(key, originCookies) } })