| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- //go:build unit
- package service
- import (
- "context"
- "encoding/json"
- "testing"
- "github.com/Wei-Shaw/sub2api/internal/config"
- "github.com/stretchr/testify/require"
- )
- func TestOpenAIImagesOAuthUnavailableCooldownSettingsDefaultAndStoredValue(t *testing.T) {
- repo := newMockSettingRepo()
- svc := NewSettingService(repo, &config.Config{})
- settings, err := svc.GetOpenAIImagesOAuthUnavailableCooldownSettings(context.Background())
- require.NoError(t, err)
- require.Equal(t, 30, settings.CooldownMinutes)
- require.NoError(t, svc.SetOpenAIImagesOAuthUnavailableCooldownSettings(context.Background(), &OpenAIImagesOAuthUnavailableCooldownSettings{CooldownMinutes: 7}))
- settings, err = svc.GetOpenAIImagesOAuthUnavailableCooldownSettings(context.Background())
- require.NoError(t, err)
- require.Equal(t, 7, settings.CooldownMinutes)
- }
- func TestSetOpenAIImagesOAuthUnavailableCooldownSettingsBoundaries(t *testing.T) {
- svc := NewSettingService(newMockSettingRepo(), &config.Config{})
- for _, minutes := range []int{1, openAIImagesOAuthUnavailableMaxCooldownMinutes} {
- err := svc.SetOpenAIImagesOAuthUnavailableCooldownSettings(context.Background(), &OpenAIImagesOAuthUnavailableCooldownSettings{CooldownMinutes: minutes})
- require.NoError(t, err, "should accept cooldown_minutes=%d", minutes)
- }
- for _, minutes := range []int{0, -1, openAIImagesOAuthUnavailableMaxCooldownMinutes + 1} {
- err := svc.SetOpenAIImagesOAuthUnavailableCooldownSettings(context.Background(), &OpenAIImagesOAuthUnavailableCooldownSettings{CooldownMinutes: minutes})
- require.ErrorContains(t, err, "cooldown_minutes must be between 1-120")
- }
- }
- func TestOpenAIImagesOAuthUnavailableCooldownSettingsRejectsOverflowingValue(t *testing.T) {
- maxInt := int(^uint(0) >> 1)
- repo := newMockSettingRepo()
- svc := NewSettingService(repo, &config.Config{})
- err := svc.SetOpenAIImagesOAuthUnavailableCooldownSettings(context.Background(), &OpenAIImagesOAuthUnavailableCooldownSettings{CooldownMinutes: maxInt})
- require.ErrorContains(t, err, "cooldown_minutes must be between 1-120")
- for _, minutes := range []int{openAIImagesOAuthUnavailableMaxCooldownMinutes + 1, maxInt} {
- data, marshalErr := json.Marshal(OpenAIImagesOAuthUnavailableCooldownSettings{CooldownMinutes: minutes})
- require.NoError(t, marshalErr)
- repo.data[SettingKeyOpenAIImagesOAuthUnavailableCooldownSettings] = string(data)
- settings, getErr := svc.GetOpenAIImagesOAuthUnavailableCooldownSettings(context.Background())
- require.NoError(t, getErr)
- require.Equal(t, openAIImagesOAuthUnavailableDefaultCooldownMinutes, settings.CooldownMinutes)
- }
- }
|