From ee0642506bc453c9bc493d63a21edfb40ec7b6ca Mon Sep 17 00:00:00 2001 From: Jordan Jensen Date: Mon, 6 Jan 2025 12:19:39 -0800 Subject: [PATCH 1/5] Add TypeScript type for credentials reset --- extensions/vscode/src/api/resources/Credentials.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/vscode/src/api/resources/Credentials.ts b/extensions/vscode/src/api/resources/Credentials.ts index 440d5fef5..b5086e2d8 100644 --- a/extensions/vscode/src/api/resources/Credentials.ts +++ b/extensions/vscode/src/api/resources/Credentials.ts @@ -50,7 +50,7 @@ export class Credentials { // 204 - success (no response) // 503 - credentials service unavailable reset() { - return this.client.delete(`credentials`); + return this.client.delete<{ backupFile: string }>(`credentials`); } // Returns: From e4ee09897c6eee552f4b0477a596b7f85b61062d Mon Sep 17 00:00:00 2001 From: Jordan Jensen Date: Mon, 6 Jan 2025 12:54:31 -0800 Subject: [PATCH 2/5] Remove duplicate code in agent err resolution --- extensions/vscode/src/utils/errorTypes.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/extensions/vscode/src/utils/errorTypes.ts b/extensions/vscode/src/utils/errorTypes.ts index eb71ffefe..a39580215 100644 --- a/extensions/vscode/src/utils/errorTypes.ts +++ b/extensions/vscode/src/utils/errorTypes.ts @@ -199,11 +199,5 @@ export function resolveAgentJsonErrorMsg(err: axiosErrorWithJson) { return errPythonExecNotFoundErrorMessage(err); } - // Ignore errors coming from credentials being reset, - // a warning is shown when PublisherState is updated. - if (isErrPythonExecNotFoundError(err)) { - return errPythonExecNotFoundErrorMessage(err); - } - return errUnknownMessage(err as axiosErrorWithJson); } From 468a66ed94fd8dc5e669f1fe1944c2ee6e4f0d1d Mon Sep 17 00:00:00 2001 From: Jordan Jensen Date: Mon, 6 Jan 2025 15:18:48 -0800 Subject: [PATCH 3/5] Rename credentialstest file to include mock_ --- .../credentialstest/{credentialstest.go => mock_credentials.go} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename internal/credentials/credentialstest/{credentialstest.go => mock_credentials.go} (100%) diff --git a/internal/credentials/credentialstest/credentialstest.go b/internal/credentials/credentialstest/mock_credentials.go similarity index 100% rename from internal/credentials/credentialstest/credentialstest.go rename to internal/credentials/credentialstest/mock_credentials.go From 167db78febcd3ae9a65165a2f2a9a974cf9f4445 Mon Sep 17 00:00:00 2001 From: Jordan Jensen Date: Mon, 6 Jan 2025 15:26:08 -0800 Subject: [PATCH 4/5] Use credentials.list() after reset --- extensions/vscode/src/state.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/extensions/vscode/src/state.ts b/extensions/vscode/src/state.ts index 0c03b2f44..06754a4e2 100644 --- a/extensions/vscode/src/state.ts +++ b/extensions/vscode/src/state.ts @@ -302,9 +302,11 @@ export class PublisherState implements Disposable { try { const api = await useApi(); const response = await api.credentials.reset(); - this.credentials = []; const warnMsg = errCredentialsCorruptedMessage(response.data.backupFile); window.showWarningMessage(warnMsg); + + const listResponse = await api.credentials.list(); + this.credentials = listResponse.data; } catch (err: unknown) { const summary = getSummaryStringFromError("resetCredentials", err); window.showErrorMessage(summary); From 667ac3c4c69e6dfaaf53a29a996d795fc6449112 Mon Sep 17 00:00:00 2001 From: Jordan Jensen Date: Mon, 6 Jan 2025 16:15:36 -0800 Subject: [PATCH 5/5] Mock empty list response after credentials reset --- extensions/vscode/src/state.test.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/extensions/vscode/src/state.test.ts b/extensions/vscode/src/state.test.ts index d31d4472b..2afc54eb7 100644 --- a/extensions/vscode/src/state.test.ts +++ b/extensions/vscode/src/state.test.ts @@ -477,8 +477,9 @@ describe("PublisherState", () => { describe("resetCredentials", () => { test("calls to reset credentials and shows a warning", async () => { - mockClient.credentials.reset.mockResolvedValue({ - data: { backupFile: "backup-file" }, + mockClient.credentials.reset.mockImplementation(() => { + mockClient.credentials.list.mockResolvedValue({ data: [] }); + return { data: { backupFile: "backup-file" } }; }); const { mockContext } = mkExtensionContextStateMock({});