Ctrl K
ComunidadGuías…

internal/config/codex_websocket_header_defaults_test.go

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

Archivo original ↗Preguntar a KiBot
package config

import (
	"os"
	"path/filepath"
	"testing"
)

func TestLoadConfigOptional_CodexHeaderDefaults(t *testing.T) {
	dir := t.TempDir()
	configPath := filepath.Join(dir, "config.yaml")
	configYAML := []byte(`
codex-header-defaults:
  user-agent: "  my-codex-client/1.0  "
  beta-features: "  feature-a,feature-b  "
`)
	if err := os.WriteFile(configPath, configYAML, 0o600); err != nil {
		t.Fatalf("failed to write config: %v", err)
	}

	cfg, err := LoadConfigOptional(configPath, false)
	if err != nil {
		t.Fatalf("LoadConfigOptional() error = %v", err)
	}

	if got := cfg.CodexHeaderDefaults.UserAgent; got != "my-codex-client/1.0" {
		t.Fatalf("UserAgent = %q, want %q", got, "my-codex-client/1.0")
	}
	if got := cfg.CodexHeaderDefaults.BetaFeatures; got != "feature-a,feature-b" {
		t.Fatalf("BetaFeatures = %q, want %q", got, "feature-a,feature-b")
	}
	if cfg.Codex.DisableCodexCloaking {
		t.Fatal("DisableCodexCloaking = true, want default false")
	}
}

func TestLoadConfigOptional_CodexOptions(t *testing.T) {
	dir := t.TempDir()
	configPath := filepath.Join(dir, "config.yaml")
	configYAML := []byte(`
codex:
  disable-codex-cloaking: true
  optimize-multi-agent-v2: true
`)
	if err := os.WriteFile(configPath, configYAML, 0o600); err != nil {
		t.Fatalf("failed to write config: %v", err)
	}

	cfg, err := LoadConfigOptional(configPath, false)
	if err != nil {
		t.Fatalf("LoadConfigOptional() error = %v", err)
	}

	if !cfg.Codex.DisableCodexCloaking {
		t.Fatal("DisableCodexCloaking = false, want true")
	}
	if !cfg.Client.Codex.OptimizeMultiAgentV2 {
		t.Fatalf("OptimizeMultiAgentV2 = false, want true")
	}
}

func TestLoadConfigOptional_CodexModelLevelCooling(t *testing.T) {
	dir := t.TempDir()
	configPath := filepath.Join(dir, "config.yaml")
	configYAML := []byte(`
codex:
  model-level-cooling: true
`)
	if err := os.WriteFile(configPath, configYAML, 0o600); err != nil {
		t.Fatalf("failed to write config: %v", err)
	}

	cfg, err := LoadConfigOptional(configPath, false)
	if err != nil {
		t.Fatalf("LoadConfigOptional() error = %v", err)
	}

	if !cfg.Codex.ModelLevelCooling {
		t.Fatalf("ModelLevelCooling = false, want true")
	}

	defaultCfg, errDefault := ParseConfigBytes([]byte(`{}`))
	if errDefault != nil {
		t.Fatalf("ParseConfigBytes() error = %v", errDefault)
	}
	if defaultCfg.Codex.ModelLevelCooling {
		t.Fatalf("default ModelLevelCooling = true, want false")
	}
}

func TestParseConfigBytes_CodexSignInWithChatGPTIdentifier(t *testing.T) {
	defaultCfg, errDefault := ParseConfigBytes([]byte("port: 8317\n"))
	if errDefault != nil {
		t.Fatalf("ParseConfigBytes (default) error: %v", errDefault)
	}
	if got := defaultCfg.Codex.EffectiveSignInWithChatGPTIdentifier(); got != "CLIProxyAPI" {
		t.Fatalf("EffectiveSignInWithChatGPTIdentifier (default) = %q, want CLIProxyAPI", got)
	}

	rawV8 := []byte(`oauth:
  providers:
    codex:
      signin-with-chatgpt-identifier: "  CustomSIWCClient/2.0  "
`)
	if errValidate := ValidateV8Config(rawV8); errValidate != nil {
		t.Fatalf("ValidateV8Config error: %v", errValidate)
	}
	cfg, errParse := ParseConfigBytes(rawV8)
	if errParse != nil {
		t.Fatalf("ParseConfigBytes (v8) error: %v", errParse)
	}
	if cfg.Codex.SignInWithChatGPTIdentifier != "CustomSIWCClient/2.0" {
		t.Fatalf("SignInWithChatGPTIdentifier = %q, want CustomSIWCClient/2.0", cfg.Codex.SignInWithChatGPTIdentifier)
	}
	if got := cfg.Codex.EffectiveSignInWithChatGPTIdentifier(); got != "CustomSIWCClient/2.0" {
		t.Fatalf("EffectiveSignInWithChatGPTIdentifier = %q, want CustomSIWCClient/2.0", got)
	}
}