From d4a0f163a9308f4331fa9453c8f6765730a6ed8e Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Wed, 19 Aug 2026 15:25:23 -0500 Subject: [PATCH] test(core): isolate model resolver auth config (#43509) Co-authored-by: rekram1-node --- packages/core/test/model-resolver.test.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/core/test/model-resolver.test.ts b/packages/core/test/model-resolver.test.ts index cb2a943ae0..6a6c83a506 100644 --- a/packages/core/test/model-resolver.test.ts +++ b/packages/core/test/model-resolver.test.ts @@ -2,7 +2,7 @@ import { describe, expect } from "bun:test" import { LLM, LanguageModel } from "@opencode-ai/ai" import { OpenAIChat } from "@opencode-ai/ai/protocols" import { compileRequest } from "@opencode-ai/ai/route/client" -import { Effect, Layer } from "effect" +import { ConfigProvider, Effect, Layer } from "effect" import { Headers } from "effect/unstable/http" import { Credential } from "@opencode-ai/core/credential" import { Integration } from "@opencode-ai/core/integration" @@ -66,6 +66,10 @@ function withEnv(variables: Record, effect: ) } +function withConfigEnv(env: Record, effect: () => Effect.Effect) { + return effect().pipe(Effect.provide(ConfigProvider.layer(ConfigProvider.fromEnv({ env })))) +} + describe("ModelResolver", () => { it.effect("constructs native Azure requests with deployment IDs and projected resource URLs", () => Effect.gen(function* () { @@ -257,7 +261,7 @@ describe("ModelResolver", () => { ) it.effect("treats an empty configured API key as omitted", () => - withEnv({ OPENAI_API_KEY: "environment-key" }, () => + withConfigEnv({ OPENAI_API_KEY: "environment-key" }, () => Effect.gen(function* () { const resolved = yield* ModelResolver.fromCatalogModel( model(Provider.aisdk("@ai-sdk/openai"), { @@ -337,7 +341,7 @@ describe("ModelResolver", () => { }) const layer = ModelResolver.layer.pipe(Layer.provide(Layer.mergeAll(catalog, integrations, npm, aisdk))) - return withEnv({ GOOGLE_GENERATIVE_AI_API_KEY: undefined }, () => + return withConfigEnv({}, () => Effect.gen(function* () { const resolver = yield* ModelResolver.Service const resolved = yield* resolver.resolveModel(selected) @@ -358,7 +362,7 @@ describe("ModelResolver", () => { }) it.effect("keeps native provider environment auth strict when no API key is configured", () => - withEnv({ GOOGLE_GENERATIVE_AI_API_KEY: undefined }, () => + withConfigEnv({}, () => Effect.gen(function* () { const resolved = yield* ModelResolver.fromCatalogModel( model(Provider.aisdk("@ai-sdk/google"), { @@ -477,7 +481,11 @@ describe("ModelResolver", () => { }, ], }) - const resolved = yield* ModelResolver.resolveModel(catalog, VariantID.make("xhigh")) + const resolved = yield* ModelResolver.resolveModel( + catalog, + VariantID.make("xhigh"), + Credential.Key.make({ type: "key", key: "secret" }), + ) expect(resolved.route.defaults.headers).toMatchObject({ "x-test": "header", "x-variant": "high" }) expect(resolved.route.defaults.http?.body).toEqual({