Files
Kiro/internal/auth/state_store_test.go

113 lines
2.2 KiB
Go

package auth
import (
"testing"
"time"
)
func TestMemoryStateStore(t *testing.T) {
store := NewMemoryStateStore()
t.Run("set and validate state", func(t *testing.T) {
state := "test-state-123"
expiry := time.Now().Add(10 * time.Minute)
err := store.Set(state, expiry)
if err != nil {
t.Fatalf("Failed to set state: %v", err)
}
valid, err := store.Validate(state)
if err != nil {
t.Fatalf("Failed to validate state: %v", err)
}
if !valid {
t.Error("Expected state to be valid")
}
})
t.Run("validate non-existent state", func(t *testing.T) {
valid, err := store.Validate("non-existent")
if err != nil {
t.Fatalf("Unexpected error: %v", err)
}
if valid {
t.Error("Expected non-existent state to be invalid")
}
})
t.Run("validate expired state", func(t *testing.T) {
state := "expired-state"
expiry := time.Now().Add(-1 * time.Minute) // Already expired
err := store.Set(state, expiry)
if err != nil {
t.Fatalf("Failed to set state: %v", err)
}
valid, err := store.Validate(state)
if err != nil {
t.Fatalf("Unexpected error: %v", err)
}
if valid {
t.Error("Expected expired state to be invalid")
}
})
t.Run("delete state", func(t *testing.T) {
state := "delete-test"
expiry := time.Now().Add(10 * time.Minute)
err := store.Set(state, expiry)
if err != nil {
t.Fatalf("Failed to set state: %v", err)
}
err = store.Delete(state)
if err != nil {
t.Fatalf("Failed to delete state: %v", err)
}
valid, err := store.Validate(state)
if err != nil {
t.Fatalf("Unexpected error: %v", err)
}
if valid {
t.Error("Expected deleted state to be invalid")
}
})
t.Run("multiple states", func(t *testing.T) {
state1 := "state-1"
state2 := "state-2"
expiry := time.Now().Add(10 * time.Minute)
store.Set(state1, expiry)
store.Set(state2, expiry)
valid1, _ := store.Validate(state1)
valid2, _ := store.Validate(state2)
if !valid1 || !valid2 {
t.Error("Expected both states to be valid")
}
store.Delete(state1)
valid1, _ = store.Validate(state1)
valid2, _ = store.Validate(state2)
if valid1 {
t.Error("Expected state1 to be invalid after deletion")
}
if !valid2 {
t.Error("Expected state2 to still be valid")
}
})
}