fix: sync OpenAI plan type from usage limit errors
This commit is contained in:
@@ -149,8 +149,10 @@ func TestCalculateOpenAI429ResetTime_ReversedWindowOrder(t *testing.T) {
|
||||
|
||||
type openAI429SnapshotRepo struct {
|
||||
mockAccountRepoForGemini
|
||||
rateLimitedID int64
|
||||
updatedExtra map[string]any
|
||||
rateLimitedID int64
|
||||
updatedExtra map[string]any
|
||||
bulkUpdatedIDs []int64
|
||||
bulkUpdatedPayload AccountBulkUpdate
|
||||
}
|
||||
|
||||
func (r *openAI429SnapshotRepo) SetRateLimited(_ context.Context, id int64, _ time.Time) error {
|
||||
@@ -163,6 +165,12 @@ func (r *openAI429SnapshotRepo) UpdateExtra(_ context.Context, _ int64, updates
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *openAI429SnapshotRepo) BulkUpdate(_ context.Context, ids []int64, updates AccountBulkUpdate) (int64, error) {
|
||||
r.bulkUpdatedIDs = append([]int64(nil), ids...)
|
||||
r.bulkUpdatedPayload = updates
|
||||
return int64(len(ids)), nil
|
||||
}
|
||||
|
||||
func TestHandle429_OpenAIPersistsCodexSnapshotImmediately(t *testing.T) {
|
||||
repo := &openAI429SnapshotRepo{}
|
||||
svc := NewRateLimitService(repo, nil, nil, nil, nil)
|
||||
@@ -192,6 +200,25 @@ func TestHandle429_OpenAIPersistsCodexSnapshotImmediately(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandle429_OpenAISyncsObservedPlanType(t *testing.T) {
|
||||
repo := &openAI429SnapshotRepo{}
|
||||
svc := NewRateLimitService(repo, nil, nil, nil, nil)
|
||||
account := &Account{
|
||||
ID: 124,
|
||||
Platform: PlatformOpenAI,
|
||||
Type: AccountTypeOAuth,
|
||||
Credentials: map[string]any{"plan_type": "plus"},
|
||||
}
|
||||
body := []byte(`{"error":{"type":"usage_limit_reached","message":"limit reached","plan_type":"free","resets_at":1777283883}}`)
|
||||
|
||||
svc.handle429(context.Background(), account, http.Header{}, body)
|
||||
|
||||
require.Equal(t, []int64{account.ID}, repo.bulkUpdatedIDs)
|
||||
require.Equal(t, "free", repo.bulkUpdatedPayload.Credentials["plan_type"])
|
||||
require.Equal(t, "free", account.Credentials["plan_type"])
|
||||
require.Equal(t, account.ID, repo.rateLimitedID)
|
||||
}
|
||||
|
||||
func TestNormalizedCodexLimits(t *testing.T) {
|
||||
// Test the Normalize() method directly
|
||||
pUsed := 100.0
|
||||
|
||||
Reference in New Issue
Block a user