From 12b0eebfb565990390ca41a864ca288c0b6e5570 Mon Sep 17 00:00:00 2001 From: Mike Lewis Date: Wed, 24 Nov 2021 15:18:50 +0000 Subject: [PATCH] permission-backend: pass in identity client Signed-off-by: Mike Lewis --- plugins/permission-backend/api-report.md | 3 ++ .../src/service/router.test.ts | 36 ++++++++----------- .../permission-backend/src/service/router.ts | 8 ++--- 3 files changed, 19 insertions(+), 28 deletions(-) diff --git a/plugins/permission-backend/api-report.md b/plugins/permission-backend/api-report.md index 7f82913e18..4857c8b044 100644 --- a/plugins/permission-backend/api-report.md +++ b/plugins/permission-backend/api-report.md @@ -4,6 +4,7 @@ ```ts import express from 'express'; +import { IdentityClient } from '@backstage/plugin-auth-backend'; import { Logger as Logger_2 } from 'winston'; import { PermissionPolicy } from '@backstage/plugin-permission-node'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; @@ -16,6 +17,8 @@ export interface RouterOptions { // (undocumented) discovery: PluginEndpointDiscovery; // (undocumented) + identity: IdentityClient; + // (undocumented) logger: Logger_2; // (undocumented) policy: PermissionPolicy; diff --git a/plugins/permission-backend/src/service/router.test.ts b/plugins/permission-backend/src/service/router.test.ts index 13261125c8..29b5245006 100644 --- a/plugins/permission-backend/src/service/router.test.ts +++ b/plugins/permission-backend/src/service/router.test.ts @@ -17,6 +17,7 @@ import express from 'express'; import request from 'supertest'; import { getVoidLogger } from '@backstage/backend-common'; +import { IdentityClient } from '@backstage/plugin-auth-backend'; import { AuthorizeResult, Permission, @@ -25,27 +26,6 @@ import { PermissionPolicy } from '@backstage/plugin-permission-node'; import { createRouter } from './router'; -jest.mock('@backstage/plugin-auth-backend', () => { - class MockIdentityClient { - authenticate = jest.fn(token => - Promise.resolve( - token - ? { - id: 'test-user', - token, - } - : undefined, - ), - ); - - static getBearerToken = jest.fn(authHeader => - authHeader ? `` : undefined, - ); - } - - return { IdentityClient: MockIdentityClient }; -}); - const policy: PermissionPolicy = { handle: jest.fn().mockImplementation((_req, identity) => { if (identity) { @@ -70,6 +50,18 @@ describe('createRouter', () => { getBaseUrl: jest.fn(), getExternalBaseUrl: jest.fn(), }, + identity: { + authenticate: jest.fn(token => { + if (!token) { + throw new Error('No token supplied!'); + } + + return Promise.resolve({ + id: 'test-user', + token, + }); + }), + } as unknown as IdentityClient, policy, }); @@ -108,7 +100,7 @@ describe('createRouter', () => { expect(response.status).toEqual(200); expect(policy.handle).toHaveBeenCalledWith( { permission }, - { id: 'test-user', token: '' }, + { id: 'test-user', token: 'test-token' }, ); expect(response.body).toEqual([ { id: 123, result: AuthorizeResult.ALLOW }, diff --git a/plugins/permission-backend/src/service/router.ts b/plugins/permission-backend/src/service/router.ts index 13f6f7d3d4..0fd72297c5 100644 --- a/plugins/permission-backend/src/service/router.ts +++ b/plugins/permission-backend/src/service/router.ts @@ -44,6 +44,7 @@ export interface RouterOptions { logger: Logger; discovery: PluginEndpointDiscovery; policy: PermissionPolicy; + identity: IdentityClient; } const handleRequest = async ( @@ -98,12 +99,7 @@ const handleRequest = async ( export async function createRouter( options: RouterOptions, ): Promise { - const { policy, discovery } = options; - - const identity = new IdentityClient({ - discovery, - issuer: await discovery.getExternalBaseUrl('auth'), - }); + const { policy, discovery, identity } = options; const permissionIntegrationClient = new PermissionIntegrationClient({ discovery,