| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package repository
- import (
- "context"
- "testing"
- "time"
- "github.com/alicebob/miniredis/v2"
- "github.com/redis/go-redis/v9"
- "github.com/stretchr/testify/require"
- )
- func newSecurityPolicySessionStoreTest(t *testing.T) *securityPolicySessionStore {
- t.Helper()
- mr, err := miniredis.Run()
- require.NoError(t, err)
- t.Cleanup(mr.Close)
- return &securityPolicySessionStore{rdb: redis.NewClient(&redis.Options{Addr: mr.Addr()})}
- }
- func TestSecurityPolicySessionStoreRoundTrip(t *testing.T) {
- ctx := context.Background()
- store := newSecurityPolicySessionStoreTest(t)
- scope := "secpol:scope:9:11"
- found, err := store.FindBlockedSessionField(ctx, scope, []string{"k:aaa"})
- require.NoError(t, err)
- require.Empty(t, found)
- require.NoError(t, store.MarkSessionBlocked(ctx, scope, []string{"k:aaa", "k:bbb"}, time.Hour))
- found, err = store.FindBlockedSessionField(ctx, scope, []string{"k:zzz", "k:bbb"})
- require.NoError(t, err)
- require.Equal(t, "k:bbb", found)
- unblocked, err := store.UnblockSessionScope(ctx, scope)
- require.NoError(t, err)
- require.True(t, unblocked)
- found, err = store.FindBlockedSessionField(ctx, scope, []string{"k:aaa"})
- require.NoError(t, err)
- require.Empty(t, found)
- unblocked, err = store.UnblockSessionScope(ctx, scope)
- require.NoError(t, err)
- require.False(t, unblocked)
- }
- func TestSecurityPolicySessionStoreNilSafe(t *testing.T) {
- ctx := context.Background()
- var store *securityPolicySessionStore
- require.NoError(t, store.MarkSessionBlocked(ctx, "s", []string{"k"}, time.Hour))
- found, err := store.FindBlockedSessionField(ctx, "s", []string{"k"})
- require.NoError(t, err)
- require.Empty(t, found)
- unblocked, err := store.UnblockSessionScope(ctx, "s")
- require.NoError(t, err)
- require.False(t, unblocked)
- }
|