59 lines
1.5 KiB
Go
59 lines
1.5 KiB
Go
package session
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/influxdata/influxdb/v2"
|
|
"github.com/influxdata/influxdb/v2/inmem"
|
|
"github.com/influxdata/influxdb/v2/kv/migration/all"
|
|
"github.com/influxdata/influxdb/v2/mock"
|
|
"github.com/influxdata/influxdb/v2/tenant"
|
|
influxdbtesting "github.com/influxdata/influxdb/v2/testing"
|
|
"go.uber.org/zap/zaptest"
|
|
)
|
|
|
|
func TestSessionService(t *testing.T) {
|
|
influxdbtesting.SessionService(initSessionService, t)
|
|
}
|
|
|
|
func initSessionService(f influxdbtesting.SessionFields, t *testing.T) (influxdb.SessionService, string, func()) {
|
|
ss := NewStorage(inmem.NewSessionStore())
|
|
|
|
kvStore := inmem.NewKVStore()
|
|
|
|
ctx := context.Background()
|
|
if err := all.Up(ctx, zaptest.NewLogger(t), kvStore); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
ten := tenant.NewService(tenant.NewStore(kvStore))
|
|
|
|
svc := NewService(ss, ten, ten, &mock.AuthorizationService{
|
|
FindAuthorizationsFn: func(context.Context, influxdb.AuthorizationFilter, ...influxdb.FindOptions) ([]*influxdb.Authorization, int, error) {
|
|
return []*influxdb.Authorization{}, 0, nil
|
|
},
|
|
}, WithSessionLength(time.Minute))
|
|
|
|
if f.IDGenerator != nil {
|
|
WithIDGenerator(f.IDGenerator)(svc)
|
|
}
|
|
|
|
if f.TokenGenerator != nil {
|
|
WithTokenGenerator(f.TokenGenerator)(svc)
|
|
}
|
|
|
|
for _, u := range f.Users {
|
|
if err := ten.CreateUser(ctx, u); err != nil {
|
|
t.Fatalf("failed to populate users")
|
|
}
|
|
}
|
|
for _, s := range f.Sessions {
|
|
if err := ss.CreateSession(ctx, s); err != nil {
|
|
t.Fatalf("failed to populate sessions")
|
|
}
|
|
}
|
|
return svc, "session", func() {}
|
|
}
|