return to using startTestBackend

following the example of #21445

Signed-off-by: Jamie Klassen <jamie.klassen@broadcom.com>
This commit is contained in:
Jamie Klassen
2024-01-08 14:52:19 -05:00
parent 002010c8f6
commit 7e85338c1f
@@ -15,30 +15,21 @@
*/
import request from 'supertest';
import {
AuthProviderRouteHandlers,
createOAuthRouteHandlers,
decodeOAuthState,
} from '@backstage/plugin-auth-node';
import { decodeOAuthState } from '@backstage/plugin-auth-node';
import { setupServer } from 'msw/node';
import { rest } from 'msw';
import { setupRequestMockHandlers } from '@backstage/backend-test-utils';
import {
mockServices,
setupRequestMockHandlers,
startTestBackend,
} from '@backstage/backend-test-utils';
import { Server } from 'http';
import { AddressInfo } from 'net';
import express from 'express';
import { JWK, SignJWT, exportJWK, generateKeyPair } from 'jose';
import cookieParser from 'cookie-parser';
import passport from 'passport';
import session from 'express-session';
import { oidcAuthenticator } from './authenticator';
import { ConfigReader } from '@backstage/config';
import Router from 'express-promise-router';
import { authModuleOidcProvider } from './module';
describe('authModuleOidcProvider', () => {
let app: express.Express;
let backstageServer: Server;
let appUrl: string;
let providerRouteHandler: AuthProviderRouteHandlers;
let idToken: string;
let publicKey: JWK;
@@ -142,65 +133,35 @@ describe('authModuleOidcProvider', () => {
),
);
const secret = 'secret';
app = express()
.use(cookieParser(secret))
.use(
session({
secret,
saveUninitialized: false,
resave: false,
cookie: { secure: false },
}),
)
.use(passport.initialize())
.use(passport.session());
await new Promise(resolve => {
backstageServer = app.listen(0, '0.0.0.0', () => {
appUrl = `http://127.0.0.1:${
(backstageServer.address() as AddressInfo).port
}`;
resolve(null);
});
});
mswServer.use(rest.all(`${appUrl}/*`, req => req.passthrough()));
providerRouteHandler = createOAuthRouteHandlers({
authenticator: oidcAuthenticator,
appUrl,
baseUrl: `${appUrl}/api/auth`,
isOriginAllowed: _ => true,
providerId: 'oidc',
config: new ConfigReader({
metadataUrl: 'https://oidc.test/.well-known/openid-configuration',
clientId: 'clientId',
clientSecret: 'clientSecret',
}),
resolverContext: {
issueToken: async _ => ({ token: '' }),
findCatalogUser: async _ => ({
entity: {
apiVersion: '',
kind: '',
metadata: { name: '' },
const backend = await startTestBackend({
features: [
authModuleOidcProvider,
import('@backstage/plugin-auth-backend'),
mockServices.rootConfig.factory({
data: {
app: { baseUrl: 'http://localhost' },
auth: {
session: { secret: 'test' },
providers: {
oidc: {
development: {
metadataUrl:
'https://oidc.test/.well-known/openid-configuration',
clientId: 'clientId',
clientSecret: 'clientSecret',
},
},
},
},
},
}),
signInWithCatalogUser: async _ => ({ token: '' }),
},
],
});
const router = Router();
router
.use(
'/api/auth/oidc/start',
providerRouteHandler.start.bind(providerRouteHandler),
)
.use(
'/api/auth/oidc/handler/frame',
providerRouteHandler.frameHandler.bind(providerRouteHandler),
);
app.use(router);
backstageServer = backend.server;
const port = backend.server.port();
appUrl = `http://localhost:${port}`;
mswServer.use(rest.all(`http://*:${port}/*`, req => req.passthrough()));
});
afterEach(() => {
@@ -216,7 +177,7 @@ describe('authModuleOidcProvider', () => {
expect(startResponse.status).toEqual(302);
const nonceCookie = agent.jar.getCookie('oidc-nonce', {
domain: '127.0.0.1',
domain: 'localhost',
path: '/api/auth/oidc/handler',
script: false,
secure: false,