From 83e83873912619b218452ef7260aed673e4d8752 Mon Sep 17 00:00:00 2001 From: pamelin Date: Thu, 16 Feb 2023 10:25:29 +0000 Subject: [PATCH] fix: use FetchApi instead of IdentityApi Signed-off-by: pamelin --- .../src/api/StackStormClient.test.ts | 11 ++----- .../stackstorm/src/api/StackStormClient.ts | 32 +++++++++++++------ plugins/stackstorm/src/plugin.ts | 8 ++--- 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/plugins/stackstorm/src/api/StackStormClient.test.ts b/plugins/stackstorm/src/api/StackStormClient.test.ts index 4a3e4cb79b..7166c8297b 100644 --- a/plugins/stackstorm/src/api/StackStormClient.test.ts +++ b/plugins/stackstorm/src/api/StackStormClient.test.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import { UrlPatternDiscovery } from '@backstage/core-app-api'; -import { setupRequestMockHandlers } from '@backstage/test-utils'; +import { MockFetchApi, setupRequestMockHandlers } from '@backstage/test-utils'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; import { StackstormClient } from './StackstormClient'; @@ -141,13 +141,6 @@ const actions: Action[] = [ }, ]; -const identityApiMock = () => ({ - signOut: jest.fn(), - getProfileInfo: jest.fn(), - getBackstageIdentity: jest.fn(), - getCredentials: jest.fn().mockResolvedValue({ token: undefined }), -}); - describe('StackstormClient', () => { setupRequestMockHandlers(server); @@ -186,7 +179,7 @@ describe('StackstormClient', () => { setupHandlers(); client = new StackstormClient({ discoveryApi: discoveryApi, - identityApi: identityApiMock(), + fetchApi: new MockFetchApi(), }); }); diff --git a/plugins/stackstorm/src/api/StackStormClient.ts b/plugins/stackstorm/src/api/StackStormClient.ts index 5fa862dc5a..7048ad1796 100644 --- a/plugins/stackstorm/src/api/StackStormClient.ts +++ b/plugins/stackstorm/src/api/StackStormClient.ts @@ -14,36 +14,48 @@ * limitations under the License. */ import { Action, Execution, Pack, StackstormApi } from './types'; -import { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api'; +import { DiscoveryApi, FetchApi } from '@backstage/core-plugin-api'; export class StackstormClient implements StackstormApi { private readonly discoveryApi: DiscoveryApi; - private readonly identityApi: IdentityApi; + private readonly fetchApi: FetchApi; constructor({ discoveryApi, - identityApi, + fetchApi, }: { discoveryApi: DiscoveryApi; - identityApi: IdentityApi; + fetchApi: FetchApi; }) { this.discoveryApi = discoveryApi; - this.identityApi = identityApi; + this.fetchApi = fetchApi; } private async get(input: string): Promise { - const { token: idToken } = await this.identityApi.getCredentials(); const apiUrl = `${await this.discoveryApi.getBaseUrl('proxy')}/stackstorm`; - const response = await fetch(`${apiUrl}${input}`, { - method: 'GET', + const response = await this.fetchApi.fetch(`${apiUrl}${input}`, { headers: { 'Content-Type': 'application/json', - ...(idToken && { Authorization: `Bearer ${idToken}` }), }, }); if (!response.ok) throw new Error(`Unable to get data: ${response.status}`); - return await response.json(); + return (await response.json()) as T; + } + + async addProject(bazaarProject: any): Promise { + const baseUrl = await this.discoveryApi.getBaseUrl('bazaar'); + + return await this.fetchApi + .fetch(`${baseUrl}/projects`, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify(bazaarProject), + }) + .then(resp => resp.json()); } async getExecutions(limit?: number, offset?: number): Promise { diff --git a/plugins/stackstorm/src/plugin.ts b/plugins/stackstorm/src/plugin.ts index 6f36e4fc7f..8e903c69e8 100644 --- a/plugins/stackstorm/src/plugin.ts +++ b/plugins/stackstorm/src/plugin.ts @@ -19,7 +19,7 @@ import { createPlugin, createRoutableExtension, discoveryApiRef, - identityApiRef, + fetchApiRef, } from '@backstage/core-plugin-api'; import { stackstormApiRef, StackstormClient } from './api'; import { rootRouteRef } from './routes'; @@ -36,12 +36,12 @@ export const stackstormPlugin = createPlugin({ api: stackstormApiRef, deps: { discoveryApi: discoveryApiRef, - identityApi: identityApiRef, + fetchApi: fetchApiRef, }, - factory: ({ discoveryApi, identityApi }) => + factory: ({ discoveryApi, fetchApi }) => new StackstormClient({ discoveryApi, - identityApi, + fetchApi, }), }), ],