backend-test-utils: add version field to mock credentials

The mock credentials created by mockCredentials.none(), .user(), and
.service() were missing the internal version: 'v1' field. This caused
toInternalBackstageCredentials() to throw when used with mock
credentials in tests.

Signed-off-by: Fredrik Adelöw <freben@gmail.com>

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
This commit is contained in:
Fredrik Adelöw
2026-05-14 17:30:30 +02:00
parent eab8f7a510
commit ada7df7929
5 changed files with 70 additions and 3 deletions
@@ -20,6 +20,7 @@ describe('mockCredentials', () => {
it('creates a mocked credentials object for a none principal', () => {
expect(mockCredentials.none()).toEqual({
$$type: '@backstage/BackstageCredentials',
version: 'v1',
principal: { type: 'none' },
});
});
@@ -27,11 +28,13 @@ describe('mockCredentials', () => {
it('creates a mocked credentials object for a user principal', () => {
expect(mockCredentials.user()).toEqual({
$$type: '@backstage/BackstageCredentials',
version: 'v1',
principal: { type: 'user', userEntityRef: 'user:default/mock' },
});
expect(mockCredentials.user('user:default/other')).toEqual({
$$type: '@backstage/BackstageCredentials',
version: 'v1',
principal: { type: 'user', userEntityRef: 'user:default/other' },
});
});
@@ -39,11 +42,13 @@ describe('mockCredentials', () => {
it('creates a mocked credentials object for a limited user principal', () => {
expect(mockCredentials.limitedUser()).toEqual({
$$type: '@backstage/BackstageCredentials',
version: 'v1',
principal: { type: 'user', userEntityRef: 'user:default/mock' },
});
expect(mockCredentials.limitedUser('user:default/other')).toEqual({
$$type: '@backstage/BackstageCredentials',
version: 'v1',
principal: { type: 'user', userEntityRef: 'user:default/other' },
});
});
@@ -51,11 +56,13 @@ describe('mockCredentials', () => {
it('creates a mocked credentials object for a service principal', () => {
expect(mockCredentials.service()).toEqual({
$$type: '@backstage/BackstageCredentials',
version: 'v1',
principal: { type: 'service', subject: 'external:test-service' },
});
expect(mockCredentials.service('plugin:other')).toEqual({
$$type: '@backstage/BackstageCredentials',
version: 'v1',
principal: { type: 'service', subject: 'plugin:other' },
});
});
@@ -138,6 +145,7 @@ describe('mockCredentials', () => {
mockCredentials.service('test', { permissionNames: ['do.it'] }),
).toEqual({
$$type: '@backstage/BackstageCredentials',
version: 'v1',
principal: {
type: 'service',
subject: 'test',
@@ -78,6 +78,7 @@ export namespace mockCredentials {
export function none(): BackstageCredentials<BackstageNonePrincipal> {
const result = {
$$type: '@backstage/BackstageCredentials',
version: 'v1',
principal: { type: 'none' },
} as const;
Object.defineProperties(result, {
@@ -122,6 +123,7 @@ export namespace mockCredentials {
validateUserEntityRef(userEntityRef);
const result = {
$$type: '@backstage/BackstageCredentials',
version: 'v1',
principal: {
type: 'user',
userEntityRef,
@@ -142,7 +144,10 @@ export namespace mockCredentials {
token: {
enumerable: false,
configurable: true,
value: user.token(),
value:
userEntityRef !== DEFAULT_MOCK_USER_ENTITY_REF || options?.actor
? user.token(userEntityRef, options)
: user.token(),
},
});
return result;
@@ -250,6 +255,7 @@ export namespace mockCredentials {
): BackstageCredentials<BackstageServicePrincipal> {
const result = {
$$type: '@backstage/BackstageCredentials',
version: 'v1',
principal: {
type: 'service',
subject,