package service import ( "context" "testing" "github.com/Wei-Shaw/sub2api/internal/config" "github.com/stretchr/testify/require" ) func TestAccountKiroDefaultMappingRestrictsUnsupportedModels(t *testing.T) { account := &Account{Platform: PlatformKiro} require.False(t, account.IsModelSupported("gpt-4o")) require.False(t, account.IsModelSupported("kiro-gpt-4o")) require.False(t, account.IsModelSupported("auto")) require.Equal(t, "claude-sonnet-4.6", account.GetMappedModel("claude-sonnet-4-6")) } func TestGatewayServiceCalculateTokenCost_KiroAutoUsesConservativeFallback(t *testing.T) { cfg := &config.Config{} cfg.Default.RateMultiplier = 1.1 svc := NewGatewayService( nil, nil, nil, nil, nil, nil, nil, nil, cfg, nil, nil, NewBillingService(cfg, nil), nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ) result := &ForwardResult{ Model: "auto", UpstreamModel: "auto", Usage: ClaudeUsage{ InputTokens: 20, OutputTokens: 10, }, } expected, err := svc.billingService.CalculateCost(kiroConservativeFallbackBillingModel, UsageTokens{ InputTokens: 20, OutputTokens: 10, }, 1.1) require.NoError(t, err) cost := svc.calculateTokenCost(context.Background(), result, &APIKey{}, "auto", 1.1, &recordUsageOpts{IsKiroAccount: true}) require.NotNil(t, cost) require.InDelta(t, expected.ActualCost, cost.ActualCost, 1e-12) require.InDelta(t, expected.TotalCost, cost.TotalCost, 1e-12) }