Ctrl K
ComunidadGuías…

internal/pluginhost/auth_model_provider_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package pluginhost

import (
	"context"
	"testing"

	coreauth "github.com/router-for-me/CLIProxyAPI/v8/sdk/cliproxy/auth"
	"github.com/router-for-me/CLIProxyAPI/v8/sdk/pluginapi"
)

func TestHasAuthModelProviderDoesNotRunDiscovery(t *testing.T) {
	for _, mode := range []string{"auth", "executor", "registered", "static-only", "fused", "unloaded", "no-model-provider"} {
		t.Run(mode, func(t *testing.T) {
			calls := 0
			caps := pluginapi.Capabilities{
				ModelProvider: modelProviderFunc{
					staticModels: func(context.Context, pluginapi.StaticModelRequest) (pluginapi.ModelResponse, error) {
						t.Error("ownership lookup called StaticModels")
						return pluginapi.ModelResponse{}, nil
					},
					modelsForAuth: func(context.Context, pluginapi.AuthModelRequest) (pluginapi.ModelResponse, error) {
						calls++
						return pluginapi.ModelResponse{Provider: "antigravity", Models: []pluginapi.ModelInfo{{ID: "plugin-model"}}, AuthUpdate: pluginapi.AuthData{Metadata: map[string]any{"access_token": "rotated"}}}, nil
					},
				},
			}
			switch mode {
			case "executor", "static-only":
				caps.Executor = &fakeExecutor{identifier: "antigravity"}
				caps.ExecutorModelScope = pluginapi.ExecutorModelScopeOAuth
				if mode == "static-only" {
					caps.ExecutorModelScope = pluginapi.ExecutorModelScopeStatic
				}
			case "registered":
			default:
				caps.AuthProvider = fakeAuthProvider{identifier: "antigravity"}
			}
			if mode == "no-model-provider" {
				caps.ModelProvider = nil
			}
			host := newHostWithRecords(capabilityRecord{id: "ownership", plugin: pluginapi.Plugin{Capabilities: caps}})
			if mode == "registered" {
				host.modelProviders["ownership"] = "antigravity"
			}
			if mode == "fused" {
				host.fused["ownership"] = "test"
			}
			if mode == "unloaded" {
				setHostSnapshotForTest(host, true)
			}
			want := mode == "auth" || mode == "executor" || mode == "registered"
			for range 100 {
				if got := host.HasAuthModelProvider(" ANTIGRAVITY "); got != want {
					t.Fatalf("ownership=%v, want %v", got, want)
				}
			}
			if calls != 0 || host.HasAuthModelProvider("claude") || host.HasAuthModelProvider("") {
				t.Fatal("ownership lookup executed discovery or matched an unrelated provider")
			}
			// The normal registration path must still consume discovery and auth updates.
			result := host.ModelsForAuth(t.Context(), &coreauth.Auth{ID: "account", Provider: "antigravity"})
			if result.Handled != want {
				t.Fatal("ownership lookup disagrees with per-auth dispatch")
			}
			if want && (calls != 1 || result.Auth == nil || result.Auth.Metadata["access_token"] != "rotated" || len(result.Models) != 1) {
				t.Fatal("normal discovery lost model or credential updates")
			}
		})
	}
	var host *Host
	if host.HasAuthModelProvider("antigravity") {
		t.Fatal("nil host claims model ownership")
	}
}