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  }