| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- package service
- import (
- "testing"
- "github.com/stretchr/testify/require"
- )
- func TestResolveBillingServiceTier(t *testing.T) {
- tests := []struct {
- name string
- requested string
- observed string
- billing string
- downgraded bool
- }{
- {name: "openai priority served as default", requested: "priority", observed: "default", billing: "default", downgraded: true},
- {name: "anthropic fast served as standard", requested: "fast", observed: "standard", billing: "standard", downgraded: true},
- {name: "priority honoured", requested: "priority", observed: "priority", billing: "priority"},
- {name: "no declaration keeps request", requested: "priority", observed: "", billing: "priority"},
- {name: "no request no declaration", requested: "", observed: "", billing: ""},
- {name: "response never raises the tier", requested: "", observed: "priority", billing: ""},
- {name: "flex never raised to default", requested: "flex", observed: "default", billing: "flex"},
- {name: "default echoed for untiered request", requested: "", observed: "default", billing: ""},
- {name: "unknown response tier ignored", requested: "priority", observed: "turbo", billing: "priority"},
- {name: "case and whitespace normalised", requested: " Priority ", observed: "DEFAULT", billing: "default", downgraded: true},
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- got := ResolveBillingServiceTier(tt.requested, tt.observed)
- require.Equal(t, tt.billing, got.Billing)
- require.Equal(t, tt.downgraded, got.Downgraded)
- })
- }
- }
- func TestApplyServiceTierBillingResolutionOnlyRewritesDowngrades(t *testing.T) {
- t.Run("codex exception only covers OpenAI default", func(t *testing.T) {
- require.True(t, codexOAuthResponseTierIsNonAuthoritative("default"))
- require.False(t, codexOAuthResponseTierIsNonAuthoritative("standard"))
- require.False(t, codexOAuthResponseTierIsNonAuthoritative("flex"))
- })
- t.Run("openai downgrade rewrites tier", func(t *testing.T) {
- requested := "priority"
- result := &OpenAIForwardResult{ServiceTier: &requested, UpstreamResponseServiceTier: "default"}
- resolution := ApplyOpenAIServiceTierBillingResolution(&Account{Platform: PlatformOpenAI, Type: AccountTypeAPIKey}, result)
- require.True(t, resolution.Downgraded)
- require.NotNil(t, result.ServiceTier)
- require.Equal(t, "default", *result.ServiceTier)
- })
- t.Run("openai honoured tier keeps pointer", func(t *testing.T) {
- requested := "priority"
- result := &OpenAIForwardResult{ServiceTier: &requested, UpstreamResponseServiceTier: "priority"}
- require.False(t, ApplyOpenAIServiceTierBillingResolution(&Account{Platform: PlatformOpenAI, Type: AccountTypeAPIKey}, result).Downgraded)
- require.Same(t, &requested, result.ServiceTier)
- })
- t.Run("openai untiered request stays nil", func(t *testing.T) {
- result := &OpenAIForwardResult{UpstreamResponseServiceTier: "priority"}
- require.False(t, ApplyOpenAIServiceTierBillingResolution(&Account{Platform: PlatformOpenAI, Type: AccountTypeAPIKey}, result).Downgraded)
- require.Nil(t, result.ServiceTier)
- })
- for _, accountType := range []string{AccountTypeOAuth, AccountTypeSetupToken} {
- t.Run("codex "+accountType+" keeps outbound priority despite default echo", func(t *testing.T) {
- requested := "priority"
- result := &OpenAIForwardResult{ServiceTier: &requested, UpstreamResponseServiceTier: "default"}
- resolution := ApplyOpenAIServiceTierBillingResolution(
- &Account{Platform: PlatformOpenAI, Type: accountType},
- result,
- )
- require.False(t, resolution.Downgraded)
- require.Equal(t, "priority", resolution.Requested)
- require.Equal(t, "default", resolution.Observed)
- require.Equal(t, "priority", resolution.Billing)
- require.Same(t, &requested, result.ServiceTier)
- })
- t.Run("codex "+accountType+" still accepts an explicit flex downgrade", func(t *testing.T) {
- requested := "priority"
- result := &OpenAIForwardResult{ServiceTier: &requested, UpstreamResponseServiceTier: "flex"}
- resolution := ApplyOpenAIServiceTierBillingResolution(
- &Account{Platform: PlatformOpenAI, Type: accountType},
- result,
- )
- require.True(t, resolution.Downgraded)
- require.Equal(t, "flex", resolution.Billing)
- require.Equal(t, "flex", *result.ServiceTier)
- })
- t.Run("codex "+accountType+" response never promotes an untiered request", func(t *testing.T) {
- result := &OpenAIForwardResult{UpstreamResponseServiceTier: "priority"}
- resolution := ApplyOpenAIServiceTierBillingResolution(
- &Account{Platform: PlatformOpenAI, Type: accountType},
- result,
- )
- require.False(t, resolution.Downgraded)
- require.Empty(t, resolution.Billing)
- require.Nil(t, result.ServiceTier)
- })
- }
- t.Run("non-openai oauth still uses the generic response contract", func(t *testing.T) {
- requested := "priority"
- result := &OpenAIForwardResult{ServiceTier: &requested, UpstreamResponseServiceTier: "default"}
- resolution := ApplyOpenAIServiceTierBillingResolution(
- &Account{Platform: PlatformGrok, Type: AccountTypeOAuth},
- result,
- )
- require.True(t, resolution.Downgraded)
- require.Equal(t, "default", resolution.Billing)
- require.Equal(t, "default", *result.ServiceTier)
- })
- t.Run("anthropic standard speed rewrites fast", func(t *testing.T) {
- requested := "fast"
- result := &ForwardResult{ServiceTier: &requested, UpstreamResponseServiceTier: "standard"}
- require.True(t, ApplyForwardServiceTierBillingResolution(result).Downgraded)
- require.Equal(t, "standard", *result.ServiceTier)
- })
- t.Run("nil results are ignored", func(t *testing.T) {
- require.False(t, ApplyOpenAIServiceTierBillingResolution(nil, nil).Downgraded)
- require.False(t, ApplyForwardServiceTierBillingResolution(nil).Downgraded)
- })
- }
|