113 lines
2.2 KiB
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")
|
|
}
|
|
})
|
|
}
|