| package headerbuilder |
|
|
| import ( |
| "testing" |
|
|
| "aurora/internal/accounts" |
| ) |
|
|
| func TestNew(t *testing.T) { |
| b := New() |
| if b == nil { |
| t.Fatal("expected non-nil builder") |
| } |
| } |
|
|
| func TestBuild(t *testing.T) { |
| h := New().Build() |
| if h == nil { |
| t.Fatal("expected non-nil header") |
| } |
| } |
|
|
| func TestWithContentType(t *testing.T) { |
| h := New().WithContentType("application/json").Build() |
| if h["Content-Type"] != "application/json" { |
| t.Fatalf("expected application/json, got %s", h["Content-Type"]) |
| } |
| } |
|
|
| func TestWithAccept(t *testing.T) { |
| h := New().WithAccept("text/event-stream").Build() |
| if h["Accept"] != "text/event-stream" { |
| t.Fatalf("expected text/event-stream, got %s", h["Accept"]) |
| } |
| } |
|
|
| func TestWithTargetPath(t *testing.T) { |
| h := New().WithTargetPath("/backend-api/test").Build() |
| if h["X-Openai-Target-Path"] != "/backend-api/test" { |
| t.Fatalf("expected /backend-api/test, got %s", h["X-Openai-Target-Path"]) |
| } |
| if h["X-Openai-Target-Route"] != "/backend-api/test" { |
| t.Fatalf("expected /backend-api/test, got %s", h["X-Openai-Target-Route"]) |
| } |
| } |
|
|
| func TestWithAuth_PaidUser(t *testing.T) { |
| acct := &accounts.Account{Type: accounts.TypeFree, Token: "test-token"} |
| h := New().WithAuth(acct).Build() |
| if h["Authorization"] != "Bearer test-token" { |
| t.Fatalf("expected Bearer test-token, got %s", h["Authorization"]) |
| } |
| } |
|
|
| func TestWithAuth_FreeUser(t *testing.T) { |
| acct := &accounts.Account{Type: accounts.TypeNoAuth, Token: "free-uuid"} |
| h := New().WithAuth(acct).Build() |
| if h["Oai-Device-Id"] != "free-uuid" { |
| t.Fatalf("expected free-uuid, got %s", h["Oai-Device-Id"]) |
| } |
| } |
|
|
| func TestWithAuth_NilAccount(t *testing.T) { |
| h := New().WithAuth(nil).Build() |
| if h["Authorization"] != "" { |
| t.Fatalf("expected empty, got %s", h["Authorization"]) |
| } |
| } |
|
|
| func TestWithTeamAccount(t *testing.T) { |
| acct := &accounts.Account{Type: accounts.TypeFree, Token: "token", TeamUserID: "team-123"} |
| h := New().WithTeamAccount(acct).Build() |
| if h["Chatgpt-Account-Id"] != "team-123" { |
| t.Fatalf("expected team-123, got %s", h["Chatgpt-Account-Id"]) |
| } |
| } |
|
|
| func TestWithTeamAccount_Empty(t *testing.T) { |
| acct := &accounts.Account{Type: accounts.TypeFree, Token: "token"} |
| h := New().WithTeamAccount(acct).Build() |
| if h["Chatgpt-Account-Id"] != "" { |
| t.Fatalf("expected empty, got %s", h["Chatgpt-Account-Id"]) |
| } |
| } |
|
|
| func TestWithConduitToken(t *testing.T) { |
| h := New().WithConduitToken("conduit-123").Build() |
| if h["X-Conduit-Token"] != "conduit-123" { |
| t.Fatalf("expected conduit-123, got %s", h["X-Conduit-Token"]) |
| } |
| } |
|
|
| func TestWithConduitToken_Empty(t *testing.T) { |
| h := New().WithConduitToken("").Build() |
| if h["X-Conduit-Token"] != "" { |
| t.Fatalf("expected empty, got %s", h["X-Conduit-Token"]) |
| } |
| } |
|
|
| func TestWithTurnTraceID(t *testing.T) { |
| h := New().WithTurnTraceID("trace-123").Build() |
| if h["X-Oai-Turn-Trace-Id"] != "trace-123" { |
| t.Fatalf("expected trace-123, got %s", h["X-Oai-Turn-Trace-Id"]) |
| } |
| } |
|
|
| func TestWithSentinelTokens(t *testing.T) { |
| sentinelTokens := SentinelTokens{ |
| TurnStileToken: "turnstile-123", |
| ProofOfWorkToken: "proof-123", |
| TurnstileToken: "turnstile-token-123", |
| } |
| h := New().WithSentinelTokens(sentinelTokens).Build() |
| if h["Openai-Sentinel-Chat-Requirements-Token"] != "turnstile-123" { |
| t.Fatalf("expected turnstile-123, got %s", h["Openai-Sentinel-Chat-Requirements-Token"]) |
| } |
| if h["Openai-Sentinel-Proof-Token"] != "proof-123" { |
| t.Fatalf("expected proof-123, got %s", h["Openai-Sentinel-Proof-Token"]) |
| } |
| if h["Openai-Sentinel-Turnstile-Token"] != "turnstile-token-123" { |
| t.Fatalf("expected turnstile-token-123, got %s", h["Openai-Sentinel-Turnstile-Token"]) |
| } |
| } |
|
|
| func TestWithConversationHeaders_MainRequest(t *testing.T) { |
| h := New().WithConversationHeaders("/f/conversation").Build() |
| if h["Oai-Echo-Logs"] == "" { |
| t.Fatal("expected Oai-Echo-Logs for main conversation request") |
| } |
| } |
|
|
| func TestWithConversationHeaders_PrepareRequest(t *testing.T) { |
| h := New().WithConversationHeaders("/f/conversation/prepare").Build() |
| if h["Oai-Echo-Logs"] != "" { |
| t.Fatal("expected no Oai-Echo-Logs for prepare request") |
| } |
| } |
|
|
| func TestNewBaseHeader(t *testing.T) { |
| h := NewBaseHeader() |
| if h["Origin"] != "https://chatgpt.com" { |
| t.Fatalf("expected https://chatgpt.com, got %s", h["Origin"]) |
| } |
| if h["User-Agent"] == "" { |
| t.Fatal("expected non-empty User-Agent") |
| } |
| } |
|
|
| func TestBuilderChaining(t *testing.T) { |
| acct := &accounts.Account{Type: accounts.TypeFree, Token: "test-token", TeamUserID: "team-456"} |
| h := New(). |
| WithBaseHeaders("conv-123"). |
| WithContentType("application/json"). |
| WithAccept("*/*"). |
| WithTargetPath("/backend-api/test"). |
| WithAuth(acct). |
| WithTeamAccount(acct). |
| WithConduitToken("conduit-123"). |
| WithTurnTraceID("trace-123"). |
| Build() |
|
|
| if h["Content-Type"] != "application/json" { |
| t.Fatalf("expected application/json, got %s", h["Content-Type"]) |
| } |
| if h["Authorization"] != "Bearer test-token" { |
| t.Fatalf("expected Bearer test-token, got %s", h["Authorization"]) |
| } |
| if h["X-Conduit-Token"] != "conduit-123" { |
| t.Fatalf("expected conduit-123, got %s", h["X-Conduit-Token"]) |
| } |
| if h["Chatgpt-Account-Id"] != "team-456" { |
| t.Fatalf("expected team-456, got %s", h["Chatgpt-Account-Id"]) |
| } |
| } |
|
|