Files
sub2api/backend/internal/service/kiro_mapping_fallback_test.go
2026-04-30 14:02:05 +08:00

75 lines
1.5 KiB
Go

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)
}