github.com/xzl8028/xenia-server@v0.0.0-20190809101854-18450a97da63/store/sqlstore/channel_store_test.go (about) 1 // Copyright (c) 2015-present Xenia, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package sqlstore 5 6 import ( 7 "database/sql" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 12 "github.com/xzl8028/xenia-server/model" 13 "github.com/xzl8028/xenia-server/store/storetest" 14 ) 15 16 func TestChannelStore(t *testing.T) { 17 StoreTestWithSqlSupplier(t, storetest.TestChannelStore) 18 } 19 20 func TestChannelStoreInternalDataTypes(t *testing.T) { 21 t.Run("NewChannelMemberFromModel", func(t *testing.T) { testNewChannelMemberFromModel(t) }) 22 t.Run("ChannelMemberWithSchemeRolesToModel", func(t *testing.T) { testChannelMemberWithSchemeRolesToModel(t) }) 23 t.Run("AllChannelMemberProcess", func(t *testing.T) { testAllChannelMemberProcess(t) }) 24 } 25 26 func testNewChannelMemberFromModel(t *testing.T) { 27 m := model.ChannelMember{ 28 ChannelId: model.NewId(), 29 UserId: model.NewId(), 30 Roles: "channel_user channel_admin custom_role", 31 LastViewedAt: 12345, 32 MsgCount: 2, 33 MentionCount: 1, 34 NotifyProps: model.StringMap{"key": "value"}, 35 LastUpdateAt: 54321, 36 SchemeGuest: false, 37 SchemeUser: true, 38 SchemeAdmin: true, 39 ExplicitRoles: "custom_role", 40 } 41 42 db := NewChannelMemberFromModel(&m) 43 44 assert.Equal(t, m.ChannelId, db.ChannelId) 45 assert.Equal(t, m.UserId, db.UserId) 46 assert.Equal(t, m.LastViewedAt, db.LastViewedAt) 47 assert.Equal(t, m.MsgCount, db.MsgCount) 48 assert.Equal(t, m.MentionCount, db.MentionCount) 49 assert.Equal(t, m.NotifyProps, db.NotifyProps) 50 assert.Equal(t, m.LastUpdateAt, db.LastUpdateAt) 51 assert.Equal(t, true, db.SchemeGuest.Valid) 52 assert.Equal(t, true, db.SchemeUser.Valid) 53 assert.Equal(t, true, db.SchemeAdmin.Valid) 54 assert.Equal(t, m.SchemeGuest, db.SchemeGuest.Bool) 55 assert.Equal(t, m.SchemeUser, db.SchemeUser.Bool) 56 assert.Equal(t, m.SchemeAdmin, db.SchemeAdmin.Bool) 57 assert.Equal(t, m.ExplicitRoles, db.Roles) 58 } 59 60 func testChannelMemberWithSchemeRolesToModel(t *testing.T) { 61 t.Run("BasicProperties", func(t *testing.T) { 62 // Test all the non-roles properties here. 63 db := channelMemberWithSchemeRoles{ 64 ChannelId: model.NewId(), 65 UserId: model.NewId(), 66 Roles: "custom_role", 67 LastViewedAt: 12345, 68 MsgCount: 2, 69 MentionCount: 1, 70 NotifyProps: model.StringMap{"key": "value"}, 71 LastUpdateAt: 54321, 72 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 73 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 74 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 75 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 76 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 77 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 78 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 79 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 80 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 81 } 82 83 m := db.ToModel() 84 85 assert.Equal(t, db.ChannelId, m.ChannelId) 86 assert.Equal(t, db.UserId, m.UserId) 87 assert.Equal(t, "custom_role channel_user channel_admin", m.Roles) 88 assert.Equal(t, db.LastViewedAt, m.LastViewedAt) 89 assert.Equal(t, db.MsgCount, m.MsgCount) 90 assert.Equal(t, db.MentionCount, m.MentionCount) 91 assert.Equal(t, db.NotifyProps, m.NotifyProps) 92 assert.Equal(t, db.LastUpdateAt, m.LastUpdateAt) 93 assert.Equal(t, db.SchemeGuest.Bool, m.SchemeGuest) 94 assert.Equal(t, db.SchemeUser.Bool, m.SchemeUser) 95 assert.Equal(t, db.SchemeAdmin.Bool, m.SchemeAdmin) 96 assert.Equal(t, db.Roles, m.ExplicitRoles) 97 }) 98 99 // Example data *before* the Phase 2 migration has taken place. 100 t.Run("Unmigrated_NoScheme_User", func(t *testing.T) { 101 db := channelMemberWithSchemeRoles{ 102 Roles: "channel_user", 103 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 104 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 105 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 106 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 107 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 108 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 109 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 110 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 111 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 112 } 113 114 cm := db.ToModel() 115 116 assert.Equal(t, "channel_user", cm.Roles) 117 assert.Equal(t, false, cm.SchemeGuest) 118 assert.Equal(t, true, cm.SchemeUser) 119 assert.Equal(t, false, cm.SchemeAdmin) 120 assert.Equal(t, "", cm.ExplicitRoles) 121 }) 122 123 t.Run("Unmigrated_NoScheme_Admin", func(t *testing.T) { 124 db := channelMemberWithSchemeRoles{ 125 Roles: "channel_admin channel_user", 126 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 127 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 128 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 129 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 130 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 131 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 132 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 133 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 134 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 135 } 136 137 cm := db.ToModel() 138 139 assert.Equal(t, "channel_admin channel_user", cm.Roles) 140 assert.Equal(t, false, cm.SchemeGuest) 141 assert.Equal(t, true, cm.SchemeUser) 142 assert.Equal(t, true, cm.SchemeAdmin) 143 assert.Equal(t, "", cm.ExplicitRoles) 144 }) 145 146 t.Run("Unmigrated_NoScheme_CustomRole", func(t *testing.T) { 147 db := channelMemberWithSchemeRoles{ 148 Roles: "custom_role", 149 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 150 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 151 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 152 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 153 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 154 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 155 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 156 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 157 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 158 } 159 160 cm := db.ToModel() 161 162 assert.Equal(t, "custom_role", cm.Roles) 163 assert.Equal(t, false, cm.SchemeUser) 164 assert.Equal(t, false, cm.SchemeAdmin) 165 assert.Equal(t, "custom_role", cm.ExplicitRoles) 166 }) 167 168 t.Run("Unmigrated_NoScheme_UserAndCustomRole", func(t *testing.T) { 169 db := channelMemberWithSchemeRoles{ 170 Roles: "channel_user custom_role", 171 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 172 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 173 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 174 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 175 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 176 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 177 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 178 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 179 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 180 } 181 182 cm := db.ToModel() 183 184 assert.Equal(t, "channel_user custom_role", cm.Roles) 185 assert.Equal(t, false, cm.SchemeGuest) 186 assert.Equal(t, true, cm.SchemeUser) 187 assert.Equal(t, false, cm.SchemeAdmin) 188 assert.Equal(t, "custom_role", cm.ExplicitRoles) 189 }) 190 191 t.Run("Unmigrated_NoScheme_AdminAndCustomRole", func(t *testing.T) { 192 db := channelMemberWithSchemeRoles{ 193 Roles: "channel_user channel_admin custom_role", 194 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 195 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 196 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 197 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 198 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 199 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 200 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 201 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 202 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 203 } 204 205 cm := db.ToModel() 206 207 assert.Equal(t, "channel_user channel_admin custom_role", cm.Roles) 208 assert.Equal(t, false, cm.SchemeGuest) 209 assert.Equal(t, true, cm.SchemeUser) 210 assert.Equal(t, true, cm.SchemeAdmin) 211 assert.Equal(t, "custom_role", cm.ExplicitRoles) 212 }) 213 214 t.Run("Unmigrated_NoScheme_NoRoles", func(t *testing.T) { 215 db := channelMemberWithSchemeRoles{ 216 Roles: "", 217 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 218 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 219 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 220 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 221 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 222 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 223 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 224 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 225 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 226 } 227 228 cm := db.ToModel() 229 230 assert.Equal(t, "", cm.Roles) 231 assert.Equal(t, false, cm.SchemeGuest) 232 assert.Equal(t, false, cm.SchemeUser) 233 assert.Equal(t, false, cm.SchemeAdmin) 234 assert.Equal(t, "", cm.ExplicitRoles) 235 }) 236 237 // Example data *after* the Phase 2 migration has taken place. 238 t.Run("Migrated_NoScheme_User", func(t *testing.T) { 239 db := channelMemberWithSchemeRoles{ 240 Roles: "", 241 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 242 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 243 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 244 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 245 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 246 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 247 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 248 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 249 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 250 } 251 252 cm := db.ToModel() 253 254 assert.Equal(t, "channel_user", cm.Roles) 255 assert.Equal(t, false, cm.SchemeGuest) 256 assert.Equal(t, true, cm.SchemeUser) 257 assert.Equal(t, false, cm.SchemeAdmin) 258 assert.Equal(t, "", cm.ExplicitRoles) 259 }) 260 261 t.Run("Migrated_NoScheme_Admin", func(t *testing.T) { 262 db := channelMemberWithSchemeRoles{ 263 Roles: "", 264 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 265 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 266 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 267 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 268 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 269 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 270 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 271 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 272 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 273 } 274 275 cm := db.ToModel() 276 277 assert.Equal(t, "channel_user channel_admin", cm.Roles) 278 assert.Equal(t, false, cm.SchemeGuest) 279 assert.Equal(t, true, cm.SchemeUser) 280 assert.Equal(t, true, cm.SchemeAdmin) 281 assert.Equal(t, "", cm.ExplicitRoles) 282 }) 283 284 t.Run("Migrated_NoScheme_Guest", func(t *testing.T) { 285 db := channelMemberWithSchemeRoles{ 286 Roles: "", 287 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 288 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 289 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 290 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 291 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 292 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 293 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 294 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 295 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 296 } 297 298 cm := db.ToModel() 299 300 assert.Equal(t, "channel_guest", cm.Roles) 301 assert.Equal(t, true, cm.SchemeGuest) 302 assert.Equal(t, false, cm.SchemeUser) 303 assert.Equal(t, false, cm.SchemeAdmin) 304 assert.Equal(t, "", cm.ExplicitRoles) 305 }) 306 307 t.Run("Migrated_NoScheme_CustomRole", func(t *testing.T) { 308 db := channelMemberWithSchemeRoles{ 309 Roles: "custom_role", 310 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 311 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 312 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 313 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 314 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 315 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 316 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 317 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 318 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 319 } 320 321 cm := db.ToModel() 322 323 assert.Equal(t, "custom_role", cm.Roles) 324 assert.Equal(t, false, cm.SchemeGuest) 325 assert.Equal(t, false, cm.SchemeUser) 326 assert.Equal(t, false, cm.SchemeAdmin) 327 assert.Equal(t, "custom_role", cm.ExplicitRoles) 328 }) 329 330 t.Run("Migrated_NoScheme_UserAndCustomRole", func(t *testing.T) { 331 db := channelMemberWithSchemeRoles{ 332 Roles: "custom_role", 333 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 334 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 335 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 336 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 337 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 338 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 339 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 340 } 341 342 cm := db.ToModel() 343 344 assert.Equal(t, "custom_role channel_user", cm.Roles) 345 assert.Equal(t, false, cm.SchemeGuest) 346 assert.Equal(t, true, cm.SchemeUser) 347 assert.Equal(t, false, cm.SchemeAdmin) 348 assert.Equal(t, "custom_role", cm.ExplicitRoles) 349 }) 350 351 t.Run("Migrated_NoScheme_AdminAndCustomRole", func(t *testing.T) { 352 db := channelMemberWithSchemeRoles{ 353 Roles: "custom_role", 354 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 355 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 356 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 357 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 358 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 359 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 360 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 361 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 362 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 363 } 364 365 cm := db.ToModel() 366 367 assert.Equal(t, "custom_role channel_user channel_admin", cm.Roles) 368 assert.Equal(t, false, cm.SchemeGuest) 369 assert.Equal(t, true, cm.SchemeUser) 370 assert.Equal(t, true, cm.SchemeAdmin) 371 assert.Equal(t, "custom_role", cm.ExplicitRoles) 372 }) 373 374 t.Run("Migrated_NoScheme_GuestAndCustomRole", func(t *testing.T) { 375 db := channelMemberWithSchemeRoles{ 376 Roles: "custom_role", 377 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 378 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 379 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 380 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 381 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 382 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 383 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 384 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 385 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 386 } 387 388 cm := db.ToModel() 389 390 assert.Equal(t, "custom_role channel_guest", cm.Roles) 391 assert.Equal(t, true, cm.SchemeGuest) 392 assert.Equal(t, false, cm.SchemeUser) 393 assert.Equal(t, false, cm.SchemeAdmin) 394 assert.Equal(t, "custom_role", cm.ExplicitRoles) 395 }) 396 397 t.Run("Migrated_NoScheme_NoRoles", func(t *testing.T) { 398 db := channelMemberWithSchemeRoles{ 399 Roles: "", 400 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 401 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 402 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 403 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 404 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 405 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 406 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 407 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 408 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 409 } 410 411 cm := db.ToModel() 412 413 assert.Equal(t, "", cm.Roles) 414 assert.Equal(t, false, cm.SchemeGuest) 415 assert.Equal(t, false, cm.SchemeUser) 416 assert.Equal(t, false, cm.SchemeAdmin) 417 assert.Equal(t, "", cm.ExplicitRoles) 418 }) 419 420 // Example data with a channel scheme. 421 t.Run("Migrated_ChannelScheme_User", func(t *testing.T) { 422 db := channelMemberWithSchemeRoles{ 423 Roles: "", 424 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 425 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 426 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 427 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 428 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 429 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 430 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 431 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 432 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 433 } 434 435 cm := db.ToModel() 436 437 assert.Equal(t, "cscheme_user", cm.Roles) 438 assert.Equal(t, false, cm.SchemeGuest) 439 assert.Equal(t, true, cm.SchemeUser) 440 assert.Equal(t, false, cm.SchemeAdmin) 441 assert.Equal(t, "", cm.ExplicitRoles) 442 }) 443 444 t.Run("Migrated_ChannelScheme_Admin", func(t *testing.T) { 445 db := channelMemberWithSchemeRoles{ 446 Roles: "", 447 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 448 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 449 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 450 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 451 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 452 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 453 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 454 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 455 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 456 } 457 458 cm := db.ToModel() 459 460 assert.Equal(t, "cscheme_user cscheme_admin", cm.Roles) 461 assert.Equal(t, false, cm.SchemeGuest) 462 assert.Equal(t, true, cm.SchemeUser) 463 assert.Equal(t, true, cm.SchemeAdmin) 464 assert.Equal(t, "", cm.ExplicitRoles) 465 }) 466 467 t.Run("Migrated_ChannelScheme_Guest", func(t *testing.T) { 468 db := channelMemberWithSchemeRoles{ 469 Roles: "", 470 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 471 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 472 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 473 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 474 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 475 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 476 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 477 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 478 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 479 } 480 481 cm := db.ToModel() 482 483 assert.Equal(t, "cscheme_guest", cm.Roles) 484 assert.Equal(t, true, cm.SchemeGuest) 485 assert.Equal(t, false, cm.SchemeUser) 486 assert.Equal(t, false, cm.SchemeAdmin) 487 assert.Equal(t, "", cm.ExplicitRoles) 488 }) 489 490 t.Run("Migrated_ChannelScheme_CustomRole", func(t *testing.T) { 491 db := channelMemberWithSchemeRoles{ 492 Roles: "custom_role", 493 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 494 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 495 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 496 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 497 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 498 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 499 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 500 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 501 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 502 } 503 504 cm := db.ToModel() 505 506 assert.Equal(t, "custom_role", cm.Roles) 507 assert.Equal(t, false, cm.SchemeGuest) 508 assert.Equal(t, false, cm.SchemeUser) 509 assert.Equal(t, false, cm.SchemeAdmin) 510 assert.Equal(t, "custom_role", cm.ExplicitRoles) 511 }) 512 513 t.Run("Migrated_ChannelScheme_UserAndCustomRole", func(t *testing.T) { 514 db := channelMemberWithSchemeRoles{ 515 Roles: "custom_role", 516 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 517 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 518 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 519 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 520 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 521 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 522 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 523 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 524 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 525 } 526 527 cm := db.ToModel() 528 529 assert.Equal(t, "custom_role cscheme_user", cm.Roles) 530 assert.Equal(t, false, cm.SchemeGuest) 531 assert.Equal(t, true, cm.SchemeUser) 532 assert.Equal(t, false, cm.SchemeAdmin) 533 assert.Equal(t, "custom_role", cm.ExplicitRoles) 534 }) 535 536 t.Run("Migrated_ChannelScheme_AdminAndCustomRole", func(t *testing.T) { 537 db := channelMemberWithSchemeRoles{ 538 Roles: "custom_role", 539 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 540 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 541 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 542 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 543 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 544 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 545 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 546 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 547 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 548 } 549 550 cm := db.ToModel() 551 552 assert.Equal(t, "custom_role cscheme_user cscheme_admin", cm.Roles) 553 assert.Equal(t, false, cm.SchemeGuest) 554 assert.Equal(t, true, cm.SchemeUser) 555 assert.Equal(t, true, cm.SchemeAdmin) 556 assert.Equal(t, "custom_role", cm.ExplicitRoles) 557 }) 558 559 t.Run("Migrated_ChannelScheme_GuestAndCustomRole", func(t *testing.T) { 560 db := channelMemberWithSchemeRoles{ 561 Roles: "custom_role", 562 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 563 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 564 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 565 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 566 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 567 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 568 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 569 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 570 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 571 } 572 573 cm := db.ToModel() 574 575 assert.Equal(t, "custom_role cscheme_guest", cm.Roles) 576 assert.Equal(t, true, cm.SchemeGuest) 577 assert.Equal(t, false, cm.SchemeUser) 578 assert.Equal(t, false, cm.SchemeAdmin) 579 assert.Equal(t, "custom_role", cm.ExplicitRoles) 580 }) 581 582 t.Run("Migrated_ChannelScheme_NoRoles", func(t *testing.T) { 583 db := channelMemberWithSchemeRoles{ 584 Roles: "", 585 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 586 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 587 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 588 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 589 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 590 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 591 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 592 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 593 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 594 } 595 596 cm := db.ToModel() 597 598 assert.Equal(t, "", cm.Roles) 599 assert.Equal(t, false, cm.SchemeGuest) 600 assert.Equal(t, false, cm.SchemeUser) 601 assert.Equal(t, false, cm.SchemeAdmin) 602 assert.Equal(t, "", cm.ExplicitRoles) 603 }) 604 605 // Example data with a team scheme. 606 t.Run("Migrated_TeamScheme_User", func(t *testing.T) { 607 db := channelMemberWithSchemeRoles{ 608 Roles: "", 609 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 610 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 611 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 612 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 613 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 614 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 615 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 616 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 617 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 618 } 619 620 cm := db.ToModel() 621 622 assert.Equal(t, "tscheme_channeluser", cm.Roles) 623 assert.Equal(t, false, cm.SchemeGuest) 624 assert.Equal(t, true, cm.SchemeUser) 625 assert.Equal(t, false, cm.SchemeAdmin) 626 assert.Equal(t, "", cm.ExplicitRoles) 627 }) 628 629 t.Run("Migrated_TeamScheme_Admin", func(t *testing.T) { 630 db := channelMemberWithSchemeRoles{ 631 Roles: "", 632 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 633 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 634 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 635 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 636 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 637 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 638 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 639 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 640 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 641 } 642 643 cm := db.ToModel() 644 645 assert.Equal(t, "tscheme_channeluser tscheme_channeladmin", cm.Roles) 646 assert.Equal(t, false, cm.SchemeGuest) 647 assert.Equal(t, true, cm.SchemeUser) 648 assert.Equal(t, true, cm.SchemeAdmin) 649 assert.Equal(t, "", cm.ExplicitRoles) 650 }) 651 652 t.Run("Migrated_TeamScheme_Guest", func(t *testing.T) { 653 db := channelMemberWithSchemeRoles{ 654 Roles: "", 655 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 656 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 657 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 658 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 659 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 660 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 661 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 662 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 663 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 664 } 665 666 cm := db.ToModel() 667 668 assert.Equal(t, "tscheme_channelguest", cm.Roles) 669 assert.Equal(t, true, cm.SchemeGuest) 670 assert.Equal(t, false, cm.SchemeUser) 671 assert.Equal(t, false, cm.SchemeAdmin) 672 assert.Equal(t, "", cm.ExplicitRoles) 673 }) 674 675 t.Run("Migrated_TeamScheme_CustomRole", func(t *testing.T) { 676 db := channelMemberWithSchemeRoles{ 677 Roles: "custom_role", 678 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 679 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 680 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 681 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 682 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 683 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 684 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 685 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 686 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 687 } 688 689 cm := db.ToModel() 690 691 assert.Equal(t, "custom_role", cm.Roles) 692 assert.Equal(t, false, cm.SchemeGuest) 693 assert.Equal(t, false, cm.SchemeUser) 694 assert.Equal(t, false, cm.SchemeAdmin) 695 assert.Equal(t, "custom_role", cm.ExplicitRoles) 696 }) 697 698 t.Run("Migrated_TeamScheme_UserAndCustomRole", func(t *testing.T) { 699 db := channelMemberWithSchemeRoles{ 700 Roles: "custom_role", 701 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 702 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 703 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 704 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 705 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 706 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 707 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 708 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 709 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 710 } 711 712 cm := db.ToModel() 713 714 assert.Equal(t, "custom_role tscheme_channeluser", cm.Roles) 715 assert.Equal(t, false, cm.SchemeGuest) 716 assert.Equal(t, true, cm.SchemeUser) 717 assert.Equal(t, false, cm.SchemeAdmin) 718 assert.Equal(t, "custom_role", cm.ExplicitRoles) 719 }) 720 721 t.Run("Migrated_TeamScheme_AdminAndCustomRole", func(t *testing.T) { 722 db := channelMemberWithSchemeRoles{ 723 Roles: "custom_role", 724 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 725 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 726 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 727 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 728 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 729 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 730 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 731 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 732 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 733 } 734 735 cm := db.ToModel() 736 737 assert.Equal(t, "custom_role tscheme_channeluser tscheme_channeladmin", cm.Roles) 738 assert.Equal(t, false, cm.SchemeGuest) 739 assert.Equal(t, true, cm.SchemeUser) 740 assert.Equal(t, true, cm.SchemeAdmin) 741 assert.Equal(t, "custom_role", cm.ExplicitRoles) 742 }) 743 744 t.Run("Migrated_TeamScheme_GuestAndCustomRole", func(t *testing.T) { 745 db := channelMemberWithSchemeRoles{ 746 Roles: "custom_role", 747 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 748 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 749 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 750 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 751 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 752 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 753 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 754 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 755 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 756 } 757 758 cm := db.ToModel() 759 760 assert.Equal(t, "custom_role tscheme_channelguest", cm.Roles) 761 assert.Equal(t, true, cm.SchemeGuest) 762 assert.Equal(t, false, cm.SchemeUser) 763 assert.Equal(t, false, cm.SchemeAdmin) 764 assert.Equal(t, "custom_role", cm.ExplicitRoles) 765 }) 766 767 t.Run("Migrated_TeamScheme_NoRoles", func(t *testing.T) { 768 db := channelMemberWithSchemeRoles{ 769 Roles: "", 770 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 771 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 772 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 773 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 774 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 775 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 776 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 777 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 778 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 779 } 780 781 cm := db.ToModel() 782 783 assert.Equal(t, "", cm.Roles) 784 assert.Equal(t, false, cm.SchemeGuest) 785 assert.Equal(t, false, cm.SchemeUser) 786 assert.Equal(t, false, cm.SchemeAdmin) 787 assert.Equal(t, "", cm.ExplicitRoles) 788 }) 789 790 // Example data with a team and channel scheme. 791 t.Run("Migrated_TeamAndChannelScheme_User", func(t *testing.T) { 792 db := channelMemberWithSchemeRoles{ 793 Roles: "", 794 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 795 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 796 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 797 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 798 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 799 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 800 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 801 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 802 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 803 } 804 805 cm := db.ToModel() 806 807 assert.Equal(t, "cscheme_user", cm.Roles) 808 assert.Equal(t, false, cm.SchemeGuest) 809 assert.Equal(t, true, cm.SchemeUser) 810 assert.Equal(t, false, cm.SchemeAdmin) 811 assert.Equal(t, "", cm.ExplicitRoles) 812 }) 813 814 t.Run("Migrated_TeamAndChannelScheme_Admin", func(t *testing.T) { 815 db := channelMemberWithSchemeRoles{ 816 Roles: "", 817 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 818 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 819 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 820 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 821 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 822 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 823 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 824 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 825 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 826 } 827 828 cm := db.ToModel() 829 830 assert.Equal(t, "cscheme_user cscheme_admin", cm.Roles) 831 assert.Equal(t, false, cm.SchemeGuest) 832 assert.Equal(t, true, cm.SchemeUser) 833 assert.Equal(t, true, cm.SchemeAdmin) 834 assert.Equal(t, "", cm.ExplicitRoles) 835 }) 836 837 t.Run("Migrated_TeamAndChannelScheme_Guest", func(t *testing.T) { 838 db := channelMemberWithSchemeRoles{ 839 Roles: "", 840 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 841 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 842 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 843 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 844 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 845 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 846 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 847 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 848 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 849 } 850 851 cm := db.ToModel() 852 853 assert.Equal(t, "cscheme_guest", cm.Roles) 854 assert.Equal(t, true, cm.SchemeGuest) 855 assert.Equal(t, false, cm.SchemeUser) 856 assert.Equal(t, false, cm.SchemeAdmin) 857 assert.Equal(t, "", cm.ExplicitRoles) 858 }) 859 860 t.Run("Migrated_TeamAndChannelScheme_CustomRole", func(t *testing.T) { 861 db := channelMemberWithSchemeRoles{ 862 Roles: "custom_role", 863 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 864 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 865 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 866 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 867 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 868 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 869 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 870 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 871 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 872 } 873 874 cm := db.ToModel() 875 876 assert.Equal(t, "custom_role", cm.Roles) 877 assert.Equal(t, false, cm.SchemeGuest) 878 assert.Equal(t, false, cm.SchemeUser) 879 assert.Equal(t, false, cm.SchemeAdmin) 880 assert.Equal(t, "custom_role", cm.ExplicitRoles) 881 }) 882 883 t.Run("Migrated_TeamAndChannelScheme_UserAndCustomRole", func(t *testing.T) { 884 db := channelMemberWithSchemeRoles{ 885 Roles: "custom_role", 886 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 887 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 888 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 889 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 890 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 891 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 892 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 893 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 894 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 895 } 896 897 cm := db.ToModel() 898 899 assert.Equal(t, "custom_role cscheme_user", cm.Roles) 900 assert.Equal(t, false, cm.SchemeGuest) 901 assert.Equal(t, true, cm.SchemeUser) 902 assert.Equal(t, false, cm.SchemeAdmin) 903 assert.Equal(t, "custom_role", cm.ExplicitRoles) 904 }) 905 906 t.Run("Migrated_TeamAndChannelScheme_AdminAndCustomRole", func(t *testing.T) { 907 db := channelMemberWithSchemeRoles{ 908 Roles: "custom_role", 909 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 910 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 911 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 912 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 913 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 914 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 915 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 916 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 917 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 918 } 919 920 cm := db.ToModel() 921 922 assert.Equal(t, "custom_role cscheme_user cscheme_admin", cm.Roles) 923 assert.Equal(t, false, cm.SchemeGuest) 924 assert.Equal(t, true, cm.SchemeUser) 925 assert.Equal(t, true, cm.SchemeAdmin) 926 assert.Equal(t, "custom_role", cm.ExplicitRoles) 927 }) 928 929 t.Run("Migrated_TeamAndChannelScheme_GuestAndCustomRole", func(t *testing.T) { 930 db := channelMemberWithSchemeRoles{ 931 Roles: "custom_role", 932 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 933 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 934 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 935 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 936 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 937 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 938 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 939 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 940 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 941 } 942 943 cm := db.ToModel() 944 945 assert.Equal(t, "custom_role cscheme_guest", cm.Roles) 946 assert.Equal(t, true, cm.SchemeGuest) 947 assert.Equal(t, false, cm.SchemeUser) 948 assert.Equal(t, false, cm.SchemeAdmin) 949 assert.Equal(t, "custom_role", cm.ExplicitRoles) 950 }) 951 952 t.Run("Migrated_TeamAndChannelScheme_NoRoles", func(t *testing.T) { 953 db := channelMemberWithSchemeRoles{ 954 Roles: "", 955 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 956 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 957 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 958 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 959 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 960 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 961 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 962 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 963 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 964 } 965 966 cm := db.ToModel() 967 968 assert.Equal(t, "", cm.Roles) 969 assert.Equal(t, false, cm.SchemeGuest) 970 assert.Equal(t, false, cm.SchemeUser) 971 assert.Equal(t, false, cm.SchemeAdmin) 972 assert.Equal(t, "", cm.ExplicitRoles) 973 }) 974 } 975 976 func testAllChannelMemberProcess(t *testing.T) { 977 t.Run("Unmigrated_User", func(t *testing.T) { 978 db := allChannelMember{ 979 Roles: "channel_user", 980 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 981 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 982 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 983 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 984 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 985 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 986 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 987 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 988 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 989 } 990 991 _, roles := db.Process() 992 993 assert.Equal(t, "channel_user", roles) 994 }) 995 996 t.Run("Unmigrated_Admin", func(t *testing.T) { 997 db := allChannelMember{ 998 Roles: "channel_user channel_admin", 999 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 1000 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 1001 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 1002 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1003 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1004 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1005 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1006 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1007 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1008 } 1009 1010 _, roles := db.Process() 1011 1012 assert.Equal(t, "channel_user channel_admin", roles) 1013 }) 1014 1015 t.Run("Unmigrated_None", func(t *testing.T) { 1016 db := allChannelMember{ 1017 Roles: "", 1018 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 1019 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 1020 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 1021 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1022 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1023 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1024 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1025 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1026 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1027 } 1028 1029 _, roles := db.Process() 1030 1031 assert.Equal(t, "", roles) 1032 }) 1033 1034 t.Run("Unmigrated_Custom", func(t *testing.T) { 1035 db := allChannelMember{ 1036 Roles: "custom", 1037 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 1038 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 1039 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 1040 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1041 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1042 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1043 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1044 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1045 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1046 } 1047 1048 _, roles := db.Process() 1049 1050 assert.Equal(t, "custom", roles) 1051 }) 1052 1053 t.Run("MigratedNoScheme_User", func(t *testing.T) { 1054 db := allChannelMember{ 1055 Roles: "", 1056 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1057 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1058 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1059 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1060 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1061 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1062 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1063 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1064 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1065 } 1066 1067 _, roles := db.Process() 1068 1069 assert.Equal(t, "channel_user", roles) 1070 }) 1071 1072 t.Run("MigratedNoScheme_Admin", func(t *testing.T) { 1073 db := allChannelMember{ 1074 Roles: "", 1075 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1076 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1077 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 1078 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1079 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1080 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1081 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1082 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1083 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1084 } 1085 1086 _, roles := db.Process() 1087 1088 assert.Equal(t, "channel_user channel_admin", roles) 1089 }) 1090 1091 t.Run("MigratedNoScheme_Guest", func(t *testing.T) { 1092 db := allChannelMember{ 1093 Roles: "", 1094 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 1095 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1096 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1097 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1098 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1099 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1100 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1101 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1102 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1103 } 1104 1105 _, roles := db.Process() 1106 1107 assert.Equal(t, "channel_guest", roles) 1108 }) 1109 1110 t.Run("MigratedNoScheme_None", func(t *testing.T) { 1111 db := allChannelMember{ 1112 Roles: "", 1113 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1114 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1115 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1116 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1117 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1118 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1119 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1120 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1121 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1122 } 1123 1124 _, roles := db.Process() 1125 1126 assert.Equal(t, "", roles) 1127 }) 1128 1129 t.Run("MigratedChannelScheme_User", func(t *testing.T) { 1130 db := allChannelMember{ 1131 Roles: "", 1132 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1133 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1134 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1135 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1136 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1137 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1138 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1139 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1140 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1141 } 1142 1143 _, roles := db.Process() 1144 1145 assert.Equal(t, "cscheme_user", roles) 1146 }) 1147 1148 t.Run("MigratedChannelScheme_Admin", func(t *testing.T) { 1149 db := allChannelMember{ 1150 Roles: "", 1151 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1152 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1153 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 1154 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1155 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1156 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1157 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1158 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1159 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1160 } 1161 1162 _, roles := db.Process() 1163 1164 assert.Equal(t, "cscheme_user cscheme_admin", roles) 1165 }) 1166 1167 t.Run("MigratedChannelScheme_Guest", func(t *testing.T) { 1168 db := allChannelMember{ 1169 Roles: "", 1170 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 1171 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1172 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1173 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1174 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1175 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1176 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1177 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1178 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1179 } 1180 1181 _, roles := db.Process() 1182 1183 assert.Equal(t, "cscheme_guest", roles) 1184 }) 1185 1186 t.Run("MigratedChannelScheme_None", func(t *testing.T) { 1187 db := allChannelMember{ 1188 Roles: "", 1189 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1190 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1191 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1192 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1193 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1194 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1195 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1196 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1197 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1198 } 1199 1200 _, roles := db.Process() 1201 1202 assert.Equal(t, "", roles) 1203 }) 1204 1205 t.Run("MigratedTeamScheme_User", func(t *testing.T) { 1206 db := allChannelMember{ 1207 Roles: "", 1208 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1209 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1210 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1211 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1212 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1213 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1214 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1215 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1216 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1217 } 1218 1219 _, roles := db.Process() 1220 1221 assert.Equal(t, "tscheme_channeluser", roles) 1222 }) 1223 1224 t.Run("MigratedTeamScheme_Admin", func(t *testing.T) { 1225 db := allChannelMember{ 1226 Roles: "", 1227 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1228 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1229 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 1230 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1231 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1232 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1233 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1234 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1235 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1236 } 1237 1238 _, roles := db.Process() 1239 1240 assert.Equal(t, "tscheme_channeluser tscheme_channeladmin", roles) 1241 }) 1242 1243 t.Run("MigratedTeamScheme_Guest", func(t *testing.T) { 1244 db := allChannelMember{ 1245 Roles: "", 1246 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 1247 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1248 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1249 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1250 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1251 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1252 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1253 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1254 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1255 } 1256 1257 _, roles := db.Process() 1258 1259 assert.Equal(t, "tscheme_channelguest", roles) 1260 }) 1261 1262 t.Run("MigratedTeamScheme_None", func(t *testing.T) { 1263 db := allChannelMember{ 1264 Roles: "", 1265 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1266 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1267 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1268 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1269 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1270 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1271 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1272 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1273 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1274 } 1275 1276 _, roles := db.Process() 1277 1278 assert.Equal(t, "", roles) 1279 }) 1280 1281 t.Run("MigratedTeamAndChannelScheme_User", func(t *testing.T) { 1282 db := allChannelMember{ 1283 Roles: "", 1284 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1285 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1286 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1287 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1288 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1289 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1290 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1291 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1292 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1293 } 1294 1295 _, roles := db.Process() 1296 1297 assert.Equal(t, "cscheme_user", roles) 1298 }) 1299 1300 t.Run("MigratedTeamAndChannelScheme_Admin", func(t *testing.T) { 1301 db := allChannelMember{ 1302 Roles: "", 1303 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1304 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1305 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 1306 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1307 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1308 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1309 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1310 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1311 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1312 } 1313 1314 _, roles := db.Process() 1315 1316 assert.Equal(t, "cscheme_user cscheme_admin", roles) 1317 }) 1318 1319 t.Run("MigratedTeamAndChannelScheme_Guest", func(t *testing.T) { 1320 db := allChannelMember{ 1321 Roles: "", 1322 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 1323 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1324 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1325 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1326 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1327 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1328 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1329 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1330 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1331 } 1332 1333 _, roles := db.Process() 1334 1335 assert.Equal(t, "cscheme_guest", roles) 1336 }) 1337 1338 t.Run("MigratedTeamAndChannelScheme_None", func(t *testing.T) { 1339 db := allChannelMember{ 1340 Roles: "", 1341 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1342 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1343 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1344 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1345 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1346 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1347 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1348 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1349 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1350 } 1351 1352 _, roles := db.Process() 1353 1354 assert.Equal(t, "", roles) 1355 }) 1356 1357 t.Run("DeduplicationCheck", func(t *testing.T) { 1358 db := allChannelMember{ 1359 Roles: "channel_user", 1360 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1361 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1362 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1363 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1364 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1365 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1366 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1367 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1368 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1369 } 1370 1371 _, roles := db.Process() 1372 1373 assert.Equal(t, "channel_user", roles) 1374 }) 1375 }