github.com/haalcala/mattermost-server-change-repo@v0.0.0-20210713015153-16753fbeee5f/store/sqlstore/team_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 12 "github.com/mattermost/mattermost-server/v5/model" 13 "github.com/mattermost/mattermost-server/v5/store/storetest" 14 ) 15 16 func TestTeamStore(t *testing.T) { 17 StoreTest(t, storetest.TestTeamStore) 18 } 19 20 func TestTeamStoreInternalDataTypes(t *testing.T) { 21 t.Run("NewTeamMemberFromModel", func(t *testing.T) { testNewTeamMemberFromModel(t) }) 22 t.Run("TeamMemberWithSchemeRolesToModel", func(t *testing.T) { testTeamMemberWithSchemeRolesToModel(t) }) 23 } 24 25 func testNewTeamMemberFromModel(t *testing.T) { 26 m := model.TeamMember{ 27 TeamId: model.NewId(), 28 UserId: model.NewId(), 29 Roles: "team_user team_admin custom_role", 30 DeleteAt: 12345, 31 SchemeGuest: false, 32 SchemeUser: true, 33 SchemeAdmin: true, 34 ExplicitRoles: "custom_role", 35 } 36 37 db := NewTeamMemberFromModel(&m) 38 39 assert.Equal(t, m.TeamId, db.TeamId) 40 assert.Equal(t, m.UserId, db.UserId) 41 assert.Equal(t, m.DeleteAt, db.DeleteAt) 42 assert.Equal(t, true, db.SchemeGuest.Valid) 43 assert.Equal(t, true, db.SchemeUser.Valid) 44 assert.Equal(t, true, db.SchemeAdmin.Valid) 45 assert.Equal(t, m.SchemeGuest, db.SchemeGuest.Bool) 46 assert.Equal(t, m.SchemeUser, db.SchemeUser.Bool) 47 assert.Equal(t, m.SchemeAdmin, db.SchemeAdmin.Bool) 48 assert.Equal(t, m.ExplicitRoles, db.Roles) 49 } 50 51 func testTeamMemberWithSchemeRolesToModel(t *testing.T) { 52 // Test all the non-role-related properties here. 53 t.Run("BasicProperties", func(t *testing.T) { 54 db := teamMemberWithSchemeRoles{ 55 TeamId: model.NewId(), 56 UserId: model.NewId(), 57 Roles: "custom_role", 58 DeleteAt: 12345, 59 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 60 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 61 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 62 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 63 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 64 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 65 } 66 67 m := db.ToModel() 68 69 assert.Equal(t, db.TeamId, m.TeamId) 70 assert.Equal(t, db.UserId, m.UserId) 71 assert.Equal(t, "custom_role team_user team_admin", m.Roles) 72 assert.Equal(t, db.DeleteAt, m.DeleteAt) 73 assert.Equal(t, db.SchemeGuest.Bool, m.SchemeGuest) 74 assert.Equal(t, db.SchemeUser.Bool, m.SchemeUser) 75 assert.Equal(t, db.SchemeAdmin.Bool, m.SchemeAdmin) 76 assert.Equal(t, db.Roles, m.ExplicitRoles) 77 }) 78 79 // Example data *before* the Phase 2 migration has taken place. 80 t.Run("Unmigrated_NoScheme_User", func(t *testing.T) { 81 db := teamMemberWithSchemeRoles{ 82 Roles: "team_user", 83 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 84 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 85 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 86 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 87 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 88 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 89 } 90 91 m := db.ToModel() 92 93 assert.Equal(t, "team_user", m.Roles) 94 assert.Equal(t, false, m.SchemeGuest) 95 assert.Equal(t, true, m.SchemeUser) 96 assert.Equal(t, false, m.SchemeAdmin) 97 assert.Equal(t, "", m.ExplicitRoles) 98 }) 99 100 t.Run("Unmigrated_NoScheme_Admin", func(t *testing.T) { 101 db := teamMemberWithSchemeRoles{ 102 Roles: "team_user team_admin", 103 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 104 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 105 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 106 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 107 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 108 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 109 } 110 111 m := db.ToModel() 112 113 assert.Equal(t, "team_user team_admin", m.Roles) 114 assert.Equal(t, false, m.SchemeGuest) 115 assert.Equal(t, true, m.SchemeUser) 116 assert.Equal(t, true, m.SchemeAdmin) 117 assert.Equal(t, "", m.ExplicitRoles) 118 }) 119 120 t.Run("Unmigrated_NoScheme_CustomRole", func(t *testing.T) { 121 db := teamMemberWithSchemeRoles{ 122 Roles: "custom_role", 123 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 124 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 125 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 126 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 127 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 128 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 129 } 130 131 m := db.ToModel() 132 133 assert.Equal(t, "custom_role", m.Roles) 134 assert.Equal(t, false, m.SchemeGuest) 135 assert.Equal(t, false, m.SchemeUser) 136 assert.Equal(t, false, m.SchemeAdmin) 137 assert.Equal(t, "custom_role", m.ExplicitRoles) 138 }) 139 140 t.Run("Unmigrated_NoScheme_UserAndCustomRole", func(t *testing.T) { 141 db := teamMemberWithSchemeRoles{ 142 Roles: "team_user custom_role", 143 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 144 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 145 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 146 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 147 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 148 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 149 } 150 151 m := db.ToModel() 152 153 assert.Equal(t, "custom_role team_user", m.Roles) 154 assert.Equal(t, false, m.SchemeGuest) 155 assert.Equal(t, true, m.SchemeUser) 156 assert.Equal(t, false, m.SchemeAdmin) 157 assert.Equal(t, "custom_role", m.ExplicitRoles) 158 }) 159 160 t.Run("Unmigrated_NoScheme_AdminAndCustomRole", func(t *testing.T) { 161 db := teamMemberWithSchemeRoles{ 162 Roles: "team_user team_admin custom_role", 163 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 164 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 165 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 166 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 167 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 168 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 169 } 170 171 m := db.ToModel() 172 173 assert.Equal(t, "custom_role team_user team_admin", m.Roles) 174 assert.Equal(t, false, m.SchemeGuest) 175 assert.Equal(t, true, m.SchemeUser) 176 assert.Equal(t, true, m.SchemeAdmin) 177 assert.Equal(t, "custom_role", m.ExplicitRoles) 178 }) 179 180 t.Run("Unmigrated_NoScheme_NoRoles", func(t *testing.T) { 181 db := teamMemberWithSchemeRoles{ 182 Roles: "", 183 SchemeGuest: sql.NullBool{Valid: false, Bool: false}, 184 SchemeUser: sql.NullBool{Valid: false, Bool: false}, 185 SchemeAdmin: sql.NullBool{Valid: false, Bool: false}, 186 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 187 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 188 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 189 } 190 191 m := db.ToModel() 192 193 assert.Equal(t, "", m.Roles) 194 assert.Equal(t, false, m.SchemeGuest) 195 assert.Equal(t, false, m.SchemeUser) 196 assert.Equal(t, false, m.SchemeAdmin) 197 assert.Equal(t, "", m.ExplicitRoles) 198 }) 199 200 // Example data *after* the Phase 2 migration has taken place. 201 t.Run("Migrated_NoScheme_User", func(t *testing.T) { 202 db := teamMemberWithSchemeRoles{ 203 Roles: "", 204 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 205 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 206 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 207 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 208 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 209 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 210 } 211 212 m := db.ToModel() 213 214 assert.Equal(t, "team_user", m.Roles) 215 assert.Equal(t, false, m.SchemeGuest) 216 assert.Equal(t, true, m.SchemeUser) 217 assert.Equal(t, false, m.SchemeAdmin) 218 assert.Equal(t, "", m.ExplicitRoles) 219 }) 220 221 t.Run("Migrated_NoScheme_Admin", func(t *testing.T) { 222 db := teamMemberWithSchemeRoles{ 223 Roles: "", 224 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 225 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 226 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 227 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 228 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 229 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 230 } 231 232 m := db.ToModel() 233 234 assert.Equal(t, "team_user team_admin", m.Roles) 235 assert.Equal(t, false, m.SchemeGuest) 236 assert.Equal(t, true, m.SchemeUser) 237 assert.Equal(t, true, m.SchemeAdmin) 238 assert.Equal(t, "", m.ExplicitRoles) 239 }) 240 241 t.Run("Migrated_NoScheme_Guest", func(t *testing.T) { 242 db := teamMemberWithSchemeRoles{ 243 Roles: "", 244 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 245 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 246 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 247 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 248 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 249 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 250 } 251 252 m := db.ToModel() 253 254 assert.Equal(t, "team_guest", m.Roles) 255 assert.Equal(t, true, m.SchemeGuest) 256 assert.Equal(t, false, m.SchemeUser) 257 assert.Equal(t, false, m.SchemeAdmin) 258 assert.Equal(t, "", m.ExplicitRoles) 259 }) 260 261 t.Run("Migrated_NoScheme_CustomRole", func(t *testing.T) { 262 db := teamMemberWithSchemeRoles{ 263 Roles: "custom_role", 264 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 265 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 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 } 271 272 m := db.ToModel() 273 274 assert.Equal(t, "custom_role", m.Roles) 275 assert.Equal(t, false, m.SchemeGuest) 276 assert.Equal(t, false, m.SchemeUser) 277 assert.Equal(t, false, m.SchemeAdmin) 278 assert.Equal(t, "custom_role", m.ExplicitRoles) 279 }) 280 281 t.Run("Migrated_NoScheme_UserAndCustomRole", func(t *testing.T) { 282 db := teamMemberWithSchemeRoles{ 283 Roles: "custom_role", 284 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 285 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 286 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 287 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 288 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 289 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 290 } 291 292 m := db.ToModel() 293 294 assert.Equal(t, "custom_role team_user", m.Roles) 295 assert.Equal(t, false, m.SchemeGuest) 296 assert.Equal(t, true, m.SchemeUser) 297 assert.Equal(t, false, m.SchemeAdmin) 298 assert.Equal(t, "custom_role", m.ExplicitRoles) 299 }) 300 301 t.Run("Migrated_NoScheme_AdminAndCustomRole", func(t *testing.T) { 302 db := teamMemberWithSchemeRoles{ 303 Roles: "custom_role", 304 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 305 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 306 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 307 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 308 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 309 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 310 } 311 312 m := db.ToModel() 313 314 assert.Equal(t, "custom_role team_user team_admin", m.Roles) 315 assert.Equal(t, false, m.SchemeGuest) 316 assert.Equal(t, true, m.SchemeUser) 317 assert.Equal(t, true, m.SchemeAdmin) 318 assert.Equal(t, "custom_role", m.ExplicitRoles) 319 }) 320 321 t.Run("Migrated_NoScheme_GuestAndCustomRole", func(t *testing.T) { 322 db := teamMemberWithSchemeRoles{ 323 Roles: "custom_role", 324 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 325 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 326 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 327 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 328 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 329 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 330 } 331 332 m := db.ToModel() 333 334 assert.Equal(t, "custom_role team_guest", m.Roles) 335 assert.Equal(t, true, m.SchemeGuest) 336 assert.Equal(t, false, m.SchemeUser) 337 assert.Equal(t, false, m.SchemeAdmin) 338 assert.Equal(t, "custom_role", m.ExplicitRoles) 339 }) 340 341 t.Run("Migrated_NoScheme_NoRoles", func(t *testing.T) { 342 db := teamMemberWithSchemeRoles{ 343 Roles: "", 344 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 345 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 346 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 347 TeamSchemeDefaultGuestRole: sql.NullString{Valid: false}, 348 TeamSchemeDefaultUserRole: sql.NullString{Valid: false}, 349 TeamSchemeDefaultAdminRole: sql.NullString{Valid: false}, 350 } 351 352 m := db.ToModel() 353 354 assert.Equal(t, "", m.Roles) 355 assert.Equal(t, false, m.SchemeGuest) 356 assert.Equal(t, false, m.SchemeUser) 357 assert.Equal(t, false, m.SchemeAdmin) 358 assert.Equal(t, "", m.ExplicitRoles) 359 }) 360 361 // Example data with a team scheme. 362 t.Run("Migrated_TeamScheme_User", func(t *testing.T) { 363 db := teamMemberWithSchemeRoles{ 364 Roles: "", 365 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 366 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 367 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 368 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_guest"}, 369 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_user"}, 370 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_admin"}, 371 } 372 373 m := db.ToModel() 374 375 assert.Equal(t, "tscheme_user", m.Roles) 376 assert.Equal(t, false, m.SchemeGuest) 377 assert.Equal(t, true, m.SchemeUser) 378 assert.Equal(t, false, m.SchemeAdmin) 379 assert.Equal(t, "", m.ExplicitRoles) 380 }) 381 382 t.Run("Migrated_TeamScheme_Admin", func(t *testing.T) { 383 db := teamMemberWithSchemeRoles{ 384 Roles: "", 385 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 386 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 387 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 388 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_guest"}, 389 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_user"}, 390 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_admin"}, 391 } 392 393 m := db.ToModel() 394 395 assert.Equal(t, "tscheme_user tscheme_admin", m.Roles) 396 assert.Equal(t, false, m.SchemeGuest) 397 assert.Equal(t, true, m.SchemeUser) 398 assert.Equal(t, true, m.SchemeAdmin) 399 assert.Equal(t, "", m.ExplicitRoles) 400 }) 401 402 t.Run("Migrated_TeamScheme_Guest", func(t *testing.T) { 403 db := teamMemberWithSchemeRoles{ 404 Roles: "", 405 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 406 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 407 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 408 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_guest"}, 409 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_user"}, 410 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_admin"}, 411 } 412 413 m := db.ToModel() 414 415 assert.Equal(t, "tscheme_guest", m.Roles) 416 assert.Equal(t, true, m.SchemeGuest) 417 assert.Equal(t, false, m.SchemeUser) 418 assert.Equal(t, false, m.SchemeAdmin) 419 assert.Equal(t, "", m.ExplicitRoles) 420 }) 421 422 t.Run("Migrated_TeamScheme_CustomRole", func(t *testing.T) { 423 db := teamMemberWithSchemeRoles{ 424 Roles: "custom_role", 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: true, String: "tscheme_guest"}, 429 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_user"}, 430 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_admin"}, 431 } 432 433 m := db.ToModel() 434 435 assert.Equal(t, "custom_role", m.Roles) 436 assert.Equal(t, false, m.SchemeGuest) 437 assert.Equal(t, false, m.SchemeUser) 438 assert.Equal(t, false, m.SchemeAdmin) 439 assert.Equal(t, "custom_role", m.ExplicitRoles) 440 }) 441 442 t.Run("Migrated_TeamScheme_UserAndCustomRole", func(t *testing.T) { 443 db := teamMemberWithSchemeRoles{ 444 Roles: "custom_role", 445 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 446 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 447 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 448 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_guest"}, 449 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_user"}, 450 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_admin"}, 451 } 452 453 m := db.ToModel() 454 455 assert.Equal(t, "custom_role tscheme_user", m.Roles) 456 assert.Equal(t, false, m.SchemeGuest) 457 assert.Equal(t, true, m.SchemeUser) 458 assert.Equal(t, false, m.SchemeAdmin) 459 assert.Equal(t, "custom_role", m.ExplicitRoles) 460 }) 461 462 t.Run("Migrated_TeamScheme_AdminAndCustomRole", func(t *testing.T) { 463 db := teamMemberWithSchemeRoles{ 464 Roles: "custom_role", 465 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 466 SchemeUser: sql.NullBool{Valid: true, Bool: true}, 467 SchemeAdmin: sql.NullBool{Valid: true, Bool: true}, 468 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_guest"}, 469 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_user"}, 470 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_admin"}, 471 } 472 473 m := db.ToModel() 474 475 assert.Equal(t, "custom_role tscheme_user tscheme_admin", m.Roles) 476 assert.Equal(t, false, m.SchemeGuest) 477 assert.Equal(t, true, m.SchemeUser) 478 assert.Equal(t, true, m.SchemeAdmin) 479 assert.Equal(t, "custom_role", m.ExplicitRoles) 480 }) 481 482 t.Run("Migrated_TeamScheme_GuestAndCustomRole", func(t *testing.T) { 483 db := teamMemberWithSchemeRoles{ 484 Roles: "custom_role", 485 SchemeGuest: sql.NullBool{Valid: true, Bool: true}, 486 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 487 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 488 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_guest"}, 489 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_user"}, 490 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_admin"}, 491 } 492 493 m := db.ToModel() 494 495 assert.Equal(t, "custom_role tscheme_guest", m.Roles) 496 assert.Equal(t, true, m.SchemeGuest) 497 assert.Equal(t, false, m.SchemeUser) 498 assert.Equal(t, false, m.SchemeAdmin) 499 assert.Equal(t, "custom_role", m.ExplicitRoles) 500 }) 501 502 t.Run("Migrated_TeamScheme_NoRoles", func(t *testing.T) { 503 db := teamMemberWithSchemeRoles{ 504 Roles: "", 505 SchemeGuest: sql.NullBool{Valid: true, Bool: false}, 506 SchemeUser: sql.NullBool{Valid: true, Bool: false}, 507 SchemeAdmin: sql.NullBool{Valid: true, Bool: false}, 508 TeamSchemeDefaultGuestRole: sql.NullString{Valid: true, String: "tscheme_guest"}, 509 TeamSchemeDefaultUserRole: sql.NullString{Valid: true, String: "tscheme_user"}, 510 TeamSchemeDefaultAdminRole: sql.NullString{Valid: true, String: "tscheme_admin"}, 511 } 512 513 m := db.ToModel() 514 515 assert.Equal(t, "", m.Roles) 516 assert.Equal(t, false, m.SchemeGuest) 517 assert.Equal(t, false, m.SchemeUser) 518 assert.Equal(t, false, m.SchemeAdmin) 519 assert.Equal(t, "", m.ExplicitRoles) 520 }) 521 }