mirror of
https://github.com/sstent/go-garminconnect.git
synced 2026-01-31 19:42:36 +00:00
86 lines
1.8 KiB
Go
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)
|
|
})
|
|
}
|
|
})
|
|
}
|