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