@backstage/backend-test-utils
Version:
Test helpers library for Backstage backends
188 lines (185 loc) • 6.51 kB
JavaScript
;
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