68 lines
1.2 KiB
Go
68 lines
1.2 KiB
Go
package token
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func setupTestDB(t *testing.T) *gorm.DB {
|
|
t.Helper()
|
|
|
|
dbPath := filepath.Join("testdata", "tokens.db")
|
|
|
|
_ = os.Remove(dbPath)
|
|
|
|
db, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{})
|
|
if err != nil {
|
|
t.Fatalf("failed to open db: %v", err)
|
|
}
|
|
|
|
if err := db.AutoMigrate(&Token{}); err != nil {
|
|
t.Fatalf("failed to migrate: %v", err)
|
|
}
|
|
|
|
return db
|
|
}
|
|
|
|
func TestSQLiteTokenStore_RevokeAndCheck(t *testing.T) {
|
|
db := setupTestDB(t)
|
|
|
|
store, err := NewSQLiteTokenStore(db)
|
|
if err != nil {
|
|
t.Fatalf("failed to create store: %v", err)
|
|
}
|
|
|
|
service, err := NewTokenService(store)
|
|
if err != nil {
|
|
t.Fatalf("failed to create service: %v", err)
|
|
}
|
|
|
|
jti := "test-token-123"
|
|
exp := time.Now().Add(time.Hour)
|
|
|
|
revoked, err := service.IsRevoked(jti)
|
|
if err != nil {
|
|
t.Fatalf("isRevoked failed: %v", err)
|
|
}
|
|
if revoked {
|
|
t.Fatalf("token should NOT be revoked initially")
|
|
}
|
|
|
|
if err := service.Revoke(jti, exp); err != nil {
|
|
t.Fatalf("revoke failed: %v", err)
|
|
}
|
|
|
|
revoked, err = service.IsRevoked(jti)
|
|
if err != nil {
|
|
t.Fatalf("isRevoked failed: %v", err)
|
|
}
|
|
if !revoked {
|
|
t.Fatalf("token should be revoked")
|
|
}
|
|
}
|