




























@@ -36,6 +36,7 @@ const resolveExternalAuthProfileCompatFallbackPluginIdsMock =
3636vi.fn<ResolveExternalAuthProfileCompatFallbackPluginIds>((_) => [] as string[]);
3737const resolveExternalAuthProfileProviderPluginIdsMock =
3838vi.fn<ResolveExternalAuthProfileProviderPluginIds>((_) => [] as string[]);
39+const providerRuntimeWarnMock = vi.fn();
39404041let augmentModelCatalogWithProviderPlugins: typeof import("./provider-runtime.js").augmentModelCatalogWithProviderPlugins;
4142let buildProviderAuthDoctorHintWithPlugin: typeof import("./provider-runtime.js").buildProviderAuthDoctorHintWithPlugin;
@@ -256,6 +257,14 @@ describe("provider-runtime", () => {
256257isPluginProvidersLoadInFlight: (params: unknown) =>
257258isPluginProvidersLoadInFlightMock(params as never),
258259}));
260+vi.doMock("../logging/subsystem.js", () => ({
261+createSubsystemLogger: () => ({
262+debug: vi.fn(),
263+info: vi.fn(),
264+warn: providerRuntimeWarnMock,
265+error: vi.fn(),
266+}),
267+}));
259268({
260269 augmentModelCatalogWithProviderPlugins,
261270 buildProviderAuthDoctorHintWithPlugin,
@@ -317,6 +326,7 @@ describe("provider-runtime", () => {
317326resolveExternalAuthProfileCompatFallbackPluginIdsMock.mockReturnValue([]);
318327resolveExternalAuthProfileProviderPluginIdsMock.mockReset();
319328resolveExternalAuthProfileProviderPluginIdsMock.mockReturnValue([]);
329+providerRuntimeWarnMock.mockReset();
320330});
321331322332it("matches providers by alias for runtime hook lookup", () => {
@@ -384,6 +394,45 @@ describe("provider-runtime", () => {
384394expect(resolvePluginProvidersMock).not.toHaveBeenCalled();
385395});
386396397+it("does not warn for declared external auth plugins with different provider ids", () => {
398+resolveExternalAuthProfileProviderPluginIdsMock.mockReturnValue(["demo-plugin"]);
399+resolvePluginProvidersMock.mockReturnValue([
400+{
401+id: "demo-provider",
402+pluginId: "demo-plugin",
403+label: "Demo Provider",
404+auth: [],
405+resolveExternalAuthProfiles: () => [
406+{
407+profileId: "demo-provider:external",
408+credential: {
409+type: "oauth",
410+provider: "demo-provider",
411+access: "access",
412+refresh: "refresh",
413+expires: Date.now() + 60_000,
414+},
415+},
416+],
417+},
418+]);
419+420+expect(
421+resolveExternalAuthProfilesWithPlugins({
422+env: process.env,
423+context: {
424+env: process.env,
425+store: { version: 1, profiles: {} },
426+},
427+}),
428+).toEqual([
429+expect.objectContaining({
430+profileId: "demo-provider:external",
431+}),
432+]);
433+expect(providerRuntimeWarnMock).not.toHaveBeenCalled();
434+});
435+387436it("returns provider-prepared runtime auth for the matched provider", async () => {
388437const prepareRuntimeAuth = vi.fn(async () => ({
389438apiKey: "runtime-token",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。