@@ -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