mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-30 19:06:33 +02:00
78 lines
2.3 KiB
Go
78 lines
2.3 KiB
Go
package manager
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/google/go-cmp/cmp"
|
|
"github.com/stretchr/testify/assert"
|
|
"google.golang.org/protobuf/testing/protocmp"
|
|
|
|
"github.com/pomerium/pomerium/pkg/grpc/session"
|
|
"github.com/pomerium/pomerium/pkg/grpc/user"
|
|
)
|
|
|
|
func TestDataStore(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
ds := newDataStore()
|
|
s, u := ds.getSessionAndUser("S1")
|
|
assert.Nil(t, s, "should return a nil session when none exists")
|
|
assert.Nil(t, u, "should return a nil user when none exists")
|
|
|
|
u, ss := ds.getUserAndSessions("U1")
|
|
assert.Nil(t, u, "should return a nil user when none exists")
|
|
assert.Empty(t, ss, "should return an empty list of sessions when no user exists")
|
|
|
|
s = &session.Session{Id: "S1", UserId: "U1"}
|
|
ds.putSession(s)
|
|
s1, u1 := ds.getSessionAndUser("S1")
|
|
assert.NotNil(t, s1, "should return a non-nil session")
|
|
assert.NotSame(t, s, s1, "should return different pointers")
|
|
assert.Empty(t, cmp.Diff(s, s1, protocmp.Transform()), "should be the same as was entered")
|
|
assert.Nil(t, u1, "should return a nil user when only the session exists")
|
|
|
|
ds.putUser(&user.User{
|
|
Id: "U1",
|
|
})
|
|
_, u1 = ds.getSessionAndUser("S1")
|
|
assert.NotNil(t, u1, "should return a user now that it has been added")
|
|
|
|
ds.putSession(&session.Session{Id: "S4", UserId: "U1"})
|
|
ds.putSession(&session.Session{Id: "S3", UserId: "U1"})
|
|
ds.putSession(&session.Session{Id: "S2", UserId: "U1"})
|
|
u, ss = ds.getUserAndSessions("U1")
|
|
assert.NotNil(t, u)
|
|
assert.Empty(t, cmp.Diff(ss, []*session.Session{
|
|
{Id: "S1", UserId: "U1"},
|
|
{Id: "S2", UserId: "U1"},
|
|
{Id: "S3", UserId: "U1"},
|
|
{Id: "S4", UserId: "U1"},
|
|
}, protocmp.Transform()), "should return all sessions in id order")
|
|
|
|
ds.deleteSession("S4")
|
|
|
|
u, ss = ds.getUserAndSessions("U1")
|
|
assert.NotNil(t, u)
|
|
assert.Empty(t, cmp.Diff(ss, []*session.Session{
|
|
{Id: "S1", UserId: "U1"},
|
|
{Id: "S2", UserId: "U1"},
|
|
{Id: "S3", UserId: "U1"},
|
|
}, protocmp.Transform()), "should return all sessions in id order")
|
|
|
|
ds.deleteUser("U1")
|
|
u, ss = ds.getUserAndSessions("U1")
|
|
assert.Nil(t, u)
|
|
assert.Empty(t, cmp.Diff(ss, []*session.Session{
|
|
{Id: "S1", UserId: "U1"},
|
|
{Id: "S2", UserId: "U1"},
|
|
{Id: "S3", UserId: "U1"},
|
|
}, protocmp.Transform()), "should still return all sessions in id order")
|
|
|
|
ds.deleteSession("S1")
|
|
ds.deleteSession("S2")
|
|
ds.deleteSession("S3")
|
|
|
|
u, ss = ds.getUserAndSessions("U1")
|
|
assert.Nil(t, u)
|
|
assert.Empty(t, ss)
|
|
}
|