UNPKG

@backstage/backend-test-utils

Version:

Test helpers library for Backstage backends

188 lines (185 loc) • 6.51 kB
'use strict'; const DEFAULT_MOCK_USER_ENTITY_REF = "user:default/mock"; const DEFAULT_MOCK_SERVICE_SUBJECT = "external:test-service"; const MOCK_AUTH_COOKIE = "backstage-auth"; const MOCK_NONE_TOKEN = "mock-none-token"; const MOCK_USER_TOKEN = "mock-user-token"; const MOCK_USER_TOKEN_PREFIX = "mock-user-token:"; const MOCK_INVALID_USER_TOKEN = "mock-invalid-user-token"; const MOCK_USER_LIMITED_TOKEN_PREFIX = "mock-limited-user-token:"; const MOCK_INVALID_USER_LIMITED_TOKEN = "mock-invalid-limited-user-token"; const MOCK_SERVICE_TOKEN = "mock-service-token"; const MOCK_SERVICE_TOKEN_PREFIX = "mock-service-token:"; const MOCK_INVALID_SERVICE_TOKEN = "mock-invalid-service-token"; function validateUserEntityRef(ref) { if (!ref.match(/^.+:.+\/.+$/)) { throw new TypeError( `Invalid user entity reference '${ref}', expected <kind>:<namespace>/<name>` ); } } exports.mockCredentials = void 0; ((mockCredentials2) => { function none() { const result = { $$type: "@backstage/BackstageCredentials", principal: { type: "none" } }; Object.defineProperties(result, { toString: { enumerable: false, configurable: true, writable: true, value: () => `mockCredentials{nonePrincipal}` } }); return result; } mockCredentials2.none = none; ((none2) => { function header() { return `Bearer ${MOCK_NONE_TOKEN}`; } none2.header = header; })(none = mockCredentials2.none || (mockCredentials2.none = {})); function user(userEntityRef = DEFAULT_MOCK_USER_ENTITY_REF, options) { validateUserEntityRef(userEntityRef); const result = { $$type: "@backstage/BackstageCredentials", principal: { type: "user", userEntityRef, ...options?.actor && { actor: { type: "service", subject: options.actor.subject } } } }; Object.defineProperties(result, { toString: { enumerable: false, configurable: true, value: () => `mockCredentials{userPrincipal{${userEntityRef}${options?.actor ? `,actor={${options.actor.subject}}` : ""}}}` }, token: { enumerable: false, configurable: true, value: user.token() } }); return result; } mockCredentials2.user = user; ((user2) => { function token(userEntityRef, options) { if (userEntityRef) { validateUserEntityRef(userEntityRef); return `${MOCK_USER_TOKEN_PREFIX}${JSON.stringify({ sub: userEntityRef, ...options?.actor && { actor: { subject: options.actor.subject } } })}`; } return MOCK_USER_TOKEN; } user2.token = token; function header(userEntityRef) { return `Bearer ${token(userEntityRef)}`; } user2.header = header; function invalidToken() { return MOCK_INVALID_USER_TOKEN; } user2.invalidToken = invalidToken; function invalidHeader() { return `Bearer ${invalidToken()}`; } user2.invalidHeader = invalidHeader; })(user = mockCredentials2.user || (mockCredentials2.user = {})); function limitedUser(userEntityRef = DEFAULT_MOCK_USER_ENTITY_REF) { return user(userEntityRef); } mockCredentials2.limitedUser = limitedUser; ((limitedUser2) => { function token(userEntityRef = DEFAULT_MOCK_USER_ENTITY_REF) { validateUserEntityRef(userEntityRef); return `${MOCK_USER_LIMITED_TOKEN_PREFIX}${JSON.stringify({ sub: userEntityRef })}`; } limitedUser2.token = token; function cookie(userEntityRef) { return `${MOCK_AUTH_COOKIE}=${token(userEntityRef)}`; } limitedUser2.cookie = cookie; function invalidToken() { return MOCK_INVALID_USER_LIMITED_TOKEN; } limitedUser2.invalidToken = invalidToken; function invalidCookie() { return `${MOCK_AUTH_COOKIE}=${invalidToken()}`; } limitedUser2.invalidCookie = invalidCookie; })(limitedUser = mockCredentials2.limitedUser || (mockCredentials2.limitedUser = {})); function service(subject = DEFAULT_MOCK_SERVICE_SUBJECT, accessRestrictions) { const result = { $$type: "@backstage/BackstageCredentials", principal: { type: "service", subject, ...accessRestrictions ? { accessRestrictions } : {} } }; Object.defineProperties(result, { toString: { enumerable: false, configurable: true, value: () => `mockCredentials{servicePrincipal{${subject}${accessRestrictions ? `,accessRestrictions=${JSON.stringify(accessRestrictions)}` : ""}}}` } }); return result; } mockCredentials2.service = service; ((service2) => { function token(options) { if (options) { const { targetPluginId, onBehalfOf } = options; const oboPrincipal = onBehalfOf?.principal; const obo = oboPrincipal.type === "user" ? oboPrincipal.userEntityRef : void 0; const subject = oboPrincipal.type === "service" ? oboPrincipal.subject : void 0; return `${MOCK_SERVICE_TOKEN_PREFIX}${JSON.stringify({ sub: subject, obo, target: targetPluginId })}`; } return MOCK_SERVICE_TOKEN; } service2.token = token; function header(options) { return `Bearer ${token(options)}`; } service2.header = header; function invalidToken() { return MOCK_INVALID_SERVICE_TOKEN; } service2.invalidToken = invalidToken; function invalidHeader() { return `Bearer ${invalidToken()}`; } service2.invalidHeader = invalidHeader; })(service = mockCredentials2.service || (mockCredentials2.service = {})); })(exports.mockCredentials || (exports.mockCredentials = {})); exports.DEFAULT_MOCK_SERVICE_SUBJECT = DEFAULT_MOCK_SERVICE_SUBJECT; exports.DEFAULT_MOCK_USER_ENTITY_REF = DEFAULT_MOCK_USER_ENTITY_REF; exports.MOCK_AUTH_COOKIE = MOCK_AUTH_COOKIE; exports.MOCK_INVALID_SERVICE_TOKEN = MOCK_INVALID_SERVICE_TOKEN; exports.MOCK_INVALID_USER_LIMITED_TOKEN = MOCK_INVALID_USER_LIMITED_TOKEN; exports.MOCK_INVALID_USER_TOKEN = MOCK_INVALID_USER_TOKEN; exports.MOCK_NONE_TOKEN = MOCK_NONE_TOKEN; exports.MOCK_SERVICE_TOKEN = MOCK_SERVICE_TOKEN; exports.MOCK_SERVICE_TOKEN_PREFIX = MOCK_SERVICE_TOKEN_PREFIX; exports.MOCK_USER_LIMITED_TOKEN_PREFIX = MOCK_USER_LIMITED_TOKEN_PREFIX; exports.MOCK_USER_TOKEN = MOCK_USER_TOKEN; exports.MOCK_USER_TOKEN_PREFIX = MOCK_USER_TOKEN_PREFIX; //# sourceMappingURL=mockCredentials.cjs.js.map