github.com/influxdata/influxdb/v2@v2.7.6/session/storage_test.go (about) 1 package session_test 2 3 import ( 4 "context" 5 "testing" 6 "time" 7 8 "github.com/google/go-cmp/cmp" 9 "github.com/influxdata/influxdb/v2" 10 "github.com/influxdata/influxdb/v2/inmem" 11 "github.com/influxdata/influxdb/v2/session" 12 ) 13 14 func TestSessionStore(t *testing.T) { 15 driver := func() session.Store { 16 return inmem.NewSessionStore() 17 } 18 19 expected := &influxdb.Session{ 20 ID: 1, 21 Key: "2", 22 CreatedAt: time.Now(), 23 ExpiresAt: time.Now().Add(time.Hour), 24 } 25 26 simpleSetup := func(t *testing.T, store *session.Storage) { 27 err := store.CreateSession( 28 context.Background(), 29 expected, 30 ) 31 if err != nil { 32 t.Fatal(err) 33 } 34 } 35 36 st := []struct { 37 name string 38 setup func(*testing.T, *session.Storage) 39 update func(*testing.T, *session.Storage) 40 results func(*testing.T, *session.Storage) 41 }{ 42 { 43 name: "create", 44 setup: simpleSetup, 45 results: func(t *testing.T, store *session.Storage) { 46 session, err := store.FindSessionByID(context.Background(), 1) 47 if err != nil { 48 t.Fatal(err) 49 } 50 51 if !cmp.Equal(session, expected) { 52 t.Fatalf("expected identical sessions: \n%+v\n%+v", session, expected) 53 } 54 }, 55 }, 56 { 57 name: "get", 58 setup: simpleSetup, 59 results: func(t *testing.T, store *session.Storage) { 60 session, err := store.FindSessionByID(context.Background(), 1) 61 if err != nil { 62 t.Fatal(err) 63 } 64 65 if !cmp.Equal(session, expected) { 66 t.Fatalf("expected identical sessions: \n%+v\n%+v", session, expected) 67 } 68 69 session, err = store.FindSessionByKey(context.Background(), "2") 70 if err != nil { 71 t.Fatal(err) 72 } 73 74 if !cmp.Equal(session, expected) { 75 t.Fatalf("expected identical sessions: \n%+v\n%+v", session, expected) 76 } 77 }, 78 }, 79 { 80 name: "delete", 81 setup: simpleSetup, 82 update: func(t *testing.T, store *session.Storage) { 83 err := store.DeleteSession(context.Background(), 1) 84 if err != nil { 85 t.Fatal(err) 86 } 87 }, 88 results: func(t *testing.T, store *session.Storage) { 89 session, err := store.FindSessionByID(context.Background(), 1) 90 if err == nil { 91 t.Fatal("expected error on deleted session but got none") 92 } 93 94 if session != nil { 95 t.Fatal("got a session when none should have existed") 96 } 97 }, 98 }, 99 } 100 for _, testScenario := range st { 101 t.Run(testScenario.name, func(t *testing.T) { 102 ss := session.NewStorage(driver()) 103 104 // setup 105 if testScenario.setup != nil { 106 testScenario.setup(t, ss) 107 } 108 109 // update 110 if testScenario.update != nil { 111 testScenario.update(t, ss) 112 } 113 114 // results 115 if testScenario.results != nil { 116 testScenario.results(t, ss) 117 } 118 }) 119 } 120 }