@backstage/backend-test-utils
Version:
Test helpers library for Backstage backends
102 lines (99 loc) • 2.91 kB
JavaScript
;
var backendPluginApi = require('@backstage/backend-plugin-api');
var alpha$1 = require('@backstage/backend-plugin-api/alpha');
var alpha = require('@backstage/backend-defaults/alpha');
function toMockContext(ctx) {
return ctx;
}
function fromMockContext(ctx) {
return ctx;
}
function parseBaggageHeader(carrier) {
let raw;
for (const [name, value] of Object.entries(carrier)) {
if (name.toLowerCase() !== "baggage") continue;
raw = Array.isArray(value) ? value[0] : value;
break;
}
if (!raw) return void 0;
const entries = /* @__PURE__ */ new Map();
for (const segment of raw.split(",")) {
const [pair] = segment.split(";");
const eqIdx = pair.indexOf("=");
if (eqIdx === -1) continue;
const key = decodeURIComponent(pair.slice(0, eqIdx).trim());
const value = decodeURIComponent(pair.slice(eqIdx + 1).trim());
if (!key) continue;
entries.set(key, { value });
}
if (entries.size === 0) return void 0;
return {
getAllEntries: () => Array.from(entries.entries())
};
}
exports.tracingServiceMock = void 0;
((tracingServiceMock2) => {
tracingServiceMock2.factory = () => alpha.tracingServiceFactory;
tracingServiceMock2.mock = () => {
const spans = [];
const startActiveSpan = jest.fn(
async (_name, optionsOrFn, maybeFn) => {
const fn = typeof optionsOrFn === "function" ? optionsOrFn : maybeFn;
const span = {
setAttribute: jest.fn(),
setStatus: jest.fn()
};
spans.push(span);
return await fn(span);
}
);
const contextStack = [{}];
const active = jest.fn(
() => fromMockContext(contextStack[contextStack.length - 1])
);
const withFn = jest.fn(async (ctx, fn) => {
contextStack.push(toMockContext(ctx));
try {
return await fn();
} finally {
contextStack.pop();
}
});
const extract = jest.fn((ctx, carrier) => {
const baggage = parseBaggageHeader(carrier);
const base = toMockContext(ctx);
return fromMockContext({ baggage: baggage ?? base.baggage });
});
const getBaggage = jest.fn(
(ctx) => toMockContext(ctx).baggage
);
const getActiveBaggage = jest.fn(
() => contextStack[contextStack.length - 1].baggage
);
const context = {
active,
with: withFn
};
const propagation = {
extract,
getBaggage,
getActiveBaggage
};
const service = {
startActiveSpan,
context,
propagation
};
return Object.assign(service, {
context,
propagation,
spans,
factory: backendPluginApi.createServiceFactory({
service: alpha$1.tracingServiceRef,
deps: {},
factory: () => service
})
});
};
})(exports.tracingServiceMock || (exports.tracingServiceMock = {}));
//# sourceMappingURL=TracingServiceMock.cjs.js.map