github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/store/storetest/role_store_test.go (about) 1 package storetest 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/masterhung0112/hk_server/v5/model" 8 "github.com/stretchr/testify/suite" 9 ) 10 11 // type RoleStoreTestSuite struct { 12 // suite.Suite 13 // StoreTestSuite 14 // } 15 16 func TestRoleStoreTestSuite(t *testing.T) { 17 StoreTestSuiteWithSqlSupplier(t, &RoleStoreTestSuite{}, func(t *testing.T, testSuite StoreTestBaseSuite) { 18 suite.Run(t, testSuite) 19 }) 20 } 21 22 func (s *RoleStoreTestSuite) TestRoleStoreSave() { 23 // Save a new role. 24 r1 := &model.Role{ 25 Name: model.NewId(), 26 DisplayName: model.NewId(), 27 Description: model.NewId(), 28 Permissions: []string{ 29 "invite_user", 30 "create_public_channel", 31 "add_user_to_team", 32 }, 33 SchemeManaged: false, 34 } 35 36 d1, err := s.Store().Role().Save(r1) 37 if s.Nil(err) && s.NotNil(d1) { 38 s.Len(d1.Id, 26) 39 s.Equal(r1.Name, d1.Name) 40 s.Equal(r1.DisplayName, d1.DisplayName) 41 s.Equal(r1.Description, d1.Description) 42 s.Equal(r1.Permissions, d1.Permissions) 43 s.Equal(r1.SchemeManaged, d1.SchemeManaged) 44 } 45 46 // Change the role permissions and update. 47 d1.Permissions = []string{ 48 "invite_user", 49 "add_user_to_team", 50 "delete_public_channel", 51 } 52 53 d2, err := s.Store().Role().Save(d1) 54 if s.Nil(err) && s.NotNil(d2) { 55 s.Len(d2.Id, 26) 56 s.Equal(r1.Name, d2.Name) 57 s.Equal(r1.DisplayName, d2.DisplayName) 58 s.Equal(r1.Description, d2.Description) 59 s.Equal(d1.Permissions, d2.Permissions) 60 s.Equal(r1.SchemeManaged, d2.SchemeManaged) 61 } 62 63 // Try saving one with an invalid ID set. 64 r3 := &model.Role{ 65 Id: model.NewId(), 66 Name: model.NewId(), 67 DisplayName: model.NewId(), 68 Description: model.NewId(), 69 Permissions: []string{ 70 "invite_user", 71 "create_public_channel", 72 "add_user_to_team", 73 }, 74 SchemeManaged: false, 75 } 76 77 _, err = s.Store().Role().Save(r3) 78 s.NotNil(err) 79 80 // Try saving one with a duplicate "name" field. 81 r4 := &model.Role{ 82 Name: r1.Name, 83 DisplayName: model.NewId(), 84 Description: model.NewId(), 85 Permissions: []string{ 86 "invite_user", 87 "create_public_channel", 88 "add_user_to_team", 89 }, 90 SchemeManaged: false, 91 } 92 93 _, err = s.Store().Role().Save(r4) 94 s.NotNil(err) 95 96 r5 := &model.Role{ 97 Name: model.NewId(), 98 DisplayName: model.NewId(), 99 Description: model.NewId(), 100 Permissions: []string{ 101 "invalid_permission", 102 }, 103 SchemeManaged: false, 104 } 105 106 _, err = s.Store().Role().Save(r5) 107 if s.NotNil(err) { 108 s.Contains(err.Error(), "invalid_permission") 109 } 110 } 111 112 func (s *RoleStoreTestSuite) TestRoleStoreGetAll() { 113 prev, err := s.Store().Role().GetAll() 114 if s.Nil(err) { 115 prevCount := len(prev) 116 117 // Save a role to test with. 118 r1 := &model.Role{ 119 Name: model.NewId(), 120 DisplayName: model.NewId(), 121 Description: model.NewId(), 122 Permissions: []string{ 123 "invite_user", 124 "create_public_channel", 125 "add_user_to_team", 126 }, 127 SchemeManaged: false, 128 } 129 130 _, err = s.Store().Role().Save(r1) 131 s.Nil(err) 132 133 r2 := &model.Role{ 134 Name: model.NewId(), 135 DisplayName: model.NewId(), 136 Description: model.NewId(), 137 Permissions: []string{ 138 "invite_user", 139 "create_public_channel", 140 "add_user_to_team", 141 }, 142 SchemeManaged: false, 143 } 144 _, err = s.Store().Role().Save(r2) 145 s.Nil(err) 146 147 data, err := s.Store().Role().GetAll() 148 s.Nil(err) 149 s.Len(data, prevCount+2) 150 } 151 } 152 153 func (s *RoleStoreTestSuite) TestRoleStoreGetByName() { 154 // Save a role to test with. 155 r1 := &model.Role{ 156 Name: model.NewId(), 157 DisplayName: model.NewId(), 158 Description: model.NewId(), 159 Permissions: []string{ 160 "invite_user", 161 "create_public_channel", 162 "add_user_to_team", 163 }, 164 SchemeManaged: false, 165 } 166 167 d1, err := s.Store().Role().Save(r1) 168 s.Require().Nil(err) 169 s.Require().Len(d1.Id, 26) 170 171 // Get a valid role 172 d2, err := s.Store().Role().GetByName(context.Background(), d1.Name) 173 s.Require().Nil(err) 174 s.Require().Equal(d1.Id, d2.Id) 175 s.Require().Equal(r1.Name, d2.Name) 176 s.Require().Equal(r1.DisplayName, d2.DisplayName) 177 s.Require().Equal(r1.Description, d2.Description) 178 s.Require().Equal(r1.Permissions, d2.Permissions) 179 s.Require().Equal(r1.SchemeManaged, d2.SchemeManaged) 180 181 // Get an invalid role 182 _, err = s.Store().Role().GetByName(context.Background(), model.NewId()) 183 s.Require().NotNil(err) 184 }