Archived
CrossRelay stage 2: Codex /v1/responses relay, config.toml manager, Codex page
This commit is contained in:
1 parent
404704171d
commit
5112f7ca06
30 files changed
+3539
-72
No files matched your search
@@ -128,6 +128,102 @@ func TestDeleteProviderClearsActive(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestActivateCodexRoundTrip(t *testing.T) {
|
||||
t.Setenv("CROSSRELAY_HOME", t.TempDir())
|
||||
store, err := Load()
|
||||
if err != nil {
|
||||
t.Fatalf("Load: %v", err)
|
||||
}
|
||||
p, err := store.AddProvider("DeepSeek", "deepseek", "https://api.deepseek.com/v1", "sk-test",
|
||||
Models{Default: "deepseek-chat"})
|
||||
if err != nil {
|
||||
t.Fatalf("AddProvider: %v", err)
|
||||
}
|
||||
if _, err := store.ActivateCodex(p.ID); err != nil {
|
||||
t.Fatalf("ActivateCodex: %v", err)
|
||||
}
|
||||
if err := store.SetCodexPriorProvider("custom"); err != nil {
|
||||
t.Fatalf("SetCodexPriorProvider: %v", err)
|
||||
}
|
||||
|
||||
reloaded, err := Load()
|
||||
if err != nil {
|
||||
t.Fatalf("reload: %v", err)
|
||||
}
|
||||
active := reloaded.ActiveCodex()
|
||||
if active == nil || active.Name != "DeepSeek" {
|
||||
t.Fatalf("active codex provider after reload = %+v", active)
|
||||
}
|
||||
if !active.EnabledForCodex {
|
||||
t.Error("enabled_for_codex not persisted")
|
||||
}
|
||||
if reloaded.Config().CodexPriorProvider != "custom" {
|
||||
t.Errorf("prior provider = %q, want custom", reloaded.Config().CodexPriorProvider)
|
||||
}
|
||||
|
||||
if err := reloaded.ClearActiveCodex(); err != nil {
|
||||
t.Fatalf("ClearActiveCodex: %v", err)
|
||||
}
|
||||
if reloaded.ActiveCodex() != nil {
|
||||
t.Error("active codex provider survived clear")
|
||||
}
|
||||
if _, err := reloaded.ActivateCodex("p_missing"); err == nil {
|
||||
t.Error("ActivateCodex accepted an unknown id")
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateProviderKeepsEnabledFlags(t *testing.T) {
|
||||
t.Setenv("CROSSRELAY_HOME", t.TempDir())
|
||||
store, err := Load()
|
||||
if err != nil {
|
||||
t.Fatalf("Load: %v", err)
|
||||
}
|
||||
p, err := store.AddProvider("DeepSeek", "deepseek", "https://api.deepseek.com/v1", "sk-test",
|
||||
Models{Default: "deepseek-chat"})
|
||||
if err != nil {
|
||||
t.Fatalf("AddProvider: %v", err)
|
||||
}
|
||||
if _, err := store.ActivateClaude(p.ID); err != nil {
|
||||
t.Fatalf("ActivateClaude: %v", err)
|
||||
}
|
||||
if _, err := store.ActivateCodex(p.ID); err != nil {
|
||||
t.Fatalf("ActivateCodex: %v", err)
|
||||
}
|
||||
updated, err := store.UpdateProvider(p.ID, "DeepSeek 2", "deepseek", "https://api.deepseek.com/v1", "",
|
||||
Models{Default: "deepseek-reasoner"})
|
||||
if err != nil {
|
||||
t.Fatalf("UpdateProvider: %v", err)
|
||||
}
|
||||
if !updated.EnabledForClaude || !updated.EnabledForCodex {
|
||||
t.Errorf("enabled flags lost: claude=%v codex=%v", updated.EnabledForClaude, updated.EnabledForCodex)
|
||||
}
|
||||
if updated.APIKey != "sk-test" {
|
||||
t.Errorf("api key = %q, want the stored key kept", updated.APIKey)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteProviderClearsCodexActive(t *testing.T) {
|
||||
t.Setenv("CROSSRELAY_HOME", t.TempDir())
|
||||
store, err := Load()
|
||||
if err != nil {
|
||||
t.Fatalf("Load: %v", err)
|
||||
}
|
||||
p, err := store.AddProvider("DeepSeek", "deepseek", "https://api.deepseek.com/v1", "sk-test",
|
||||
Models{Default: "deepseek-chat"})
|
||||
if err != nil {
|
||||
t.Fatalf("AddProvider: %v", err)
|
||||
}
|
||||
if _, err := store.ActivateCodex(p.ID); err != nil {
|
||||
t.Fatalf("ActivateCodex: %v", err)
|
||||
}
|
||||
if err := store.DeleteProvider(p.ID); err != nil {
|
||||
t.Fatalf("DeleteProvider: %v", err)
|
||||
}
|
||||
if store.ActiveCodex() != nil {
|
||||
t.Error("deleted provider stayed active for codex")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetGatewayValidation(t *testing.T) {
|
||||
t.Setenv("CROSSRELAY_HOME", t.TempDir())
|
||||
store, _ := Load()
|
||||
|
||||
Reference in new issue
Block a user