




















@@ -22,12 +22,20 @@ type IsPluginProvidersLoadInFlight =
2222typeof import("./providers.runtime.js").isPluginProvidersLoadInFlight;
2323type ResolveCatalogHookProviderPluginIds =
2424typeof import("./providers.js").resolveCatalogHookProviderPluginIds;
25+type ResolveExternalAuthProfileCompatFallbackPluginIds =
26+typeof import("./providers.js").resolveExternalAuthProfileCompatFallbackPluginIds;
27+type ResolveExternalAuthProfileProviderPluginIds =
28+typeof import("./providers.js").resolveExternalAuthProfileProviderPluginIds;
25292630const resolvePluginProvidersMock = vi.fn<ResolvePluginProviders>((_) => [] as ProviderPlugin[]);
2731const isPluginProvidersLoadInFlightMock = vi.fn<IsPluginProvidersLoadInFlight>((_) => false);
2832const resolveCatalogHookProviderPluginIdsMock = vi.fn<ResolveCatalogHookProviderPluginIds>(
2933(_) => [] as string[],
3034);
35+const resolveExternalAuthProfileCompatFallbackPluginIdsMock =
36+vi.fn<ResolveExternalAuthProfileCompatFallbackPluginIds>((_) => [] as string[]);
37+const resolveExternalAuthProfileProviderPluginIdsMock =
38+vi.fn<ResolveExternalAuthProfileProviderPluginIds>((_) => [] as string[]);
31393240let augmentModelCatalogWithProviderPlugins: typeof import("./provider-runtime.js").augmentModelCatalogWithProviderPlugins;
3341let buildProviderAuthDoctorHintWithPlugin: typeof import("./provider-runtime.js").buildProviderAuthDoctorHintWithPlugin;
@@ -238,6 +246,10 @@ describe("provider-runtime", () => {
238246vi.doMock("./providers.js", () => ({
239247resolveCatalogHookProviderPluginIds: (params: unknown) =>
240248resolveCatalogHookProviderPluginIdsMock(params as never),
249+resolveExternalAuthProfileCompatFallbackPluginIds: (params: unknown) =>
250+resolveExternalAuthProfileCompatFallbackPluginIdsMock(params as never),
251+resolveExternalAuthProfileProviderPluginIds: (params: unknown) =>
252+resolveExternalAuthProfileProviderPluginIdsMock(params as never),
241253}));
242254vi.doMock("./providers.runtime.js", () => ({
243255resolvePluginProviders: (params: unknown) => resolvePluginProvidersMock(params as never),
@@ -301,6 +313,10 @@ describe("provider-runtime", () => {
301313isPluginProvidersLoadInFlightMock.mockReturnValue(false);
302314resolveCatalogHookProviderPluginIdsMock.mockReset();
303315resolveCatalogHookProviderPluginIdsMock.mockReturnValue([]);
316+resolveExternalAuthProfileCompatFallbackPluginIdsMock.mockReset();
317+resolveExternalAuthProfileCompatFallbackPluginIdsMock.mockReturnValue([]);
318+resolveExternalAuthProfileProviderPluginIdsMock.mockReset();
319+resolveExternalAuthProfileProviderPluginIdsMock.mockReturnValue([]);
304320});
305321306322it("matches providers by alias for runtime hook lookup", () => {
@@ -355,6 +371,19 @@ describe("provider-runtime", () => {
355371);
356372});
357373374+it("skips provider runtime loading when no plugin declares external auth hooks", () => {
375+expect(
376+resolveExternalAuthProfilesWithPlugins({
377+env: process.env,
378+context: {
379+env: process.env,
380+store: { version: 1, profiles: {} },
381+},
382+}),
383+).toEqual([]);
384+expect(resolvePluginProvidersMock).not.toHaveBeenCalled();
385+});
386+358387it("returns provider-prepared runtime auth for the matched provider", async () => {
359388const prepareRuntimeAuth = vi.fn(async () => ({
360389apiKey: "runtime-token",
@@ -679,6 +708,7 @@ describe("provider-runtime", () => {
679708680709it("dispatches runtime hooks for the matched provider", async () => {
681710resolveCatalogHookProviderPluginIdsMock.mockReturnValue(["openai"]);
711+resolveExternalAuthProfileProviderPluginIdsMock.mockReturnValue(["demo"]);
682712const prepareDynamicModel = vi.fn(async () => undefined);
683713const createStreamFn = vi.fn(() => vi.fn());
684714const createEmbeddingProvider = vi.fn(async () => ({
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。