mirror of
https://github.com/photoprism/photoprism.git
synced 2025-10-05 16:57:17 +08:00
105 lines
3.0 KiB
Go
105 lines
3.0 KiB
Go
package entity
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/photoprism/photoprism/pkg/authn"
|
|
"github.com/photoprism/photoprism/pkg/rnd"
|
|
"github.com/photoprism/photoprism/pkg/time/unix"
|
|
)
|
|
|
|
func TestDeleteSession(t *testing.T) {
|
|
t.Run("Success", func(t *testing.T) {
|
|
id := rnd.SessionID("77be27ac5ca305b394046a83f6fda18167ca3d3f2dbe7ac1")
|
|
m := &Session{ID: id, DownloadToken: "download123", PreviewToken: "preview123"}
|
|
CacheSession(m, time.Hour)
|
|
r, _ := sessionCache.Get(id)
|
|
assert.NotEmpty(t, r)
|
|
err := DeleteSession(m)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
r2, _ := sessionCache.Get(id)
|
|
assert.Empty(t, r2)
|
|
})
|
|
t.Run("invalidID", func(t *testing.T) {
|
|
m := &Session{ID: "123-invalid", DownloadToken: "download123", PreviewToken: "preview123"}
|
|
CacheSession(m, time.Hour)
|
|
|
|
err := DeleteSession(m)
|
|
|
|
assert.Error(t, err)
|
|
})
|
|
}
|
|
|
|
func TestDeleteChildSessions(t *testing.T) {
|
|
t.Run("New", func(t *testing.T) {
|
|
s := NewSession(3600, 0)
|
|
assert.Equal(t, 0, DeleteChildSessions(s))
|
|
})
|
|
}
|
|
|
|
func TestDeleteClientSessions(t *testing.T) {
|
|
// Test client UID.
|
|
clientUID := "cs5gfen1bgx00000"
|
|
|
|
// Create new test client.
|
|
client := NewClient()
|
|
client.ClientUID = clientUID
|
|
|
|
// Make sure no sessions exist yet and test missing arguments.
|
|
assert.Equal(t, 0, DeleteClientSessions(&Client{}, authn.MethodUndefined, -1))
|
|
assert.Equal(t, 0, DeleteClientSessions(client, authn.MethodOAuth2, -1))
|
|
assert.Equal(t, 0, DeleteClientSessions(client, authn.MethodOAuth2, 0))
|
|
assert.Equal(t, 0, DeleteClientSessions(&Client{}, authn.MethodDefault, 0))
|
|
|
|
// Create 10 test client sessions.
|
|
for i := 0; i < 10; i++ {
|
|
sess := NewSession(3600, 0)
|
|
sess.SetClient(client)
|
|
|
|
if err := sess.Save(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
// Check if the expected number of sessions is deleted until none are left.
|
|
assert.Equal(t, 0, DeleteClientSessions(client, authn.MethodOAuth2, -1))
|
|
assert.Equal(t, 0, DeleteClientSessions(client, authn.MethodDefault, 1))
|
|
assert.Equal(t, 9, DeleteClientSessions(client, authn.MethodOAuth2, 1))
|
|
assert.Equal(t, 1, DeleteClientSessions(client, authn.MethodOAuth2, 0))
|
|
assert.Equal(t, 0, DeleteClientSessions(client, authn.MethodOAuth2, 0))
|
|
assert.Equal(t, 0, DeleteClientSessions(client, authn.MethodUndefined, 0))
|
|
}
|
|
|
|
func TestDeleteExpiredSessions(t *testing.T) {
|
|
assert.Equal(t, 0, DeleteExpiredSessions())
|
|
m := NewSession(unix.Day, unix.Hour)
|
|
m.Expires(time.Date(2000, 01, 15, 12, 30, 0, 0, time.UTC))
|
|
if err := m.Save(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
assert.Equal(t, 1, DeleteExpiredSessions())
|
|
}
|
|
|
|
func TestDeleteFromSessionCache(t *testing.T) {
|
|
id := rnd.SessionID("69be27ac5ca305b394046a83f6fda18167ca3d3f2dbe7ac1")
|
|
sessionCache.Flush()
|
|
bob := FindSessionByRefID("sessxkkcabce")
|
|
CacheSession(bob, time.Hour)
|
|
r, b := sessionCache.Get(id)
|
|
assert.NotEmpty(t, r)
|
|
assert.True(t, b)
|
|
DeleteFromSessionCache("")
|
|
r2, b2 := sessionCache.Get(id)
|
|
assert.NotEmpty(t, r2)
|
|
assert.True(t, b2)
|
|
DeleteFromSessionCache(id)
|
|
r3, b3 := sessionCache.Get(id)
|
|
assert.Empty(t, r3)
|
|
assert.False(t, b3)
|
|
}
|