github.com/haalcala/mattermost-server-change-repo@v0.0.0-20210713015153-16753fbeee5f/store/sqlstore/channel_store_test.go (about) 1 // Copyright (c) 2015-present Mattermost, 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 "github.com/stretchr/testify/require" 12 13 "github.com/mattermost/mattermost-server/v5/model" 14 "github.com/mattermost/mattermost-server/v5/store" 15 "github.com/mattermost/mattermost-server/v5/store/searchtest" 16 "github.com/mattermost/mattermost-server/v5/store/storetest" 17 ) 18 19 func TestChannelStore(t *testing.T) { 20 StoreTestWithSqlStore(t, storetest.TestChannelStore) 21 } 22 23 func TestSearchChannelStore(t *testing.T) { 24 StoreTestWithSearchTestEngine(t, searchtest.TestSearchChannelStore) 25 } 26 27 func 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{} 35 builder := s.channelSearchQuery("'or'1'=sleep(3))); -- -", opts, false) 36 query, _, err := builder.ToSql() 37 require.NoError(t, err) 38 assert.NotContains(t, query, "sleep") 39 }) 40 } 41 } 42 43 func 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 49 func 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, m.NotifyProps, db.NotifyProps) 73 assert.Equal(t, m.LastUpdateAt, db.LastUpdateAt) 74 assert.Equal(t, true, db.SchemeGuest.Valid) 75 assert.Equal(t, true, db.SchemeUser.Valid) 76 assert.Equal(t, true, db.SchemeAdmin.Valid) 77 assert.Equal(t, m.SchemeGuest, db.SchemeGuest.Bool) 78 assert.Equal(t, m.SchemeUser, db.SchemeUser.Bool) 79 assert.Equal(t, m.SchemeAdmin, db.SchemeAdmin.Bool) 80 assert.Equal(t, m.ExplicitRoles, db.Roles) 81 } 82 83 func testChannelMemberWithSchemeRolesToModel(t *testing.T) { 84 t.Run("BasicProperties", func(t *testing.T) { 85 // Test all the non-roles properties here. 86 db := channelMemberWithSchemeRoles{ 87 ChannelId: model.NewId(), 88 UserId: model.NewId(), 89 Roles: "custom_role", 90 LastViewedAt: 12345, 91 MsgCount: 2, 92 MentionCount: 1, 93 NotifyProps: model.StringMap{"key": "value"}, 94 LastUpdateAt: 54321, 95 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 96 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 97 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 98 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 99 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 100 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 101 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 102 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 103 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 104 } 105 106 m := db.ToModel() 107 108 assert.Equal(t, db.ChannelId, m.ChannelId) 109 assert.Equal(t, db.UserId, m.UserId) 110 assert.Equal(t, "custom_role channel_user channel_admin", m.Roles) 111 assert.Equal(t, db.LastViewedAt, m.LastViewedAt) 112 assert.Equal(t, db.MsgCount, m.MsgCount) 113 assert.Equal(t, db.MentionCount, m.MentionCount) 114 assert.Equal(t, db.NotifyProps, m.NotifyProps) 115 assert.Equal(t, db.LastUpdateAt, m.LastUpdateAt) 116 assert.Equal(t, db.SchemeGuest.Bool, m.SchemeGuest) 117 assert.Equal(t, db.SchemeUser.Bool, m.SchemeUser) 118 assert.Equal(t, db.SchemeAdmin.Bool, m.SchemeAdmin) 119 assert.Equal(t, db.Roles, m.ExplicitRoles) 120 }) 121 122 // Example data *before* the Phase 2 migration has taken place. 123 t.Run("Unmigrated_NoScheme_User", func(t *testing.T) { 124 db := channelMemberWithSchemeRoles{ 125 Roles: "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_user", cm.Roles) 140 assert.Equal(t, false, cm.SchemeGuest) 141 assert.Equal(t, true, cm.SchemeUser) 142 assert.Equal(t, false, cm.SchemeAdmin) 143 assert.Equal(t, "", cm.ExplicitRoles) 144 }) 145 146 t.Run("Unmigrated_NoScheme_Admin", func(t *testing.T) { 147 db := channelMemberWithSchemeRoles{ 148 Roles: "channel_admin channel_user", 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, "channel_user channel_admin", cm.Roles) 163 assert.Equal(t, false, cm.SchemeGuest) 164 assert.Equal(t, true, cm.SchemeUser) 165 assert.Equal(t, true, cm.SchemeAdmin) 166 assert.Equal(t, "", cm.ExplicitRoles) 167 }) 168 169 t.Run("Unmigrated_NoScheme_CustomRole", func(t *testing.T) { 170 db := channelMemberWithSchemeRoles{ 171 Roles: "custom_role", 172 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 173 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 174 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 175 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 176 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 177 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 178 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 179 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 180 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 181 } 182 183 cm := db.ToModel() 184 185 assert.Equal(t, "custom_role", cm.Roles) 186 assert.Equal(t, false, cm.SchemeUser) 187 assert.Equal(t, false, cm.SchemeAdmin) 188 assert.Equal(t, "custom_role", cm.ExplicitRoles) 189 }) 190 191 t.Run("Unmigrated_NoScheme_UserAndCustomRole", func(t *testing.T) { 192 db := channelMemberWithSchemeRoles{ 193 Roles: "channel_user 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, "custom_role channel_user", cm.Roles) 208 assert.Equal(t, false, cm.SchemeGuest) 209 assert.Equal(t, true, cm.SchemeUser) 210 assert.Equal(t, false, cm.SchemeAdmin) 211 assert.Equal(t, "custom_role", cm.ExplicitRoles) 212 }) 213 214 t.Run("Unmigrated_NoScheme_AdminAndCustomRole", func(t *testing.T) { 215 db := channelMemberWithSchemeRoles{ 216 Roles: "channel_user channel_admin custom_role", 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, "custom_role channel_user channel_admin", cm.Roles) 231 assert.Equal(t, false, cm.SchemeGuest) 232 assert.Equal(t, true, cm.SchemeUser) 233 assert.Equal(t, true, cm.SchemeAdmin) 234 assert.Equal(t, "custom_role", cm.ExplicitRoles) 235 }) 236 237 t.Run("Unmigrated_NoScheme_NoRoles", func(t *testing.T) { 238 db := channelMemberWithSchemeRoles{ 239 Roles: "", 240 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 241 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 242 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 243 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 244 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 245 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 246 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 247 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 248 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 249 } 250 251 cm := db.ToModel() 252 253 assert.Equal(t, "", cm.Roles) 254 assert.Equal(t, false, cm.SchemeGuest) 255 assert.Equal(t, false, cm.SchemeUser) 256 assert.Equal(t, false, cm.SchemeAdmin) 257 assert.Equal(t, "", cm.ExplicitRoles) 258 }) 259 260 // Example data *after* the Phase 2 migration has taken place. 261 t.Run("Migrated_NoScheme_User", 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: false}, 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", cm.Roles) 278 assert.Equal(t, false, cm.SchemeGuest) 279 assert.Equal(t, true, cm.SchemeUser) 280 assert.Equal(t, false, cm.SchemeAdmin) 281 assert.Equal(t, "", cm.ExplicitRoles) 282 }) 283 284 t.Run("Migrated_NoScheme_Admin", func(t *testing.T) { 285 db := channelMemberWithSchemeRoles{ 286 Roles: "", 287 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 288 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 289 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 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_user channel_admin", cm.Roles) 301 assert.Equal(t, false, cm.SchemeGuest) 302 assert.Equal(t, true, cm.SchemeUser) 303 assert.Equal(t, true, cm.SchemeAdmin) 304 assert.Equal(t, "", cm.ExplicitRoles) 305 }) 306 307 t.Run("Migrated_NoScheme_Guest", func(t *testing.T) { 308 db := channelMemberWithSchemeRoles{ 309 Roles: "", 310 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 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, "channel_guest", cm.Roles) 324 assert.Equal(t, true, cm.SchemeGuest) 325 assert.Equal(t, false, cm.SchemeUser) 326 assert.Equal(t, false, cm.SchemeAdmin) 327 assert.Equal(t, "", cm.ExplicitRoles) 328 }) 329 330 t.Run("Migrated_NoScheme_CustomRole", 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: false}, 335 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 336 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 337 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 338 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 339 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 340 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 341 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 342 } 343 344 cm := db.ToModel() 345 346 assert.Equal(t, "custom_role", cm.Roles) 347 assert.Equal(t, false, cm.SchemeGuest) 348 assert.Equal(t, false, cm.SchemeUser) 349 assert.Equal(t, false, cm.SchemeAdmin) 350 assert.Equal(t, "custom_role", cm.ExplicitRoles) 351 }) 352 353 t.Run("Migrated_NoScheme_UserAndCustomRole", func(t *testing.T) { 354 db := channelMemberWithSchemeRoles{ 355 Roles: "custom_role", 356 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 357 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 358 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 359 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 360 TeamSchemeDefaultAdminRole: 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", cm.Roles) 368 assert.Equal(t, false, cm.SchemeGuest) 369 assert.Equal(t, true, cm.SchemeUser) 370 assert.Equal(t, false, cm.SchemeAdmin) 371 assert.Equal(t, "custom_role", cm.ExplicitRoles) 372 }) 373 374 t.Run("Migrated_NoScheme_AdminAndCustomRole", func(t *testing.T) { 375 db := channelMemberWithSchemeRoles{ 376 Roles: "custom_role", 377 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 378 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 379 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 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_user channel_admin", cm.Roles) 391 assert.Equal(t, false, cm.SchemeGuest) 392 assert.Equal(t, true, cm.SchemeUser) 393 assert.Equal(t, true, cm.SchemeAdmin) 394 assert.Equal(t, "custom_role", cm.ExplicitRoles) 395 }) 396 397 t.Run("Migrated_NoScheme_GuestAndCustomRole", func(t *testing.T) { 398 db := channelMemberWithSchemeRoles{ 399 Roles: "custom_role", 400 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 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, "custom_role channel_guest", cm.Roles) 414 assert.Equal(t, true, cm.SchemeGuest) 415 assert.Equal(t, false, cm.SchemeUser) 416 assert.Equal(t, false, cm.SchemeAdmin) 417 assert.Equal(t, "custom_role", cm.ExplicitRoles) 418 }) 419 420 t.Run("Migrated_NoScheme_NoRoles", func(t *testing.T) { 421 db := channelMemberWithSchemeRoles{ 422 Roles: "", 423 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 424 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 425 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 426 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 427 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 428 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 429 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 430 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 431 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 432 } 433 434 cm := db.ToModel() 435 436 assert.Equal(t, "", cm.Roles) 437 assert.Equal(t, false, cm.SchemeGuest) 438 assert.Equal(t, false, cm.SchemeUser) 439 assert.Equal(t, false, cm.SchemeAdmin) 440 assert.Equal(t, "", cm.ExplicitRoles) 441 }) 442 443 // Example data with a channel scheme. 444 t.Run("Migrated_ChannelScheme_User", 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: false}, 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", cm.Roles) 461 assert.Equal(t, false, cm.SchemeGuest) 462 assert.Equal(t, true, cm.SchemeUser) 463 assert.Equal(t, false, cm.SchemeAdmin) 464 assert.Equal(t, "", cm.ExplicitRoles) 465 }) 466 467 t.Run("Migrated_ChannelScheme_Admin", func(t *testing.T) { 468 db := channelMemberWithSchemeRoles{ 469 Roles: "", 470 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 471 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 472 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 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_user cscheme_admin", cm.Roles) 484 assert.Equal(t, false, cm.SchemeGuest) 485 assert.Equal(t, true, cm.SchemeUser) 486 assert.Equal(t, true, cm.SchemeAdmin) 487 assert.Equal(t, "", cm.ExplicitRoles) 488 }) 489 490 t.Run("Migrated_ChannelScheme_Guest", func(t *testing.T) { 491 db := channelMemberWithSchemeRoles{ 492 Roles: "", 493 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 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, "cscheme_guest", cm.Roles) 507 assert.Equal(t, true, cm.SchemeGuest) 508 assert.Equal(t, false, cm.SchemeUser) 509 assert.Equal(t, false, cm.SchemeAdmin) 510 assert.Equal(t, "", cm.ExplicitRoles) 511 }) 512 513 t.Run("Migrated_ChannelScheme_CustomRole", 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: false}, 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", cm.Roles) 530 assert.Equal(t, false, cm.SchemeGuest) 531 assert.Equal(t, false, cm.SchemeUser) 532 assert.Equal(t, false, cm.SchemeAdmin) 533 assert.Equal(t, "custom_role", cm.ExplicitRoles) 534 }) 535 536 t.Run("Migrated_ChannelScheme_UserAndCustomRole", 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: false}, 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", cm.Roles) 553 assert.Equal(t, false, cm.SchemeGuest) 554 assert.Equal(t, true, cm.SchemeUser) 555 assert.Equal(t, false, cm.SchemeAdmin) 556 assert.Equal(t, "custom_role", cm.ExplicitRoles) 557 }) 558 559 t.Run("Migrated_ChannelScheme_AdminAndCustomRole", func(t *testing.T) { 560 db := channelMemberWithSchemeRoles{ 561 Roles: "custom_role", 562 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 563 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 564 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 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_user cscheme_admin", cm.Roles) 576 assert.Equal(t, false, cm.SchemeGuest) 577 assert.Equal(t, true, cm.SchemeUser) 578 assert.Equal(t, true, cm.SchemeAdmin) 579 assert.Equal(t, "custom_role", cm.ExplicitRoles) 580 }) 581 582 t.Run("Migrated_ChannelScheme_GuestAndCustomRole", func(t *testing.T) { 583 db := channelMemberWithSchemeRoles{ 584 Roles: "custom_role", 585 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 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, "custom_role cscheme_guest", cm.Roles) 599 assert.Equal(t, true, cm.SchemeGuest) 600 assert.Equal(t, false, cm.SchemeUser) 601 assert.Equal(t, false, cm.SchemeAdmin) 602 assert.Equal(t, "custom_role", cm.ExplicitRoles) 603 }) 604 605 t.Run("Migrated_ChannelScheme_NoRoles", func(t *testing.T) { 606 db := channelMemberWithSchemeRoles{ 607 Roles: "", 608 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 609 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 610 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 611 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 612 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 613 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 614 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 615 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 616 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 617 } 618 619 cm := db.ToModel() 620 621 assert.Equal(t, "", cm.Roles) 622 assert.Equal(t, false, cm.SchemeGuest) 623 assert.Equal(t, false, cm.SchemeUser) 624 assert.Equal(t, false, cm.SchemeAdmin) 625 assert.Equal(t, "", cm.ExplicitRoles) 626 }) 627 628 // Example data with a team scheme. 629 t.Run("Migrated_TeamScheme_User", 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: false}, 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", cm.Roles) 646 assert.Equal(t, false, cm.SchemeGuest) 647 assert.Equal(t, true, cm.SchemeUser) 648 assert.Equal(t, false, cm.SchemeAdmin) 649 assert.Equal(t, "", cm.ExplicitRoles) 650 }) 651 652 t.Run("Migrated_TeamScheme_Admin", func(t *testing.T) { 653 db := channelMemberWithSchemeRoles{ 654 Roles: "", 655 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 656 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 657 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 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_channeluser tscheme_channeladmin", cm.Roles) 669 assert.Equal(t, false, cm.SchemeGuest) 670 assert.Equal(t, true, cm.SchemeUser) 671 assert.Equal(t, true, cm.SchemeAdmin) 672 assert.Equal(t, "", cm.ExplicitRoles) 673 }) 674 675 t.Run("Migrated_TeamScheme_Guest", func(t *testing.T) { 676 db := channelMemberWithSchemeRoles{ 677 Roles: "", 678 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 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, "tscheme_channelguest", cm.Roles) 692 assert.Equal(t, true, cm.SchemeGuest) 693 assert.Equal(t, false, cm.SchemeUser) 694 assert.Equal(t, false, cm.SchemeAdmin) 695 assert.Equal(t, "", cm.ExplicitRoles) 696 }) 697 698 t.Run("Migrated_TeamScheme_CustomRole", 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: false}, 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", cm.Roles) 715 assert.Equal(t, false, cm.SchemeGuest) 716 assert.Equal(t, false, cm.SchemeUser) 717 assert.Equal(t, false, cm.SchemeAdmin) 718 assert.Equal(t, "custom_role", cm.ExplicitRoles) 719 }) 720 721 t.Run("Migrated_TeamScheme_UserAndCustomRole", 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: false}, 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", cm.Roles) 738 assert.Equal(t, false, cm.SchemeGuest) 739 assert.Equal(t, true, cm.SchemeUser) 740 assert.Equal(t, false, cm.SchemeAdmin) 741 assert.Equal(t, "custom_role", cm.ExplicitRoles) 742 }) 743 744 t.Run("Migrated_TeamScheme_AdminAndCustomRole", func(t *testing.T) { 745 db := channelMemberWithSchemeRoles{ 746 Roles: "custom_role", 747 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 748 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 749 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 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_channeluser tscheme_channeladmin", cm.Roles) 761 assert.Equal(t, false, cm.SchemeGuest) 762 assert.Equal(t, true, cm.SchemeUser) 763 assert.Equal(t, true, cm.SchemeAdmin) 764 assert.Equal(t, "custom_role", cm.ExplicitRoles) 765 }) 766 767 t.Run("Migrated_TeamScheme_GuestAndCustomRole", func(t *testing.T) { 768 db := channelMemberWithSchemeRoles{ 769 Roles: "custom_role", 770 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 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, "custom_role tscheme_channelguest", cm.Roles) 784 assert.Equal(t, true, cm.SchemeGuest) 785 assert.Equal(t, false, cm.SchemeUser) 786 assert.Equal(t, false, cm.SchemeAdmin) 787 assert.Equal(t, "custom_role", cm.ExplicitRoles) 788 }) 789 790 t.Run("Migrated_TeamScheme_NoRoles", func(t *testing.T) { 791 db := channelMemberWithSchemeRoles{ 792 Roles: "", 793 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 794 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 795 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 796 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 797 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 798 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 799 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 800 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 801 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 802 } 803 804 cm := db.ToModel() 805 806 assert.Equal(t, "", cm.Roles) 807 assert.Equal(t, false, cm.SchemeGuest) 808 assert.Equal(t, false, cm.SchemeUser) 809 assert.Equal(t, false, cm.SchemeAdmin) 810 assert.Equal(t, "", cm.ExplicitRoles) 811 }) 812 813 // Example data with a team and channel scheme. 814 t.Run("Migrated_TeamAndChannelScheme_User", 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: false}, 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", cm.Roles) 831 assert.Equal(t, false, cm.SchemeGuest) 832 assert.Equal(t, true, cm.SchemeUser) 833 assert.Equal(t, false, cm.SchemeAdmin) 834 assert.Equal(t, "", cm.ExplicitRoles) 835 }) 836 837 t.Run("Migrated_TeamAndChannelScheme_Admin", func(t *testing.T) { 838 db := channelMemberWithSchemeRoles{ 839 Roles: "", 840 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 841 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 842 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 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_user cscheme_admin", cm.Roles) 854 assert.Equal(t, false, cm.SchemeGuest) 855 assert.Equal(t, true, cm.SchemeUser) 856 assert.Equal(t, true, cm.SchemeAdmin) 857 assert.Equal(t, "", cm.ExplicitRoles) 858 }) 859 860 t.Run("Migrated_TeamAndChannelScheme_Guest", func(t *testing.T) { 861 db := channelMemberWithSchemeRoles{ 862 Roles: "", 863 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 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, "cscheme_guest", cm.Roles) 877 assert.Equal(t, true, cm.SchemeGuest) 878 assert.Equal(t, false, cm.SchemeUser) 879 assert.Equal(t, false, cm.SchemeAdmin) 880 assert.Equal(t, "", cm.ExplicitRoles) 881 }) 882 883 t.Run("Migrated_TeamAndChannelScheme_CustomRole", 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: false}, 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", cm.Roles) 900 assert.Equal(t, false, cm.SchemeGuest) 901 assert.Equal(t, false, cm.SchemeUser) 902 assert.Equal(t, false, cm.SchemeAdmin) 903 assert.Equal(t, "custom_role", cm.ExplicitRoles) 904 }) 905 906 t.Run("Migrated_TeamAndChannelScheme_UserAndCustomRole", 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: false}, 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", cm.Roles) 923 assert.Equal(t, false, cm.SchemeGuest) 924 assert.Equal(t, true, cm.SchemeUser) 925 assert.Equal(t, false, cm.SchemeAdmin) 926 assert.Equal(t, "custom_role", cm.ExplicitRoles) 927 }) 928 929 t.Run("Migrated_TeamAndChannelScheme_AdminAndCustomRole", func(t *testing.T) { 930 db := channelMemberWithSchemeRoles{ 931 Roles: "custom_role", 932 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 933 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 934 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 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_user cscheme_admin", cm.Roles) 946 assert.Equal(t, false, cm.SchemeGuest) 947 assert.Equal(t, true, cm.SchemeUser) 948 assert.Equal(t, true, cm.SchemeAdmin) 949 assert.Equal(t, "custom_role", cm.ExplicitRoles) 950 }) 951 952 t.Run("Migrated_TeamAndChannelScheme_GuestAndCustomRole", func(t *testing.T) { 953 db := channelMemberWithSchemeRoles{ 954 Roles: "custom_role", 955 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 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, "custom_role cscheme_guest", cm.Roles) 969 assert.Equal(t, true, cm.SchemeGuest) 970 assert.Equal(t, false, cm.SchemeUser) 971 assert.Equal(t, false, cm.SchemeAdmin) 972 assert.Equal(t, "custom_role", cm.ExplicitRoles) 973 }) 974 975 t.Run("Migrated_TeamAndChannelScheme_NoRoles", func(t *testing.T) { 976 db := channelMemberWithSchemeRoles{ 977 Roles: "", 978 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 979 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 980 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 981 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 982 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 983 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 984 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 985 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 986 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 987 } 988 989 cm := db.ToModel() 990 991 assert.Equal(t, "", cm.Roles) 992 assert.Equal(t, false, cm.SchemeGuest) 993 assert.Equal(t, false, cm.SchemeUser) 994 assert.Equal(t, false, cm.SchemeAdmin) 995 assert.Equal(t, "", cm.ExplicitRoles) 996 }) 997 } 998 999 func testAllChannelMemberProcess(t *testing.T) { 1000 t.Run("Unmigrated_User", func(t *testing.T) { 1001 db := allChannelMember{ 1002 Roles: "channel_user", 1003 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 1004 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 1005 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 1006 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1007 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1008 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1009 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1010 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1011 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1012 } 1013 1014 _, roles := db.Process() 1015 1016 assert.Equal(t, "channel_user", roles) 1017 }) 1018 1019 t.Run("Unmigrated_Admin", func(t *testing.T) { 1020 db := allChannelMember{ 1021 Roles: "channel_user channel_admin", 1022 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 1023 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 1024 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 1025 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1026 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1027 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1028 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1029 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1030 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1031 } 1032 1033 _, roles := db.Process() 1034 1035 assert.Equal(t, "channel_user channel_admin", roles) 1036 }) 1037 1038 t.Run("Unmigrated_None", func(t *testing.T) { 1039 db := allChannelMember{ 1040 Roles: "", 1041 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 1042 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 1043 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 1044 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1045 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1046 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1047 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1048 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1049 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1050 } 1051 1052 _, roles := db.Process() 1053 1054 assert.Equal(t, "", roles) 1055 }) 1056 1057 t.Run("Unmigrated_Custom", func(t *testing.T) { 1058 db := allChannelMember{ 1059 Roles: "custom", 1060 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 1061 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 1062 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 1063 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1064 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1065 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1066 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1067 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1068 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1069 } 1070 1071 _, roles := db.Process() 1072 1073 assert.Equal(t, "custom", roles) 1074 }) 1075 1076 t.Run("MigratedNoScheme_User", func(t *testing.T) { 1077 db := allChannelMember{ 1078 Roles: "", 1079 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1080 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1081 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1082 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1083 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1084 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1085 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1086 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1087 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1088 } 1089 1090 _, roles := db.Process() 1091 1092 assert.Equal(t, "channel_user", roles) 1093 }) 1094 1095 t.Run("MigratedNoScheme_Admin", func(t *testing.T) { 1096 db := allChannelMember{ 1097 Roles: "", 1098 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1099 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1100 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 1101 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1102 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1103 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1104 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1105 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1106 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1107 } 1108 1109 _, roles := db.Process() 1110 1111 assert.Equal(t, "channel_user channel_admin", roles) 1112 }) 1113 1114 t.Run("MigratedNoScheme_Guest", func(t *testing.T) { 1115 db := allChannelMember{ 1116 Roles: "", 1117 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 1118 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1119 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1120 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1121 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1122 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1123 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1124 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1125 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1126 } 1127 1128 _, roles := db.Process() 1129 1130 assert.Equal(t, "channel_guest", roles) 1131 }) 1132 1133 t.Run("MigratedNoScheme_None", func(t *testing.T) { 1134 db := allChannelMember{ 1135 Roles: "", 1136 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1137 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1138 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1139 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1140 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1141 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1142 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1143 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1144 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1145 } 1146 1147 _, roles := db.Process() 1148 1149 assert.Equal(t, "", roles) 1150 }) 1151 1152 t.Run("MigratedChannelScheme_User", func(t *testing.T) { 1153 db := allChannelMember{ 1154 Roles: "", 1155 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1156 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1157 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1158 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1159 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1160 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1161 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1162 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1163 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1164 } 1165 1166 _, roles := db.Process() 1167 1168 assert.Equal(t, "cscheme_user", roles) 1169 }) 1170 1171 t.Run("MigratedChannelScheme_Admin", func(t *testing.T) { 1172 db := allChannelMember{ 1173 Roles: "", 1174 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1175 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1176 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 1177 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1178 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1179 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1180 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1181 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1182 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1183 } 1184 1185 _, roles := db.Process() 1186 1187 assert.Equal(t, "cscheme_user cscheme_admin", roles) 1188 }) 1189 1190 t.Run("MigratedChannelScheme_Guest", func(t *testing.T) { 1191 db := allChannelMember{ 1192 Roles: "", 1193 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 1194 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1195 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1196 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1197 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1198 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1199 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1200 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1201 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1202 } 1203 1204 _, roles := db.Process() 1205 1206 assert.Equal(t, "cscheme_guest", roles) 1207 }) 1208 1209 t.Run("MigratedChannelScheme_None", func(t *testing.T) { 1210 db := allChannelMember{ 1211 Roles: "", 1212 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1213 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1214 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1215 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1216 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1217 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1218 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1219 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1220 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1221 } 1222 1223 _, roles := db.Process() 1224 1225 assert.Equal(t, "", roles) 1226 }) 1227 1228 t.Run("MigratedTeamScheme_User", func(t *testing.T) { 1229 db := allChannelMember{ 1230 Roles: "", 1231 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1232 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1233 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1234 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1235 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1236 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1237 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1238 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1239 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1240 } 1241 1242 _, roles := db.Process() 1243 1244 assert.Equal(t, "tscheme_channeluser", roles) 1245 }) 1246 1247 t.Run("MigratedTeamScheme_Admin", func(t *testing.T) { 1248 db := allChannelMember{ 1249 Roles: "", 1250 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1251 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1252 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 1253 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1254 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1255 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1256 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1257 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1258 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1259 } 1260 1261 _, roles := db.Process() 1262 1263 assert.Equal(t, "tscheme_channeluser tscheme_channeladmin", roles) 1264 }) 1265 1266 t.Run("MigratedTeamScheme_Guest", func(t *testing.T) { 1267 db := allChannelMember{ 1268 Roles: "", 1269 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 1270 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1271 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1272 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1273 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1274 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1275 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1276 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1277 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1278 } 1279 1280 _, roles := db.Process() 1281 1282 assert.Equal(t, "tscheme_channelguest", roles) 1283 }) 1284 1285 t.Run("MigratedTeamScheme_None", func(t *testing.T) { 1286 db := allChannelMember{ 1287 Roles: "", 1288 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1289 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1290 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1291 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1292 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1293 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1294 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1295 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1296 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1297 } 1298 1299 _, roles := db.Process() 1300 1301 assert.Equal(t, "", roles) 1302 }) 1303 1304 t.Run("MigratedTeamAndChannelScheme_User", func(t *testing.T) { 1305 db := allChannelMember{ 1306 Roles: "", 1307 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1308 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1309 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1310 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1311 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1312 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1313 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1314 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1315 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1316 } 1317 1318 _, roles := db.Process() 1319 1320 assert.Equal(t, "cscheme_user", roles) 1321 }) 1322 1323 t.Run("MigratedTeamAndChannelScheme_Admin", func(t *testing.T) { 1324 db := allChannelMember{ 1325 Roles: "", 1326 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1327 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1328 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 1329 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1330 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1331 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1332 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1333 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1334 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1335 } 1336 1337 _, roles := db.Process() 1338 1339 assert.Equal(t, "cscheme_user cscheme_admin", roles) 1340 }) 1341 1342 t.Run("MigratedTeamAndChannelScheme_Guest", func(t *testing.T) { 1343 db := allChannelMember{ 1344 Roles: "", 1345 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 1346 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1347 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1348 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1349 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1350 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1351 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1352 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1353 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1354 } 1355 1356 _, roles := db.Process() 1357 1358 assert.Equal(t, "cscheme_guest", roles) 1359 }) 1360 1361 t.Run("MigratedTeamAndChannelScheme_None", func(t *testing.T) { 1362 db := allChannelMember{ 1363 Roles: "", 1364 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1365 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 1366 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1367 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_channelguest"}, 1368 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_channeluser"}, 1369 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_channeladmin"}, 1370 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "cscheme_guest"}, 1371 ChannelSchemeDefaultUserRole: sql.NullString{Valid: true, String: "cscheme_user"}, 1372 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "cscheme_admin"}, 1373 } 1374 1375 _, roles := db.Process() 1376 1377 assert.Equal(t, "", roles) 1378 }) 1379 1380 t.Run("DeduplicationCheck", func(t *testing.T) { 1381 db := allChannelMember{ 1382 Roles: "channel_user", 1383 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 1384 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 1385 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 1386 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1387 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 1388 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1389 ChannelSchemeDefaultGuestRole: sql.NullString{Valid: false}, 1390 ChannelSchemeDefaultUserRole: sql.NullString{Valid: false}, 1391 ChannelSchemeDefaultAdminRole: sql.NullString{Valid: false}, 1392 } 1393 1394 _, roles := db.Process() 1395 1396 assert.Equal(t, "channel_user", roles) 1397 }) 1398 }