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") } }