diff --git a/packages/backend-test-utils/src/next/services/MockAuthService.ts b/packages/backend-test-utils/src/next/services/MockAuthService.ts index 4bce87bd2a..b259f7d182 100644 --- a/packages/backend-test-utils/src/next/services/MockAuthService.ts +++ b/packages/backend-test-utils/src/next/services/MockAuthService.ts @@ -73,11 +73,11 @@ export class MockAuthService implements AuthService { } if (token.startsWith(MOCK_USER_TOKEN_PREFIX)) { - const { sub: userEntityRef }: UserTokenPayload = JSON.parse( + const { sub: userEntityRef, issuedBy }: UserTokenPayload = JSON.parse( token.slice(MOCK_USER_TOKEN_PREFIX.length), ); - return mockCredentials.user(userEntityRef); + return mockCredentials.user(userEntityRef, { issuedBySubject: issuedBy }); } if (token.startsWith(MOCK_USER_LIMITED_TOKEN_PREFIX)) { diff --git a/packages/backend-test-utils/src/next/services/mockCredentials.ts b/packages/backend-test-utils/src/next/services/mockCredentials.ts index 4214320142..1f1c6263a9 100644 --- a/packages/backend-test-utils/src/next/services/mockCredentials.ts +++ b/packages/backend-test-utils/src/next/services/mockCredentials.ts @@ -55,6 +55,7 @@ function validateUserEntityRef(ref: string) { */ export type UserTokenPayload = { sub?: string; + issuedBy?: string; }; /** @@ -107,11 +108,18 @@ export namespace mockCredentials { */ export function user( userEntityRef: string = DEFAULT_MOCK_USER_ENTITY_REF, + options?: { issuedBySubject?: string }, ): BackstageCredentials { validateUserEntityRef(userEntityRef); return { $$type: '@backstage/BackstageCredentials', - principal: { type: 'user', userEntityRef }, + principal: { + type: 'user', + userEntityRef, + ...(options?.issuedBySubject && { + issuedBy: { type: 'service', subject: options.issuedBySubject }, + }), + }, }; } @@ -124,11 +132,17 @@ export namespace mockCredentials { * into the token and forwarded to the credentials object when authenticated * by the mock auth service. */ - export function token(userEntityRef?: string): string { + export function token( + userEntityRef?: string, + options?: { issuedBySubject?: string }, + ): string { if (userEntityRef) { validateUserEntityRef(userEntityRef); return `${MOCK_USER_TOKEN_PREFIX}${JSON.stringify({ sub: userEntityRef, + ...(options?.issuedBySubject && { + issuedBy: options.issuedBySubject, + }), } satisfies UserTokenPayload)}`; } return MOCK_USER_TOKEN;