57 lines
1.4 KiB
Go
57 lines
1.4 KiB
Go
package config
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
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")
|
|
}
|
|
})
|
|
}
|
|
}
|