github.com/xzl8028/xenia-server@v0.0.0-20190809101854-18450a97da63/store/storetest/user_access_token_store.go (about)

     1  // Copyright (c) 2017-present Xenia, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package storetest
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/xzl8028/xenia-server/model"
    10  	"github.com/xzl8028/xenia-server/store"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func TestUserAccessTokenStore(t *testing.T, ss store.Store) {
    15  	t.Run("UserAccessTokenSaveGetDelete", func(t *testing.T) { testUserAccessTokenSaveGetDelete(t, ss) })
    16  	t.Run("UserAccessTokenDisableEnable", func(t *testing.T) { testUserAccessTokenDisableEnable(t, ss) })
    17  	t.Run("UserAccessTokenSearch", func(t *testing.T) { testUserAccessTokenSearch(t, ss) })
    18  }
    19  
    20  func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) {
    21  	uat := &model.UserAccessToken{
    22  		Token:       model.NewId(),
    23  		UserId:      model.NewId(),
    24  		Description: "testtoken",
    25  	}
    26  
    27  	s1 := &model.Session{}
    28  	s1.UserId = uat.UserId
    29  	s1.Token = uat.Token
    30  
    31  	s1, err := ss.Session().Save(s1)
    32  	require.Nil(t, err)
    33  
    34  	if _, err = ss.UserAccessToken().Save(uat); err != nil {
    35  		t.Fatal(err)
    36  	}
    37  
    38  	if result, terr := ss.UserAccessToken().Get(uat.Id); terr != nil {
    39  		t.Fatal(terr)
    40  	} else if result.Token != uat.Token {
    41  		t.Fatal("received incorrect token after save")
    42  	}
    43  
    44  	if received, err2 := ss.UserAccessToken().GetByToken(uat.Token); err2 != nil {
    45  		t.Fatal(err2)
    46  	} else if received.Token != uat.Token {
    47  		t.Fatal("received incorrect token after save")
    48  	}
    49  
    50  	if _, err = ss.UserAccessToken().GetByToken("notarealtoken"); err == nil {
    51  		t.Fatal("should have failed on bad token")
    52  	}
    53  
    54  	if received, err2 := ss.UserAccessToken().GetByUser(uat.UserId, 0, 100); err2 != nil {
    55  		t.Fatal(err2)
    56  	} else if len(received) != 1 {
    57  		t.Fatal("received incorrect number of tokens after save")
    58  	}
    59  
    60  	if result, appError := ss.UserAccessToken().GetAll(0, 100); appError != nil {
    61  		t.Fatal(appError)
    62  	} else if len(result) != 1 {
    63  		t.Fatal("received incorrect number of tokens after save")
    64  	}
    65  
    66  	if err = ss.UserAccessToken().Delete(uat.Id); err != nil {
    67  		t.Fatal(err)
    68  	}
    69  
    70  	if _, err = ss.Session().Get(s1.Token); err == nil {
    71  		t.Fatal("should error - session should be deleted")
    72  	}
    73  
    74  	if _, err = ss.UserAccessToken().GetByToken(s1.Token); err == nil {
    75  		t.Fatal("should error - access token should be deleted")
    76  	}
    77  
    78  	s2 := &model.Session{}
    79  	s2.UserId = uat.UserId
    80  	s2.Token = uat.Token
    81  
    82  	s2, err = ss.Session().Save(s2)
    83  	require.Nil(t, err)
    84  
    85  	if _, err = ss.UserAccessToken().Save(uat); err != nil {
    86  		t.Fatal(err)
    87  	}
    88  
    89  	if err := ss.UserAccessToken().DeleteAllForUser(uat.UserId); err != nil {
    90  		t.Fatal(err)
    91  	}
    92  
    93  	if _, err := ss.Session().Get(s2.Token); err == nil {
    94  		t.Fatal("should error - session should be deleted")
    95  	}
    96  
    97  	if _, err := ss.UserAccessToken().GetByToken(s2.Token); err == nil {
    98  		t.Fatal("should error - access token should be deleted")
    99  	}
   100  }
   101  
   102  func testUserAccessTokenDisableEnable(t *testing.T, ss store.Store) {
   103  	uat := &model.UserAccessToken{
   104  		Token:       model.NewId(),
   105  		UserId:      model.NewId(),
   106  		Description: "testtoken",
   107  	}
   108  
   109  	s1 := &model.Session{}
   110  	s1.UserId = uat.UserId
   111  	s1.Token = uat.Token
   112  
   113  	s1, err := ss.Session().Save(s1)
   114  	require.Nil(t, err)
   115  
   116  	if _, err = ss.UserAccessToken().Save(uat); err != nil {
   117  		t.Fatal(err)
   118  	}
   119  
   120  	if err = ss.UserAccessToken().UpdateTokenDisable(uat.Id); err != nil {
   121  		t.Fatal(err)
   122  	}
   123  
   124  	if _, err = ss.Session().Get(s1.Token); err == nil {
   125  		t.Fatal("should error - session should be deleted")
   126  	}
   127  
   128  	s2 := &model.Session{}
   129  	s2.UserId = uat.UserId
   130  	s2.Token = uat.Token
   131  
   132  	s2, err = ss.Session().Save(s2)
   133  	require.Nil(t, err)
   134  
   135  	if err = ss.UserAccessToken().UpdateTokenEnable(uat.Id); err != nil {
   136  		t.Fatal(err)
   137  	}
   138  }
   139  
   140  func testUserAccessTokenSearch(t *testing.T, ss store.Store) {
   141  	u1 := model.User{}
   142  	u1.Email = MakeEmail()
   143  	u1.Username = model.NewId()
   144  
   145  	store.Must(ss.User().Save(&u1))
   146  
   147  	uat := &model.UserAccessToken{
   148  		Token:       model.NewId(),
   149  		UserId:      u1.Id,
   150  		Description: "testtoken",
   151  	}
   152  
   153  	s1 := &model.Session{}
   154  	s1.UserId = uat.UserId
   155  	s1.Token = uat.Token
   156  
   157  	s1, err := ss.Session().Save(s1)
   158  	require.Nil(t, err)
   159  
   160  	if _, err = ss.UserAccessToken().Save(uat); err != nil {
   161  		t.Fatal(err)
   162  	}
   163  
   164  	if received, err := ss.UserAccessToken().Search(uat.Id); err != nil {
   165  		t.Fatal(err)
   166  	} else if len(received) != 1 {
   167  		t.Fatal("received incorrect number of tokens after search")
   168  	}
   169  
   170  	if received, err := ss.UserAccessToken().Search(uat.UserId); err != nil {
   171  		t.Fatal(err)
   172  	} else if len(received) != 1 {
   173  		t.Fatal("received incorrect number of tokens after search")
   174  	}
   175  
   176  	if received, err := ss.UserAccessToken().Search(u1.Username); err != nil {
   177  		t.Fatal(err)
   178  	} else if len(received) != 1 {
   179  		t.Fatal("received incorrect number of tokens after search")
   180  	}
   181  }