From 1299dd8c1a50342070dd1475fd5ba747004f2116 Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Mon, 25 Mar 2024 09:54:53 +0100 Subject: [PATCH 1/4] fix: mock cookie endpoint Signed-off-by: Camila Belo --- packages/techdocs-cli/src/lib/httpServer.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/techdocs-cli/src/lib/httpServer.ts b/packages/techdocs-cli/src/lib/httpServer.ts index 08987f3f1d..b54d74ec17 100644 --- a/packages/techdocs-cli/src/lib/httpServer.ts +++ b/packages/techdocs-cli/src/lib/httpServer.ts @@ -59,6 +59,15 @@ export default class HTTPServer { const proxyHandler = this.createProxy(); const server = http.createServer( (request: http.IncomingMessage, response: http.ServerResponse) => { + // This endpoind is used by the frontend to issue a cookie for the user. + // It is necessary because the MkDocs server doesn't expose it. + if (request.url === '/api/techdocs/.backstage/v1-cookie') { + const expiresAt = new Date(Date.now() + 60 * 60 * 1000); + const cookie = { expiresAt: expiresAt.toISOString() }; + response.end(JSON.stringify(cookie)); + return; + } + if (request.url?.startsWith(this.proxyEndpoint)) { const [proxy, forwardPath] = proxyHandler(request); From 8caf2f75a487e8f539cfbde5778045a2674e0de3 Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Mon, 25 Mar 2024 10:12:55 +0100 Subject: [PATCH 2/4] docs: add changeset file Signed-off-by: Camila Belo --- .changeset/kind-walls-live.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/kind-walls-live.md diff --git a/.changeset/kind-walls-live.md b/.changeset/kind-walls-live.md new file mode 100644 index 0000000000..57f040e2c7 --- /dev/null +++ b/.changeset/kind-walls-live.md @@ -0,0 +1,5 @@ +--- +'@techdocs/cli': patch +--- + +Fix how the cli server mocks the new auth cookie endpoint. From 27c97c0c61d8c07e2e90ed780e05ba365971a188 Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Mon, 25 Mar 2024 10:45:10 +0100 Subject: [PATCH 3/4] Update packages/techdocs-cli/src/lib/httpServer.ts Co-authored-by: Vincenzo Scamporlino Signed-off-by: Camila Belo --- packages/techdocs-cli/src/lib/httpServer.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/techdocs-cli/src/lib/httpServer.ts b/packages/techdocs-cli/src/lib/httpServer.ts index b54d74ec17..4c8d9d88ce 100644 --- a/packages/techdocs-cli/src/lib/httpServer.ts +++ b/packages/techdocs-cli/src/lib/httpServer.ts @@ -64,6 +64,7 @@ export default class HTTPServer { if (request.url === '/api/techdocs/.backstage/v1-cookie') { const expiresAt = new Date(Date.now() + 60 * 60 * 1000); const cookie = { expiresAt: expiresAt.toISOString() }; + response.setHeader('Content-Type', 'application/json'); response.end(JSON.stringify(cookie)); return; } From e5f996917db6a194801af3d029b437adcb1a97b9 Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Mon, 25 Mar 2024 13:45:54 +0100 Subject: [PATCH 4/4] fix: current cookie endpoint path Signed-off-by: Camila Belo --- packages/techdocs-cli/src/lib/httpServer.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/techdocs-cli/src/lib/httpServer.ts b/packages/techdocs-cli/src/lib/httpServer.ts index 4c8d9d88ce..252004c7de 100644 --- a/packages/techdocs-cli/src/lib/httpServer.ts +++ b/packages/techdocs-cli/src/lib/httpServer.ts @@ -60,9 +60,11 @@ export default class HTTPServer { const server = http.createServer( (request: http.IncomingMessage, response: http.ServerResponse) => { // This endpoind is used by the frontend to issue a cookie for the user. - // It is necessary because the MkDocs server doesn't expose it. - if (request.url === '/api/techdocs/.backstage/v1-cookie') { - const expiresAt = new Date(Date.now() + 60 * 60 * 1000); + // But the MkDocs server doesn't expose it as a the Backestage backend does. + // So we need to fake it here to prevent 404 errors. + if (request.url === '/api/techdocs/cookie') { + const oneHourInMilliseconds = 60 * 60 * 1000; + const expiresAt = new Date(Date.now() + oneHourInMilliseconds); const cookie = { expiresAt: expiresAt.toISOString() }; response.setHeader('Content-Type', 'application/json'); response.end(JSON.stringify(cookie));