package executor import ( "bytes" "sync/atomic" "testing" sdktranslator "github.com/router-for-me/CLIProxyAPI/v7/sdk/translator" ) func TestTranslateCodexRequestPairReusesEqualPayload(t *testing.T) { from := sdktranslator.Format("codex-test-from-equal") to := sdktranslator.Format("codex-test-to-equal") var calls int32 sdktranslator.Register(from, to, func(model string, rawJSON []byte, stream bool) []byte { atomic.AddInt32(&calls, 1) if model != "test-model" { t.Errorf("model = %q, want test-model", model) } if !stream { t.Error("stream = false, want true") } return append([]byte(nil), rawJSON...) }, sdktranslator.ResponseTransform{}) payload := []byte(`{"model":"test-model","input":[{"role":"user"}]}`) originalTranslated, body := translateCodexRequestPair(from, to, "test-model", payload, bytes.Clone(payload), true) if gotCalls := atomic.LoadInt32(&calls); gotCalls != 1 { t.Fatalf("TranslateRequest calls = %d, want 1", gotCalls) } if !bytes.Equal(originalTranslated, body) { t.Fatalf("translated payloads differ: original=%s body=%s", originalTranslated, body) } } func TestTranslateCodexRequestPairTranslatesDifferentPayloads(t *testing.T) { from := sdktranslator.Format("codex-test-from-different") to := sdktranslator.Format("codex-test-to-different") var calls int32 sdktranslator.Register(from, to, func(_ string, rawJSON []byte, _ bool) []byte { atomic.AddInt32(&calls, 1) return append([]byte(nil), rawJSON...) }, sdktranslator.ResponseTransform{}) originalPayload := []byte(`{"model":"test-model","input":[{"role":"system"}]}`) payload := []byte(`{"model":"test-model","input":[{"role":"user"}]}`) originalTranslated, body := translateCodexRequestPair(from, to, "test-model", originalPayload, payload, false) if gotCalls := atomic.LoadInt32(&calls); gotCalls != 2 { t.Fatalf("TranslateRequest calls = %d, want 2", gotCalls) } if !bytes.Equal(originalTranslated, originalPayload) { t.Fatalf("original translated = %s, want %s", originalTranslated, originalPayload) } if !bytes.Equal(body, payload) { t.Fatalf("body = %s, want %s", body, payload) } }