From 489a2b36f92f445699bdf3ce093b4ba20e6b5906 Mon Sep 17 00:00:00 2001 From: Tobias Bocanegra Date: Tue, 17 Sep 2024 14:07:48 +0200 Subject: [PATCH] fix: set code and content surrogate keys for json 404 (#692) fixes #688 --- src/json-pipe.js | 18 +++++++++--------- test/json-pipe.test.js | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/json-pipe.js b/src/json-pipe.js index 9e3fe296..dbbe5cb1 100644 --- a/src/json-pipe.js +++ b/src/json-pipe.js @@ -87,7 +87,8 @@ async function fetchJsonContent(state, req, res) { updateLastModified(state, res, extractLastModified(ret.headers)); } else { - state.content.sourceBus = 'content'; + // also add code surrogate key in case json is later added to code bus (#688) + state.content.sourceBus = 'code|content'; res.status = ret.status === 404 ? 404 : 502; res.error = `failed to load ${state.info.resourcePath}: ${ret.status}`; } @@ -95,16 +96,15 @@ async function fetchJsonContent(state, req, res) { async function computeSurrogateKeys(state) { const keys = []; - const pathKey = state.content?.sourceBus === 'code' - ? `${state.ref}--${state.repo}--${state.owner}${state.info.path}` - : `${state.contentBusId}${state.info.path}`; - - keys.push(await computeSurrogateKey(pathKey)); - if (state.content?.sourceBus === 'content') { - keys.push(state.contentBusId); - } else { + if (state.content.sourceBus.includes('code')) { + keys.push(await computeSurrogateKey(`${state.ref}--${state.repo}--${state.owner}${state.info.path}`)); keys.push(`${state.ref}--${state.repo}--${state.owner}_code`); } + if (state.content.sourceBus.includes('content')) { + keys.push(await computeSurrogateKey(`${state.contentBusId}${state.info.path}`)); + keys.push(state.contentBusId); + } + return keys; } diff --git a/test/json-pipe.test.js b/test/json-pipe.test.js index 0d430221..8acf759b 100644 --- a/test/json-pipe.test.js +++ b/test/json-pipe.test.js @@ -240,7 +240,7 @@ describe('JSON Pipe Test', () => { 'access-control-allow-origin': '*', 'content-security-policy': 'default-src \'self\'', 'x-error': 'failed to load /en/index.json: 404', - 'x-surrogate-key': 'Atrz_qDg26DmSe9a foobar', + 'x-surrogate-key': 'SIMSxecp2CJXqGYs ref--repo--owner_code Atrz_qDg26DmSe9a foobar', }); });