nestjs-otel
Version:
NestJS OpenTelemetry Library
45 lines (44 loc) • 1.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const api_1 = require("@opentelemetry/api");
const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
const wide_event_context_1 = require("./wide-event.context");
const wide_event_middleware_1 = require("./wide-event.middleware");
describe("WideEventMiddleware", () => {
let middleware;
let provider;
beforeAll(() => {
provider = new sdk_trace_node_1.NodeTracerProvider({
spanProcessors: [new sdk_trace_node_1.SimpleSpanProcessor(new sdk_trace_node_1.InMemorySpanExporter())],
});
provider.register();
});
beforeEach(() => {
middleware = new wide_event_middleware_1.WideEventMiddleware();
});
afterAll(async () => {
await provider.shutdown();
});
it("should stash the active span on the request", () => {
// #given
const span = api_1.trace.getTracer("test").startSpan("http_request");
const req = {};
const next = jest.fn();
// #when
api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => middleware.use(req, {}, next));
span.end();
// #then
expect(req[wide_event_context_1.WIDE_EVENT_ROOT_SPAN]).toBe(span);
expect(next).toHaveBeenCalledTimes(1);
});
it("should call next without stashing when no span is active", () => {
// #given
const req = {};
const next = jest.fn();
// #when
middleware.use(req, {}, next);
// #then
expect(req[wide_event_context_1.WIDE_EVENT_ROOT_SPAN]).toBeUndefined();
expect(next).toHaveBeenCalledTimes(1);
});
});