32 lines
1.4 KiB
TypeScript
32 lines
1.4 KiB
TypeScript
import { expect, test } from "bun:test"
|
|
import { NodeServices } from "@effect/platform-node"
|
|
import { Context, Effect, Layer, References } from "effect"
|
|
import { HttpMiddleware, HttpServer, HttpServerRequest } from "effect/unstable/http"
|
|
|
|
test("route construction retains the server tracing policy", async () => {
|
|
const database = process.env.OPENCODE_DB
|
|
const endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT
|
|
delete process.env.OTEL_EXPORTER_OTLP_ENDPOINT
|
|
process.env.OPENCODE_DB = ":memory:"
|
|
|
|
try {
|
|
const { createEmbeddedRoutes } = await import("../src/routes")
|
|
await Effect.gen(function* () {
|
|
const context = yield* Layer.build(
|
|
createEmbeddedRoutes().pipe(
|
|
Layer.provide(HttpServer.layerServices),
|
|
Layer.provide(NodeServices.layer),
|
|
),
|
|
)
|
|
const request = HttpServerRequest.fromWeb(new Request("http://opencode.local/api/session"))
|
|
|
|
expect(Context.get(context, References.TracerEnabled)).toBeFalse()
|
|
expect(Context.get(context, HttpMiddleware.TracerDisabledWhen)(request)).toBeTrue()
|
|
}).pipe(Effect.scoped, Effect.runPromise)
|
|
} finally {
|
|
if (database === undefined) delete process.env.OPENCODE_DB
|
|
else process.env.OPENCODE_DB = database
|
|
if (endpoint === undefined) delete process.env.OTEL_EXPORTER_OTLP_ENDPOINT
|
|
else process.env.OTEL_EXPORTER_OTLP_ENDPOINT = endpoint
|
|
}
|
|
})
|