photoprism/internal/session/store_test.go
Michael Mayer 1f1f92408a Sharing: Token authentication #18
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2020-06-25 01:20:58 +02:00

108 lines
2 KiB
Go

package session
import (
"testing"
"time"
"github.com/photoprism/photoprism/internal/entity"
"github.com/stretchr/testify/assert"
)
func TestSession_Create(t *testing.T) {
s := New(time.Hour, "testdata")
data := Data{
User: entity.Admin,
}
token := s.Create(data)
t.Logf("token: %s", token)
assert.Equal(t, 48, len(token))
}
func TestSession_Update(t *testing.T) {
s := New(time.Hour, "testdata")
data := Data{
User: entity.Admin,
}
randomToken := Token()
assert.Equal(t, 48, len(randomToken))
if result := s.Get(randomToken); result != nil {
t.Fatalf("session %s should not exist", randomToken)
}
if err := s.Update(randomToken, data); err == nil {
t.Fatalf("update should fail for unknown token %s", randomToken)
}
token := s.Create(data)
assert.Equal(t, 48, len(token))
cachedData := s.Get(token)
if cachedData == nil {
t.Fatalf("session %s should exist", token)
}
assert.Equal(t, *cachedData, data)
newData := Data{
User: entity.Guest,
}
if err := s.Update(token, newData); err != nil {
t.Fatalf(err.Error())
}
if cachedData := s.Get(token); cachedData == nil {
t.Fatalf("session %s should exist", token)
}
}
func TestSession_Delete(t *testing.T) {
s := New(time.Hour, "testdata")
s.Delete("abc")
}
func TestSession_Get(t *testing.T) {
s := New(time.Hour, "testdata")
data := Data{
User: entity.Guest,
}
token := s.Create(data)
t.Logf("token: %s", token)
assert.Equal(t, 48, len(token))
cachedData := s.Get(token)
if cachedData == nil {
t.Fatal("cachedData should not be nil")
}
assert.Equal(t, data, *cachedData)
s.Delete(token)
if cachedData := s.Get(token); cachedData != nil {
t.Fatal("cachedData should be nil")
}
}
func TestSession_Exists(t *testing.T) {
s := New(time.Hour, "testdata")
assert.False(t, s.Exists("xyz"))
data := Data{
User: entity.Guest,
}
token := s.Create(data)
t.Logf("token: %s", token)
assert.Equal(t, 48, len(token))
assert.True(t, s.Exists(token))
s.Delete(token)
assert.False(t, s.Exists(token))
}