81 lines
1.6 KiB
Go
81 lines
1.6 KiB
Go
// FILE: auth/token_test.go
|
|
package auth
|
|
|
|
import (
|
|
"fmt"
|
|
"sync"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestSimpleTokenValidator(t *testing.T) {
|
|
validator := NewSimpleTokenValidator()
|
|
|
|
token1 := "test-token-123"
|
|
token2 := "test-token-456"
|
|
|
|
// Add tokens
|
|
validator.AddToken(token1)
|
|
validator.AddToken(token2)
|
|
|
|
// Validate existing tokens
|
|
assert.True(t, validator.ValidateToken(token1))
|
|
assert.True(t, validator.ValidateToken(token2))
|
|
|
|
// Invalid token
|
|
assert.False(t, validator.ValidateToken("invalid-token"))
|
|
|
|
// Remove token
|
|
validator.RemoveToken(token1)
|
|
assert.False(t, validator.ValidateToken(token1))
|
|
assert.True(t, validator.ValidateToken(token2))
|
|
}
|
|
|
|
func TestConcurrentTokenValidator(t *testing.T) {
|
|
validator := NewSimpleTokenValidator()
|
|
|
|
// Add tokens concurrently
|
|
var wg sync.WaitGroup
|
|
for i := 0; i < 100; i++ {
|
|
wg.Add(1)
|
|
go func(idx int) {
|
|
defer wg.Done()
|
|
token := fmt.Sprintf("token-%d", idx)
|
|
validator.AddToken(token)
|
|
}(i)
|
|
}
|
|
wg.Wait()
|
|
|
|
// Validate concurrently
|
|
for i := 0; i < 100; i++ {
|
|
wg.Add(1)
|
|
go func(idx int) {
|
|
defer wg.Done()
|
|
token := fmt.Sprintf("token-%d", idx)
|
|
assert.True(t, validator.ValidateToken(token))
|
|
}(i)
|
|
}
|
|
wg.Wait()
|
|
|
|
// Remove concurrently
|
|
for i := 0; i < 50; i++ {
|
|
wg.Add(1)
|
|
go func(idx int) {
|
|
defer wg.Done()
|
|
token := fmt.Sprintf("token-%d", idx)
|
|
validator.RemoveToken(token)
|
|
}(i)
|
|
}
|
|
wg.Wait()
|
|
|
|
// Verify removal
|
|
for i := 0; i < 50; i++ {
|
|
token := fmt.Sprintf("token-%d", i)
|
|
assert.False(t, validator.ValidateToken(token))
|
|
}
|
|
for i := 50; i < 100; i++ {
|
|
token := fmt.Sprintf("token-%d", i)
|
|
assert.True(t, validator.ValidateToken(token))
|
|
}
|
|
} |