Ctrl K
ComunidadGuías…

internal/config/is_compat_test.go

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

Archivo original ↗Preguntar a KiBot
package config

import (
	"encoding/json"
	"testing"

	"gopkg.in/yaml.v3"
)

func TestCodexModelSupportConfigurationUpdate(t *testing.T) {
	const yamlConfig = `codex-api-key:
  - models:
      - name: custom-one
        support-configuration-update: true
      - name: custom-two
`
	const jsonConfig = `{"codex-api-key":[{"models":[{"name":"custom-one","support-configuration-update":true},{"name":"custom-two"}]}]}`

	for _, testCase := range []struct {
		name   string
		decode func(*Config) error
	}{
		{
			name: "YAML",
			decode: func(cfg *Config) error {
				return yaml.Unmarshal([]byte(yamlConfig), cfg)
			},
		},
		{
			name: "JSON",
			decode: func(cfg *Config) error {
				return json.Unmarshal([]byte(jsonConfig), cfg)
			},
		},
	} {
		t.Run(testCase.name, func(t *testing.T) {
			var cfg Config
			if errDecode := testCase.decode(&cfg); errDecode != nil {
				t.Fatalf("decode error: %v", errDecode)
			}
			if len(cfg.CodexKey) != 1 || len(cfg.CodexKey[0].Models) != 2 {
				t.Fatalf("unexpected codex-api-key models: %+v", cfg.CodexKey)
			}
			if !cfg.CodexKey[0].Models[0].SupportConfigurationUpdate || cfg.CodexKey[0].Models[1].SupportConfigurationUpdate {
				t.Fatalf("unexpected configuration update flags: %+v", cfg.CodexKey[0].Models)
			}
		})
	}
}

func TestCodexModelIsCompatConfigDecoding(t *testing.T) {
	const yamlConfig = `codex-api-key:
  - models:
      - name: deepseek-upstream
        alias: deepseek-alias
        is-compat: true
      - name: native-upstream
        alias: native-alias
`
	const jsonConfig = `{"codex-api-key":[{"models":[{"name":"deepseek-upstream","alias":"deepseek-alias","is-compat":true},{"name":"native-upstream","alias":"native-alias"}]}]}`

	for _, testCase := range []struct {
		name   string
		decode func(*Config) error
	}{
		{
			name: "YAML",
			decode: func(cfg *Config) error {
				return yaml.Unmarshal([]byte(yamlConfig), cfg)
			},
		},
		{
			name: "JSON",
			decode: func(cfg *Config) error {
				return json.Unmarshal([]byte(jsonConfig), cfg)
			},
		},
	} {
		t.Run(testCase.name, func(t *testing.T) {
			var cfg Config
			if errDecode := testCase.decode(&cfg); errDecode != nil {
				t.Fatalf("decode error: %v", errDecode)
			}
			if len(cfg.CodexKey) != 1 || len(cfg.CodexKey[0].Models) != 2 {
				t.Fatalf("unexpected codex-api-key models: %+v", cfg.CodexKey)
			}
			if !cfg.CodexKey[0].Models[0].IsCompat {
				t.Fatalf("Models[0].IsCompat = false, want true")
			}
			if cfg.CodexKey[0].Models[1].IsCompat {
				t.Fatalf("Models[1].IsCompat = true, want default false")
			}
			if !cfg.CodexKey[0].Models[0].GetIsCompat() {
				t.Fatalf("GetIsCompat() = false, want true")
			}
		})
	}
}