From ac39cef969c19e4d087c1c44d1a2a6e7a85daac1 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 18 Apr 2026 00:22:02 +0100 Subject: [PATCH] test: use web fetch contract artifacts --- .../plugins/provider-contract-suites.ts | 17 +----------- .../plugins/web-fetch-provider-contract.ts | 27 ++++++++++++++++++- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/test/helpers/plugins/provider-contract-suites.ts b/test/helpers/plugins/provider-contract-suites.ts index 8eefcc86c69..d000f6c98dd 100644 --- a/test/helpers/plugins/provider-contract-suites.ts +++ b/test/helpers/plugins/provider-contract-suites.ts @@ -164,21 +164,6 @@ export function installWebFetchProviderContractSuite(params: { expect(applied.plugins?.entries?.[params.pluginId]?.enabled).toBe(true); } - const config = { - tools: { - web: { - fetch: { - provider: provider.id, - ...fetchConfigTarget, - }, - }, - }, - } as OpenClawConfig; - const tool = provider.createTool({ config, fetchConfig: fetchConfigTarget }); - - expect(tool).not.toBeNull(); - expect(tool?.description.trim()).not.toBe(""); - expect(tool?.parameters).toEqual(expect.any(Object)); - expect(typeof tool?.execute).toBe("function"); + expect(typeof provider.createTool).toBe("function"); }); } diff --git a/test/helpers/plugins/web-fetch-provider-contract.ts b/test/helpers/plugins/web-fetch-provider-contract.ts index 34298a65441..d4c6a5c59ad 100644 --- a/test/helpers/plugins/web-fetch-provider-contract.ts +++ b/test/helpers/plugins/web-fetch-provider-contract.ts @@ -3,14 +3,39 @@ import { pluginRegistrationContractRegistry, resolveWebFetchProviderContractEntriesForPluginId, } from "../../../src/plugins/contracts/registry.js"; +import type { WebFetchProviderPlugin } from "../../../src/plugins/types.js"; +import { resolveBundledExplicitWebFetchProvidersFromPublicArtifacts } from "../../../src/plugins/web-provider-public-artifacts.explicit.js"; import { installWebFetchProviderContractSuite } from "./provider-contract-suites.js"; +function resolveWebFetchCredentialValue(provider: WebFetchProviderPlugin): unknown { + if (provider.requiresCredential === false) { + return `${provider.id}-no-key-needed`; + } + const envVar = provider.envVars.find((entry) => entry.trim().length > 0); + if (!envVar) { + return `${provider.id}-test`; + } + return envVar.toLowerCase().includes("api_key") ? `${provider.id}-test` : "sk-test"; +} + export function describeWebFetchProviderContracts(pluginId: string) { const providerIds = pluginRegistrationContractRegistry.find((entry) => entry.pluginId === pluginId) ?.webFetchProviderIds ?? []; - const resolveProviders = () => resolveWebFetchProviderContractEntriesForPluginId(pluginId); + const resolveProviders = () => { + const publicArtifactProviders = resolveBundledExplicitWebFetchProvidersFromPublicArtifacts({ + onlyPluginIds: [pluginId], + }); + if (publicArtifactProviders) { + return publicArtifactProviders.map((provider) => ({ + pluginId: provider.pluginId, + provider, + credentialValue: resolveWebFetchCredentialValue(provider), + })); + } + return resolveWebFetchProviderContractEntriesForPluginId(pluginId); + }; describe(`${pluginId} web fetch provider contract registry load`, () => { it("loads bundled web fetch providers", () => {