Skip to content

Commit 49f94db

Browse files
committed
test(auth): cover manifest provider plugin enabling
1 parent 9bf7b6b commit 49f94db

1 file changed

Lines changed: 75 additions & 0 deletions

File tree

src/commands/auth-choice.test.ts

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,6 +1046,81 @@ describe("applyAuthChoice", () => {
10461046
);
10471047
});
10481048

1049+
it("enables the owning plugin for manifest provider auth choices", async () => {
1050+
await setupTempState();
1051+
const provider = createFixedChoiceProvider({
1052+
providerId: "github-copilot",
1053+
label: "GitHub Copilot",
1054+
choiceId: "github-copilot-github",
1055+
method: {
1056+
id: "github",
1057+
label: "GitHub Copilot",
1058+
kind: "token",
1059+
run: vi.fn(
1060+
async (): Promise<ProviderAuthResult> => ({
1061+
profiles: [
1062+
{
1063+
profileId: "github-copilot:github",
1064+
credential: {
1065+
type: "token",
1066+
provider: "github-copilot",
1067+
token: "gho_copilot_test",
1068+
},
1069+
},
1070+
],
1071+
defaultModel: "github-copilot/claude-opus-4.7",
1072+
}),
1073+
),
1074+
},
1075+
});
1076+
const manifestSpy = vi
1077+
.spyOn(providerAuthChoices, "resolveManifestProviderAuthChoice")
1078+
.mockReturnValue({
1079+
pluginId: "github-copilot",
1080+
providerId: "github-copilot",
1081+
methodId: "github",
1082+
choiceId: "github-copilot-github",
1083+
choiceLabel: "GitHub Copilot",
1084+
});
1085+
providerAuthChoiceTesting.setDepsForTest({
1086+
loadPluginProviderRuntime: async () => ({
1087+
resolvePluginProviders,
1088+
resolvePluginSetupProvider: () => provider,
1089+
resolveProviderPluginChoice,
1090+
runProviderModelSelectedHook,
1091+
}),
1092+
});
1093+
try {
1094+
const result = await applyAuthChoice({
1095+
authChoice: "github-copilot-github",
1096+
config: { plugins: { entries: { "github-copilot": { enabled: false } } } },
1097+
prompter: createPrompter({}),
1098+
runtime: createExitThrowingRuntime(),
1099+
setDefaultModel: true,
1100+
preserveExistingDefaultModel: true,
1101+
});
1102+
1103+
expect(result.config.plugins?.entries?.["github-copilot"]).toEqual({ enabled: true });
1104+
expect(result.config.auth?.profiles?.["github-copilot:github"]).toMatchObject({
1105+
provider: "github-copilot",
1106+
mode: "token",
1107+
});
1108+
expect(resolveAgentModelPrimaryValue(result.config.agents?.defaults?.model)).toBe(
1109+
"github-copilot/claude-opus-4.7",
1110+
);
1111+
} finally {
1112+
manifestSpy.mockRestore();
1113+
providerAuthChoiceTesting.setDepsForTest({
1114+
loadPluginProviderRuntime: async () => ({
1115+
resolvePluginProviders,
1116+
resolvePluginSetupProvider: () => undefined,
1117+
resolveProviderPluginChoice,
1118+
runProviderModelSelectedHook,
1119+
}),
1120+
});
1121+
}
1122+
});
1123+
10491124
it("uses explicit env for plugin auth resolution instead of host env", async () => {
10501125
await setupTempState();
10511126
process.env.OPENAI_API_KEY = "sk-openai-host"; // pragma: allowlist secret

0 commit comments

Comments
 (0)