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) }