| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- //go:build unit
- package service
- import (
- "testing"
- "time"
- "github.com/stretchr/testify/require"
- )
- func TestAccountIsSchedulable_QuotaExceeded(t *testing.T) {
- now := time.Now()
- tests := []struct {
- name string
- account *Account
- want bool
- }{
- {
- name: "apikey daily quota exceeded",
- account: &Account{
- Status: StatusActive,
- Schedulable: true,
- Type: AccountTypeAPIKey,
- Extra: map[string]any{
- "quota_daily_limit": 10.0,
- "quota_daily_used": 10.0,
- "quota_daily_start": now.Add(-1 * time.Hour).Format(time.RFC3339),
- },
- },
- want: false,
- },
- {
- name: "apikey weekly quota exceeded",
- account: &Account{
- Status: StatusActive,
- Schedulable: true,
- Type: AccountTypeAPIKey,
- Extra: map[string]any{
- "quota_weekly_limit": 50.0,
- "quota_weekly_used": 50.0,
- "quota_weekly_start": now.Add(-2 * 24 * time.Hour).Format(time.RFC3339),
- },
- },
- want: false,
- },
- {
- name: "apikey total quota exceeded",
- account: &Account{
- Status: StatusActive,
- Schedulable: true,
- Type: AccountTypeAPIKey,
- Extra: map[string]any{
- "quota_limit": 100.0,
- "quota_used": 100.0,
- },
- },
- want: false,
- },
- {
- name: "apikey quota not exceeded",
- account: &Account{
- Status: StatusActive,
- Schedulable: true,
- Type: AccountTypeAPIKey,
- Extra: map[string]any{
- "quota_daily_limit": 10.0,
- "quota_daily_used": 5.0,
- "quota_daily_start": now.Add(-1 * time.Hour).Format(time.RFC3339),
- },
- },
- want: true,
- },
- {
- name: "apikey expired daily period restores schedulable",
- account: &Account{
- Status: StatusActive,
- Schedulable: true,
- Type: AccountTypeAPIKey,
- Extra: map[string]any{
- "quota_daily_limit": 10.0,
- "quota_daily_used": 10.0,
- "quota_daily_start": now.Add(-25 * time.Hour).Format(time.RFC3339),
- },
- },
- want: true,
- },
- {
- name: "oauth ignores quota exceeded",
- account: &Account{
- Status: StatusActive,
- Schedulable: true,
- Type: AccountTypeOAuth,
- Extra: map[string]any{
- "quota_daily_limit": 10.0,
- "quota_daily_used": 10.0,
- "quota_daily_start": now.Add(-1 * time.Hour).Format(time.RFC3339),
- },
- },
- want: true,
- },
- {
- name: "bedrock quota exceeded",
- account: &Account{
- Status: StatusActive,
- Schedulable: true,
- Type: AccountTypeBedrock,
- Extra: map[string]any{
- "quota_limit": 200.0,
- "quota_used": 200.0,
- },
- },
- want: false,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- require.Equal(t, tt.want, tt.account.IsSchedulable())
- })
- }
- }
|