Files
go-garminconnect/internal/auth/filestorage_test.go
2025-08-26 19:33:02 -07:00

86 lines
1.8 KiB
Go

package auth
import (
"os"
"path/filepath"
"testing"
"time"
"github.com/dghubble/oauth1"
"github.com/stretchr/testify/assert"
)
func TestFileStorage(t *testing.T) {
// Create temp directory for tests
tempDir, err := os.MkdirTemp("", "garmin-test")
assert.NoError(t, err)
defer os.RemoveAll(tempDir)
storage := &FileStorage{
Path: filepath.Join(tempDir, "token.json"),
}
// Test saving and loading token
t.Run("SaveAndLoadToken", func(t *testing.T) {
testToken := &oauth1.Token{
Token: "access-token",
TokenSecret: "access-secret",
}
// Save token
err := storage.SaveToken(testToken)
assert.NoError(t, err)
// Load token
loadedToken, err := storage.GetToken()
assert.NoError(t, err)
assert.Equal(t, testToken.Token, loadedToken.Token)
assert.Equal(t, testToken.TokenSecret, loadedToken.TokenSecret)
})
// Test missing token file
t.Run("TokenMissing", func(t *testing.T) {
_, err := storage.GetToken()
assert.ErrorIs(t, err, os.ErrNotExist)
})
// Test token expiration
t.Run("TokenExpiration", func(t *testing.T) {
testCases := []struct {
name string
token *oauth1.Token
expected bool
}{
{
name: "EmptyToken",
token: &oauth1.Token{},
expected: true,
},
{
name: "ValidToken",
token: &oauth1.Token{
Token: "valid",
TokenSecret: "valid",
},
expected: false,
},
{
name: "ExpiredToken",
token: &oauth1.Token{
Token: "expired",
TokenSecret: "expired",
CreatedAt: time.Now().Add(-200 * 24 * time.Hour), // 200 days ago
},
expected: true,
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
expired := storage.TokenExpired(tc.token)
assert.Equal(t, tc.expected, expired)
})
}
})
}