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