gemini_token_cache_integration_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. //go:build integration
  2. package repository
  3. import (
  4. "errors"
  5. "testing"
  6. "time"
  7. "github.com/Wei-Shaw/sub2api/internal/service"
  8. "github.com/redis/go-redis/v9"
  9. "github.com/stretchr/testify/require"
  10. "github.com/stretchr/testify/suite"
  11. )
  12. type GeminiTokenCacheSuite struct {
  13. IntegrationRedisSuite
  14. cache service.GeminiTokenCache
  15. }
  16. func (s *GeminiTokenCacheSuite) SetupTest() {
  17. s.IntegrationRedisSuite.SetupTest()
  18. s.cache = NewGeminiTokenCache(s.rdb)
  19. }
  20. func (s *GeminiTokenCacheSuite) TestDeleteAccessToken() {
  21. cacheKey := "project-123"
  22. token := "token-value"
  23. require.NoError(s.T(), s.cache.SetAccessToken(s.ctx, cacheKey, token, time.Minute))
  24. got, err := s.cache.GetAccessToken(s.ctx, cacheKey)
  25. require.NoError(s.T(), err)
  26. require.Equal(s.T(), token, got)
  27. require.NoError(s.T(), s.cache.DeleteAccessToken(s.ctx, cacheKey))
  28. _, err = s.cache.GetAccessToken(s.ctx, cacheKey)
  29. require.True(s.T(), errors.Is(err, redis.Nil), "expected redis.Nil after delete")
  30. }
  31. func (s *GeminiTokenCacheSuite) TestDeleteAccessToken_MissingKey() {
  32. require.NoError(s.T(), s.cache.DeleteAccessToken(s.ctx, "missing-key"))
  33. }
  34. func TestGeminiTokenCacheSuite(t *testing.T) {
  35. suite.Run(t, new(GeminiTokenCacheSuite))
  36. }