UNPKG

nestjs-otel

Version:
45 lines (44 loc) 1.69 kB
"use strict"; 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); }); });