tests(contracts): fix provider catalog runtime wiring (#49040)

This commit is contained in:
Harold Hunt 2026-03-17 10:05:41 -04:00 committed by GitHub
parent 8448f48cc5
commit 1561c6a71c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 51 additions and 17 deletions

View File

@ -5,36 +5,57 @@ import {
expectCodexMissingAuthHint,
} from "../provider-runtime.test-support.js";
import {
providerContractPluginIds,
resolveProviderContractPluginIdsForProvider,
resolveProviderContractProvidersForPluginIds,
uniqueProviderContractProviders,
} from "./registry.js";
const resolvePluginProvidersMock = vi.fn();
const resolveOwningPluginIdsForProviderMock = vi.fn();
const resolveNonBundledProviderPluginIdsMock = vi.fn();
type ResolvePluginProviders = typeof import("../providers.js").resolvePluginProviders;
type ResolveOwningPluginIdsForProvider =
typeof import("../providers.js").resolveOwningPluginIdsForProvider;
type ResolveNonBundledProviderPluginIds =
typeof import("../providers.js").resolveNonBundledProviderPluginIds;
const resolvePluginProvidersMock = vi.hoisted(() =>
vi.fn<ResolvePluginProviders>((_) => uniqueProviderContractProviders),
);
const resolveOwningPluginIdsForProviderMock = vi.hoisted(() =>
vi.fn<ResolveOwningPluginIdsForProvider>((params) =>
resolveProviderContractPluginIdsForProvider(params.provider),
),
);
const resolveNonBundledProviderPluginIdsMock = vi.hoisted(() =>
vi.fn<ResolveNonBundledProviderPluginIds>((_) => [] as string[]),
);
vi.mock("../providers.js", () => ({
resolvePluginProviders: (...args: unknown[]) => resolvePluginProvidersMock(...args),
resolveOwningPluginIdsForProvider: (...args: unknown[]) =>
resolveOwningPluginIdsForProviderMock(...args),
resolveNonBundledProviderPluginIds: (...args: unknown[]) =>
resolveNonBundledProviderPluginIdsMock(...args),
resolvePluginProviders: (params: unknown) => resolvePluginProvidersMock(params as never),
resolveOwningPluginIdsForProvider: (params: unknown) =>
resolveOwningPluginIdsForProviderMock(params as never),
resolveNonBundledProviderPluginIds: (params: unknown) =>
resolveNonBundledProviderPluginIdsMock(params as never),
}));
const {
augmentModelCatalogWithProviderPlugins,
buildProviderMissingAuthMessageWithPlugin,
resetProviderRuntimeHookCacheForTest,
resolveProviderBuiltInModelSuppression,
} = await import("../provider-runtime.js");
let augmentModelCatalogWithProviderPlugins: typeof import("../provider-runtime.js").augmentModelCatalogWithProviderPlugins;
let buildProviderMissingAuthMessageWithPlugin: typeof import("../provider-runtime.js").buildProviderMissingAuthMessageWithPlugin;
let resetProviderRuntimeHookCacheForTest: typeof import("../provider-runtime.js").resetProviderRuntimeHookCacheForTest;
let resolveProviderBuiltInModelSuppression: typeof import("../provider-runtime.js").resolveProviderBuiltInModelSuppression;
describe("provider catalog contract", () => {
beforeEach(() => {
beforeEach(async () => {
vi.resetModules();
({
augmentModelCatalogWithProviderPlugins,
buildProviderMissingAuthMessageWithPlugin,
resetProviderRuntimeHookCacheForTest,
resolveProviderBuiltInModelSuppression,
} = await import("../provider-runtime.js"));
resetProviderRuntimeHookCacheForTest();
resolveOwningPluginIdsForProviderMock.mockReset();
resolveOwningPluginIdsForProviderMock.mockReturnValue(providerContractPluginIds);
resolveOwningPluginIdsForProviderMock.mockImplementation((params) =>
resolveProviderContractPluginIdsForProvider(params.provider),
);
resolveNonBundledProviderPluginIdsMock.mockReset();
resolveNonBundledProviderPluginIdsMock.mockReturnValue([]);

View File

@ -177,6 +177,19 @@ export function requireProviderContractProvider(providerId: string): ProviderPlu
return provider;
}
export function resolveProviderContractPluginIdsForProvider(
providerId: string,
): string[] | undefined {
const pluginIds = [
...new Set(
providerContractRegistry
.filter((entry) => entry.provider.id === providerId)
.map((entry) => entry.pluginId),
),
];
return pluginIds.length > 0 ? pluginIds : undefined;
}
export function resolveProviderContractProvidersForPluginIds(
pluginIds: readonly string[],
): ProviderPlugin[] {