You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.5 KiB
Go

package storage
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestMemoryStorage_DeleteNonExistent(t *testing.T) {
s := NewMemoryStorage(0)
err := s.Delete("nope")
require.NoError(t, err)
}
func TestMemoryStorage_CreateOverrides(t *testing.T) {
s := NewMemoryStorage(0)
s1, err := s.Create("id")
require.NoError(t, err)
require.NotNil(t, s1)
err = s1.Set("k", "v1")
require.NoError(t, err)
// Create same id again should override the session
s2, err := s.Create("id")
require.NoError(t, err)
require.NotNil(t, s2)
assert.NotEqual(t, s1, s2)
// Old value should be gone
val, err := s2.Get("k")
assert.NoError(t, err)
assert.Nil(t, val)
}
func TestMemoryStorage_SaveNilDoesNotPanic(t *testing.T) {
s := NewMemoryStorage(0)
// Passing nil should be a no-op
err := s.Save(nil)
require.NoError(t, err)
}
func TestMemoryStorage_GetExpiredReturnsNil(t *testing.T) {
s := NewMemoryStorage(50 * time.Millisecond)
sess, err := s.Create("sid")
require.NoError(t, err)
require.NotNil(t, sess)
// Wait to expire
time.Sleep(80 * time.Millisecond)
got, err := s.Get("sid")
require.NoError(t, err)
assert.Nil(t, got)
}
func TestMemoryStorage_CleanupRemovesExpired(t *testing.T) {
s := NewMemoryStorage(30 * time.Millisecond)
sess, err := s.Create("sid")
require.NoError(t, err)
require.NotNil(t, sess)
time.Sleep(50 * time.Millisecond)
err = s.Cleanup()
require.NoError(t, err)
got, err := s.Get("sid")
require.NoError(t, err)
assert.Nil(t, got)
}