From 1b409b4e3e3968110dbe0055a947ac9ce20271ca Mon Sep 17 00:00:00 2001 From: Tomi Turtiainen <10324676+tomi@users.noreply.github.com> Date: Fri, 30 Aug 2024 08:47:35 +0300 Subject: [PATCH] fix: Fix edge case in log in (no-changelog) (#10610) --- .../n8nApiClient/authenticatedN8nApiClient.ts | 23 ++++++++++++++++--- .../src/n8nApiClient/n8nApiClient.ts | 8 +++---- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/packages/@n8n/benchmark/src/n8nApiClient/authenticatedN8nApiClient.ts b/packages/@n8n/benchmark/src/n8nApiClient/authenticatedN8nApiClient.ts index b7ebc6800d184..f734cb2ac6eb1 100644 --- a/packages/@n8n/benchmark/src/n8nApiClient/authenticatedN8nApiClient.ts +++ b/packages/@n8n/benchmark/src/n8nApiClient/authenticatedN8nApiClient.ts @@ -1,4 +1,3 @@ -import { strict as assert } from 'node:assert'; import type { AxiosRequestConfig } from 'axios'; import { N8nApiClient } from './n8nApiClient'; @@ -16,15 +15,33 @@ export class AuthenticatedN8nApiClient extends N8nApiClient { email: string; password: string; }, - ) { + ): Promise { const response = await apiClient.restApiRequest('/login', { method: 'POST', data: loginDetails, }); + if (response.data === 'n8n is starting up. Please wait') { + await apiClient.delay(1000); + return await this.createUsingUsernameAndPassword(apiClient, loginDetails); + } + const cookieHeader = response.headers['set-cookie']; const authCookie = Array.isArray(cookieHeader) ? cookieHeader.join('; ') : cookieHeader; - assert(authCookie); + if (!authCookie) { + throw new Error( + 'Did not receive authentication cookie even tho login succeeded: ' + + JSON.stringify( + { + status: response.status, + headers: response.headers, + data: response.data, + }, + null, + 2, + ), + ); + } return new AuthenticatedN8nApiClient(apiClient.apiBaseUrl, authCookie); } diff --git a/packages/@n8n/benchmark/src/n8nApiClient/n8nApiClient.ts b/packages/@n8n/benchmark/src/n8nApiClient/n8nApiClient.ts index a188c4eefe913..dd81fa9cfbd50 100644 --- a/packages/@n8n/benchmark/src/n8nApiClient/n8nApiClient.ts +++ b/packages/@n8n/benchmark/src/n8nApiClient/n8nApiClient.ts @@ -75,11 +75,11 @@ export class N8nApiClient { } } - protected getRestEndpointUrl(endpoint: string) { - return `${this.apiBaseUrl}/rest${endpoint}`; + async delay(ms: number): Promise { + return await new Promise((resolve) => setTimeout(resolve, ms)); } - private async delay(ms: number): Promise { - return await new Promise((resolve) => setTimeout(resolve, ms)); + protected getRestEndpointUrl(endpoint: string) { + return `${this.apiBaseUrl}/rest${endpoint}`; } }