Ctrl K
ComunidadGuías…

internal/config/vertex_openapi_test.go

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

Archivo original ↗Preguntar a KiBot
package config_test

import (
	"strings"
	"testing"

	"github.com/router-for-me/CLIProxyAPI/v8/internal/config"
	"gopkg.in/yaml.v3"
)

func TestVertexOpenAPIConfigDecoding(t *testing.T) {
	for _, layout := range []struct{ name, prefix, indent string }{
		{name: "v8", prefix: "api-keys:\n  vertex:\n    - keys:\n", indent: "        "},
		{name: "legacy", prefix: "vertex-api-key:\n", indent: "  "},
	} {
		t.Run(layout.name, func(t *testing.T) {
			keyConfig := `- api-key: test-key
  openapi: true
  openapi-location: " global "
  models:
    - name: partner/model
      alias: native-model
      openapi: false
    - name: gemini-2.5-pro
      alias: openapi-model
      openapi: true
    - name: automatic-model`
			raw := layout.prefix + layout.indent + strings.ReplaceAll(keyConfig, "\n", "\n"+layout.indent) + `
oauth:
  model-alias:
    vertex:
      - name: gemini-2.5-pro
        alias: public-model
        openapi: true
  settings:
    vertex:
      - name: partner/model
        openapi: false
`
			var cfg config.Config
			if errUnmarshal := yaml.Unmarshal([]byte(raw), &cfg); errUnmarshal != nil {
				t.Fatal(errUnmarshal)
			}
			cfg.SanitizeVertexCompatKeys()
			cfg.SanitizeOAuthModelAlias()
			cfg.SanitizeOAuthSettings()
			if len(cfg.VertexCompatAPIKey) != 1 {
				t.Fatalf("Vertex key count = %d", len(cfg.VertexCompatAPIKey))
			}
			entry := cfg.VertexCompatAPIKey[0]
			if entry.OpenAPI == nil || !*entry.OpenAPI || entry.OpenAPILocation != "global" {
				t.Fatalf("credential settings = %+v", entry)
			}
			if len(entry.Models) != 3 || entry.Models[0].OpenAPI == nil || *entry.Models[0].OpenAPI || entry.Models[1].OpenAPI == nil || !*entry.Models[1].OpenAPI || entry.Models[2].OpenAPI != nil {
				t.Fatalf("model settings = %+v", entry.Models)
			}
			if setting := cfg.OAuthModelAlias["vertex"][0].OpenAPI; setting == nil || !*setting {
				t.Fatalf("OAuth alias setting = %v", setting)
			}
			if setting := cfg.OAuthSettings["vertex"][0].OpenAPI; setting == nil || *setting {
				t.Fatalf("OAuth model setting = %v", setting)
			}
		})
	}
}

func TestSanitizeOAuthOpenAPISettingsClonesOptionalBools(t *testing.T) {
	for _, enabled := range []bool{true, false} {
		original := enabled
		cfg := &config.Config{
			OAuthModelAlias: map[string][]config.OAuthModelAlias{" VERTEX ": {{Name: "model", Alias: "alias", OpenAPI: &original}}},
			OAuthSettings:   map[string][]config.OAuthModelSetting{" VERTEX ": {{Name: "model", OpenAPI: &original}}},
		}
		cfg.SanitizeOAuthModelAlias()
		cfg.SanitizeOAuthSettings()
		original = !enabled
		for _, setting := range []*bool{cfg.OAuthModelAlias["vertex"][0].OpenAPI, cfg.OAuthSettings["vertex"][0].OpenAPI} {
			if setting == nil || *setting != enabled || setting == &original {
				t.Fatalf("normalized setting shares or loses the original value: %v", setting)
			}
		}
	}
}