github.com/psyb0t/mattermost-server@v4.6.1-0.20180125161845-5503a1351abf+incompatible/api/team_test.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package api 5 6 import ( 7 "testing" 8 9 "github.com/mattermost/mattermost-server/model" 10 "github.com/mattermost/mattermost-server/store" 11 "github.com/mattermost/mattermost-server/utils" 12 ) 13 14 func TestCreateTeam(t *testing.T) { 15 th := Setup().InitBasic() 16 defer th.TearDown() 17 18 Client := th.BasicClient 19 20 team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN} 21 rteam, err := Client.CreateTeam(&team) 22 if err != nil { 23 t.Fatal(err) 24 } 25 26 user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"} 27 user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User) 28 th.LinkUserToTeam(user, rteam.Data.(*model.Team)) 29 store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id)) 30 31 Client.Login(user.Email, "passwd1") 32 Client.SetTeamId(rteam.Data.(*model.Team).Id) 33 34 c1 := Client.Must(Client.GetChannels("")).Data.(*model.ChannelList) 35 if len(*c1) != 2 { 36 t.Fatal("default channels not created") 37 } 38 39 if rteam.Data.(*model.Team).DisplayName != team.DisplayName { 40 t.Fatal("full name didn't match") 41 } 42 43 if _, err := Client.CreateTeam(rteam.Data.(*model.Team)); err == nil { 44 t.Fatal("Cannot create an existing") 45 } 46 47 rteam.Data.(*model.Team).Id = "" 48 if _, err := Client.CreateTeam(rteam.Data.(*model.Team)); err != nil { 49 if err.Message != "A team with that name already exists" { 50 t.Fatal(err) 51 } 52 } 53 54 if _, err := Client.DoApiPost("/teams/create", "garbage"); err == nil { 55 t.Fatal("should have been an error") 56 } 57 } 58 59 func TestCreateTeamSanitization(t *testing.T) { 60 th := Setup().InitBasic().InitSystemAdmin() 61 defer th.TearDown() 62 63 // Non-admin users can create a team, but they become a team admin by doing so 64 65 t.Run("team admin", func(t *testing.T) { 66 team := &model.Team{ 67 DisplayName: t.Name() + "_1", 68 Name: GenerateTestTeamName(), 69 Email: th.GenerateTestEmail(), 70 Type: model.TEAM_OPEN, 71 AllowedDomains: "simulator.amazonses.com", 72 } 73 74 if res, err := th.BasicClient.CreateTeam(team); err != nil { 75 t.Fatal(err) 76 } else if rteam := res.Data.(*model.Team); rteam.Email == "" { 77 t.Fatal("should not have sanitized email") 78 } else if rteam.AllowedDomains == "" { 79 t.Fatal("should not have sanitized allowed domains") 80 } 81 }) 82 83 t.Run("system admin", func(t *testing.T) { 84 team := &model.Team{ 85 DisplayName: t.Name() + "_2", 86 Name: GenerateTestTeamName(), 87 Email: th.GenerateTestEmail(), 88 Type: model.TEAM_OPEN, 89 AllowedDomains: "simulator.amazonses.com", 90 } 91 92 if res, err := th.SystemAdminClient.CreateTeam(team); err != nil { 93 t.Fatal(err) 94 } else if rteam := res.Data.(*model.Team); rteam.Email == "" { 95 t.Fatal("should not have sanitized email") 96 } else if rteam.AllowedDomains == "" { 97 t.Fatal("should not have sanitized allowed domains") 98 } 99 }) 100 } 101 102 func TestAddUserToTeam(t *testing.T) { 103 th := Setup().InitSystemAdmin().InitBasic() 104 defer th.TearDown() 105 106 th.BasicClient.Logout() 107 108 // Test adding a user to a team you are not a member of. 109 th.SystemAdminClient.SetTeamId(th.BasicTeam.Id) 110 th.SystemAdminClient.Must(th.SystemAdminClient.RemoveUserFromTeam(th.BasicTeam.Id, th.BasicUser2.Id)) 111 112 th.LoginBasic2() 113 114 user2 := th.CreateUser(th.BasicClient) 115 116 if _, err := th.BasicClient.AddUserToTeam(th.BasicTeam.Id, user2.Id); err == nil { 117 t.Fatal("Should have failed because of not being a team member") 118 } 119 120 // Test adding a user to a team you are a member of. 121 th.BasicClient.Logout() 122 th.LoginBasic() 123 124 if _, err := th.BasicClient.AddUserToTeam(th.BasicTeam.Id, user2.Id); err != nil { 125 t.Fatal(err) 126 } 127 128 // Check it worked properly. 129 if result, err := th.BasicClient.AddUserToTeam(th.BasicTeam.Id, user2.Id); err != nil { 130 t.Fatal(err) 131 } else { 132 rm := result.Data.(map[string]string) 133 if rm["user_id"] != user2.Id { 134 t.Fatal("ids didn't match") 135 } 136 } 137 138 if _, err := th.BasicClient.GetTeamMember(th.BasicTeam.Id, user2.Id); err != nil { 139 t.Fatal(err) 140 } 141 142 // Restore config/license at end of test case. 143 restrictTeamInvite := *th.App.Config().TeamSettings.RestrictTeamInvite 144 isLicensed := utils.IsLicensed() 145 license := utils.License() 146 defer func() { 147 th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = restrictTeamInvite }) 148 utils.SetIsLicensed(isLicensed) 149 utils.SetLicense(license) 150 th.App.SetDefaultRolesBasedOnConfig() 151 }() 152 153 // Set the config so that only team admins can add a user to a team. 154 th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_TEAM_ADMIN }) 155 th.App.SetDefaultRolesBasedOnConfig() 156 157 // Test without the EE license to see that the permission restriction is ignored. 158 user3 := th.CreateUser(th.BasicClient) 159 if _, err := th.BasicClient.AddUserToTeam(th.BasicTeam.Id, user3.Id); err != nil { 160 t.Fatal(err) 161 } 162 163 // Add an EE license. 164 utils.SetIsLicensed(true) 165 utils.SetLicense(&model.License{Features: &model.Features{}}) 166 utils.License().Features.SetDefaults() 167 th.App.SetDefaultRolesBasedOnConfig() 168 169 // Check that a regular user can't add someone to the team. 170 user4 := th.CreateUser(th.BasicClient) 171 if _, err := th.BasicClient.AddUserToTeam(th.BasicTeam.Id, user4.Id); err == nil { 172 t.Fatal("should have failed due to permissions error") 173 } 174 175 // Should work as team admin. 176 th.UpdateUserToTeamAdmin(th.BasicUser, th.BasicTeam) 177 th.App.InvalidateAllCaches() 178 th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_TEAM_ADMIN }) 179 utils.SetIsLicensed(true) 180 utils.SetLicense(&model.License{Features: &model.Features{}}) 181 utils.License().Features.SetDefaults() 182 th.App.SetDefaultRolesBasedOnConfig() 183 184 user5 := th.CreateUser(th.BasicClient) 185 if _, err := th.BasicClient.AddUserToTeam(th.BasicTeam.Id, user5.Id); err != nil { 186 t.Fatal(err) 187 } 188 189 // Change permission level to System Admin 190 th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_SYSTEM_ADMIN }) 191 th.App.SetDefaultRolesBasedOnConfig() 192 193 // Should not work as team admin. 194 user6 := th.CreateUser(th.BasicClient) 195 if _, err := th.BasicClient.AddUserToTeam(th.BasicTeam.Id, user6.Id); err == nil { 196 t.Fatal("should have failed due to permissions error") 197 } 198 199 // Should work as system admin. 200 user7 := th.CreateUser(th.BasicClient) 201 if _, err := th.SystemAdminClient.AddUserToTeam(th.BasicTeam.Id, user7.Id); err != nil { 202 t.Fatal(err) 203 } 204 } 205 206 func TestRemoveUserFromTeam(t *testing.T) { 207 th := Setup().InitSystemAdmin().InitBasic() 208 defer th.TearDown() 209 210 if _, err := th.BasicClient.RemoveUserFromTeam(th.SystemAdminTeam.Id, th.SystemAdminUser.Id); err == nil { 211 t.Fatal("should fail not enough permissions") 212 } else { 213 if err.Id != "api.context.permissions.app_error" { 214 t.Fatal("wrong error. Got: " + err.Id) 215 } 216 } 217 218 if _, err := th.BasicClient.RemoveUserFromTeam("", th.SystemAdminUser.Id); err == nil { 219 t.Fatal("should fail not enough permissions") 220 } else { 221 if err.Id != "api.context.permissions.app_error" { 222 t.Fatal("wrong error") 223 } 224 } 225 226 if _, err := th.BasicClient.RemoveUserFromTeam("", th.BasicUser.Id); err != nil { 227 t.Fatal("should have removed the user from the team") 228 } 229 230 th.BasicClient.Logout() 231 th.LoginSystemAdmin() 232 233 th.SystemAdminClient.Must(th.SystemAdminClient.AddUserToTeam(th.BasicTeam.Id, th.BasicUser.Id)) 234 235 if _, err := th.SystemAdminClient.RemoveUserFromTeam(th.BasicTeam.Id, th.BasicUser.Id); err != nil { 236 t.Fatal("should have removed the user from the team") 237 } 238 } 239 240 func TestAddUserToTeamFromInvite(t *testing.T) { 241 th := Setup().InitBasic() 242 defer th.TearDown() 243 244 user2 := th.CreateUser(th.BasicClient) 245 th.BasicClient.Must(th.BasicClient.Logout()) 246 th.BasicClient.Must(th.BasicClient.Login(user2.Email, user2.Password)) 247 248 if result, err := th.BasicClient.AddUserToTeamFromInvite("", "", th.BasicTeam.InviteId); err != nil { 249 t.Fatal(err) 250 } else { 251 rtm := result.Data.(*model.Team) 252 if rtm.Id != th.BasicTeam.Id { 253 t.Fatal() 254 } 255 } 256 } 257 258 func TestGetAllTeams(t *testing.T) { 259 th := Setup().InitBasic().InitSystemAdmin() 260 defer th.TearDown() 261 262 Client := th.BasicClient 263 264 team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN} 265 team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team) 266 267 Client.Logout() 268 269 user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"} 270 user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User) 271 th.LinkUserToTeam(user, team) 272 store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id)) 273 274 Client.Login(user.Email, "passwd1") 275 Client.SetTeamId(team.Id) 276 277 if r1, err := Client.GetAllTeams(); err != nil { 278 t.Fatal(err) 279 } else if teams := r1.Data.(map[string]*model.Team); len(teams) != 1 { 280 t.Fatal("non admin users only get the teams that they're a member of") 281 } else if receivedTeam, ok := teams[team.Id]; !ok || receivedTeam.Id != team.Id { 282 t.Fatal("should've received team that the user is a member of") 283 } 284 285 if r1, err := th.SystemAdminClient.GetAllTeams(); err != nil { 286 t.Fatal(err) 287 } else if teams := r1.Data.(map[string]*model.Team); len(teams) == 1 { 288 t.Fatal("admin users should receive all teams") 289 } else if receivedTeam, ok := teams[team.Id]; !ok || receivedTeam.Id != team.Id { 290 t.Fatal("admin should've received team that they aren't a member of") 291 } 292 293 Client.Logout() 294 if _, err := Client.GetAllTeams(); err == nil { 295 t.Fatal("Should have failed due to not being logged in.") 296 } 297 } 298 299 func TestGetAllTeamsSanitization(t *testing.T) { 300 th := Setup().InitBasic().InitSystemAdmin() 301 defer th.TearDown() 302 303 var team *model.Team 304 if res, err := th.BasicClient.CreateTeam(&model.Team{ 305 DisplayName: t.Name() + "_1", 306 Name: GenerateTestTeamName(), 307 Email: th.GenerateTestEmail(), 308 Type: model.TEAM_OPEN, 309 AllowedDomains: "simulator.amazonses.com", 310 }); err != nil { 311 t.Fatal(err) 312 } else { 313 team = res.Data.(*model.Team) 314 } 315 316 var team2 *model.Team 317 if res, err := th.SystemAdminClient.CreateTeam(&model.Team{ 318 DisplayName: t.Name() + "_2", 319 Name: GenerateTestTeamName(), 320 Email: th.GenerateTestEmail(), 321 Type: model.TEAM_OPEN, 322 AllowedDomains: "simulator.amazonses.com", 323 }); err != nil { 324 t.Fatal(err) 325 } else { 326 team2 = res.Data.(*model.Team) 327 } 328 329 t.Run("team admin/team user", func(t *testing.T) { 330 if res, err := th.BasicClient.GetAllTeams(); err != nil { 331 t.Fatal(err) 332 } else { 333 for _, rteam := range res.Data.(map[string]*model.Team) { 334 if rteam.Id == team.Id { 335 if rteam.Email == "" { 336 t.Fatal("should not have sanitized email for team admin") 337 } else if rteam.AllowedDomains == "" { 338 t.Fatal("should not have sanitized allowed domains for team admin") 339 } 340 } else if rteam.Id == team2.Id { 341 if rteam.Email != "" { 342 t.Fatal("should've sanitized email for non-admin") 343 } else if rteam.AllowedDomains != "" { 344 t.Fatal("should've sanitized allowed domains for non-admin") 345 } 346 } 347 } 348 } 349 }) 350 351 t.Run("system admin", func(t *testing.T) { 352 if res, err := th.SystemAdminClient.GetAllTeams(); err != nil { 353 t.Fatal(err) 354 } else { 355 for _, rteam := range res.Data.(map[string]*model.Team) { 356 if rteam.Id != team.Id && rteam.Id != team2.Id { 357 continue 358 } 359 360 if rteam.Email == "" { 361 t.Fatal("should not have sanitized email") 362 } else if rteam.AllowedDomains == "" { 363 t.Fatal("should not have sanitized allowed domains") 364 } 365 } 366 } 367 }) 368 } 369 370 func TestGetAllTeamListings(t *testing.T) { 371 th := Setup().InitBasic() 372 defer th.TearDown() 373 374 Client := th.BasicClient 375 376 team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN, AllowOpenInvite: true} 377 team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team) 378 379 Client.Logout() 380 381 user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"} 382 user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User) 383 th.LinkUserToTeam(user, team) 384 store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id)) 385 386 Client.Login(user.Email, "passwd1") 387 Client.SetTeamId(team.Id) 388 389 if r1, err := Client.GetAllTeamListings(); err != nil { 390 t.Fatal(err) 391 } else { 392 teams := r1.Data.(map[string]*model.Team) 393 if teams[team.Id].Name != team.Name { 394 t.Fatal("team name doesn't match") 395 } 396 } 397 398 th.App.UpdateUserRoles(user.Id, model.SYSTEM_ADMIN_ROLE_ID, false) 399 400 Client.Login(user.Email, "passwd1") 401 Client.SetTeamId(team.Id) 402 403 if r1, err := Client.GetAllTeams(); err != nil { 404 t.Fatal(err) 405 } else { 406 teams := r1.Data.(map[string]*model.Team) 407 if teams[team.Id].Name != team.Name { 408 t.Fatal("team name doesn't match") 409 } 410 } 411 } 412 413 func TestGetAllTeamListingsSanitization(t *testing.T) { 414 th := Setup().InitBasic().InitSystemAdmin() 415 defer th.TearDown() 416 417 var team *model.Team 418 if res, err := th.BasicClient.CreateTeam(&model.Team{ 419 DisplayName: t.Name() + "_1", 420 Name: GenerateTestTeamName(), 421 Email: th.GenerateTestEmail(), 422 Type: model.TEAM_OPEN, 423 AllowedDomains: "simulator.amazonses.com", 424 AllowOpenInvite: true, 425 }); err != nil { 426 t.Fatal(err) 427 } else { 428 team = res.Data.(*model.Team) 429 } 430 431 var team2 *model.Team 432 if res, err := th.SystemAdminClient.CreateTeam(&model.Team{ 433 DisplayName: t.Name() + "_2", 434 Name: GenerateTestTeamName(), 435 Email: th.GenerateTestEmail(), 436 Type: model.TEAM_OPEN, 437 AllowedDomains: "simulator.amazonses.com", 438 AllowOpenInvite: true, 439 }); err != nil { 440 t.Fatal(err) 441 } else { 442 team2 = res.Data.(*model.Team) 443 } 444 445 t.Run("team admin/non-admin", func(t *testing.T) { 446 if res, err := th.BasicClient.GetAllTeamListings(); err != nil { 447 t.Fatal(err) 448 } else { 449 for _, rteam := range res.Data.(map[string]*model.Team) { 450 if rteam.Id == team.Id { 451 if rteam.Email == "" { 452 t.Fatal("should not have sanitized email for team admin") 453 } else if rteam.AllowedDomains == "" { 454 t.Fatal("should not have sanitized allowed domains for team admin") 455 } 456 } else if rteam.Id == team2.Id { 457 if rteam.Email != "" { 458 t.Fatal("should've sanitized email for non-admin") 459 } else if rteam.AllowedDomains != "" { 460 t.Fatal("should've sanitized allowed domains for non-admin") 461 } 462 } 463 } 464 } 465 }) 466 467 t.Run("system admin", func(t *testing.T) { 468 if res, err := th.SystemAdminClient.GetAllTeamListings(); err != nil { 469 t.Fatal(err) 470 } else { 471 for _, rteam := range res.Data.(map[string]*model.Team) { 472 if rteam.Id != team.Id && rteam.Id != team2.Id { 473 continue 474 } 475 476 if rteam.Email == "" { 477 t.Fatal("should not have sanitized email") 478 } else if rteam.AllowedDomains == "" { 479 t.Fatal("should not have sanitized allowed domains") 480 } 481 } 482 } 483 }) 484 } 485 486 func TestTeamPermDelete(t *testing.T) { 487 th := Setup().InitBasic() 488 defer th.TearDown() 489 490 Client := th.BasicClient 491 492 team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN} 493 team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team) 494 495 Client.Logout() 496 497 user1 := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"} 498 user1 = Client.Must(Client.CreateUser(user1, "")).Data.(*model.User) 499 th.LinkUserToTeam(user1, team) 500 store.Must(th.App.Srv.Store.User().VerifyEmail(user1.Id)) 501 502 Client.Login(user1.Email, "passwd1") 503 Client.SetTeamId(team.Id) 504 505 channel1 := &model.Channel{DisplayName: "TestGetPosts", Name: "zz" + model.NewId() + "a", Type: model.CHANNEL_OPEN, TeamId: team.Id} 506 channel1 = Client.Must(Client.CreateChannel(channel1)).Data.(*model.Channel) 507 508 post1 := &model.Post{ChannelId: channel1.Id, Message: "search for post1"} 509 post1 = Client.Must(Client.CreatePost(post1)).Data.(*model.Post) 510 511 post2 := &model.Post{ChannelId: channel1.Id, Message: "search for post2"} 512 post2 = Client.Must(Client.CreatePost(post2)).Data.(*model.Post) 513 514 post3 := &model.Post{ChannelId: channel1.Id, Message: "#hashtag search for post3"} 515 post3 = Client.Must(Client.CreatePost(post3)).Data.(*model.Post) 516 517 post4 := &model.Post{ChannelId: channel1.Id, Message: "hashtag for post4"} 518 post4 = Client.Must(Client.CreatePost(post4)).Data.(*model.Post) 519 520 c := &Context{} 521 c.RequestId = model.NewId() 522 c.IpAddress = "test" 523 524 err := th.App.PermanentDeleteTeam(team) 525 if err != nil { 526 t.Fatal(err) 527 } 528 529 Client.ClearOAuthToken() 530 } 531 532 func TestInviteMembers(t *testing.T) { 533 th := Setup().InitBasic().InitSystemAdmin() 534 defer th.TearDown() 535 536 Client := th.BasicClient 537 SystemAdminClient := th.SystemAdminClient 538 539 team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN} 540 team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team) 541 542 Client.Logout() 543 544 user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"} 545 user = Client.Must(Client.CreateUser(user, "")).Data.(*model.User) 546 th.LinkUserToTeam(user, team) 547 store.Must(th.App.Srv.Store.User().VerifyEmail(user.Id)) 548 549 Client.Login(user.Email, "passwd1") 550 Client.SetTeamId(team.Id) 551 552 invite := make(map[string]string) 553 invite["email"] = "success+" + model.NewId() + "@simulator.amazonses.com" 554 invite["first_name"] = "Test" 555 invite["last_name"] = "Guy" 556 invites := &model.Invites{Invites: []map[string]string{invite}} 557 invites.Invites = append(invites.Invites, invite) 558 559 if _, err := Client.InviteMembers(invites); err != nil { 560 t.Fatal(err) 561 } 562 563 invites2 := &model.Invites{Invites: []map[string]string{}} 564 if _, err := Client.InviteMembers(invites2); err == nil { 565 t.Fatal("Should have errored out on no invites to send") 566 } 567 568 restrictTeamInvite := *th.App.Config().TeamSettings.RestrictTeamInvite 569 defer func() { 570 th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = restrictTeamInvite }) 571 th.App.SetDefaultRolesBasedOnConfig() 572 }() 573 th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_TEAM_ADMIN }) 574 th.App.SetDefaultRolesBasedOnConfig() 575 576 th.LoginBasic2() 577 th.LinkUserToTeam(th.BasicUser2, team) 578 579 if _, err := Client.InviteMembers(invites); err != nil { 580 t.Fatal(err) 581 } 582 583 isLicensed := utils.IsLicensed() 584 license := utils.License() 585 defer func() { 586 utils.SetIsLicensed(isLicensed) 587 utils.SetLicense(license) 588 th.App.SetDefaultRolesBasedOnConfig() 589 }() 590 utils.SetIsLicensed(true) 591 utils.SetLicense(&model.License{Features: &model.Features{}}) 592 utils.License().Features.SetDefaults() 593 th.App.SetDefaultRolesBasedOnConfig() 594 595 if _, err := Client.InviteMembers(invites); err == nil { 596 t.Fatal("should have errored not team admin and licensed") 597 } 598 599 th.UpdateUserToTeamAdmin(th.BasicUser2, team) 600 Client.Logout() 601 th.LoginBasic2() 602 Client.SetTeamId(team.Id) 603 604 if _, err := Client.InviteMembers(invites); err != nil { 605 t.Fatal(err) 606 } 607 608 th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictTeamInvite = model.PERMISSIONS_SYSTEM_ADMIN }) 609 th.App.SetDefaultRolesBasedOnConfig() 610 611 if _, err := Client.InviteMembers(invites); err == nil { 612 t.Fatal("should have errored not system admin and licensed") 613 } 614 615 th.LinkUserToTeam(th.SystemAdminUser, team) 616 617 if _, err := SystemAdminClient.InviteMembers(invites); err != nil { 618 t.Fatal(err) 619 } 620 } 621 622 func TestUpdateTeamDisplayName(t *testing.T) { 623 th := Setup().InitBasic() 624 defer th.TearDown() 625 626 Client := th.BasicClient 627 628 team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TEAM_OPEN} 629 team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team) 630 631 Client.Logout() 632 633 user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"} 634 user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User) 635 th.LinkUserToTeam(user2, team) 636 store.Must(th.App.Srv.Store.User().VerifyEmail(user2.Id)) 637 638 Client.Login(user2.Email, "passwd1") 639 Client.SetTeamId(team.Id) 640 641 vteam := &model.Team{DisplayName: team.DisplayName, Name: team.Name, Email: team.Email, Type: team.Type} 642 vteam.DisplayName = "NewName" 643 if _, err := Client.UpdateTeam(vteam); err == nil { 644 t.Fatal("Should have errored, not admin") 645 } 646 647 th.LoginBasic() 648 649 vteam.DisplayName = "" 650 if _, err := Client.UpdateTeam(vteam); err == nil { 651 t.Fatal("Should have errored, empty name") 652 } 653 654 vteam.DisplayName = "NewName" 655 if _, err := Client.UpdateTeam(vteam); err != nil { 656 t.Fatal(err) 657 } 658 } 659 660 func TestUpdateTeamSanitization(t *testing.T) { 661 th := Setup().InitBasic().InitSystemAdmin() 662 defer th.TearDown() 663 664 var team *model.Team 665 if res, err := th.BasicClient.CreateTeam(&model.Team{ 666 DisplayName: t.Name() + "_1", 667 Name: GenerateTestTeamName(), 668 Email: th.GenerateTestEmail(), 669 Type: model.TEAM_OPEN, 670 AllowedDomains: "simulator.amazonses.com", 671 }); err != nil { 672 t.Fatal(err) 673 } else { 674 team = res.Data.(*model.Team) 675 } 676 677 // Non-admin users cannot update the team 678 679 t.Run("team admin", func(t *testing.T) { 680 // API v3 always assumes you're updating the current team 681 th.BasicClient.SetTeamId(team.Id) 682 683 if res, err := th.BasicClient.UpdateTeam(team); err != nil { 684 t.Fatal(err) 685 } else if rteam := res.Data.(*model.Team); rteam.Email == "" { 686 t.Fatal("should not have sanitized email for admin") 687 } else if rteam.AllowedDomains == "" { 688 t.Fatal("should not have sanitized allowed domains") 689 } 690 }) 691 692 t.Run("system admin", func(t *testing.T) { 693 // API v3 always assumes you're updating the current team 694 th.SystemAdminClient.SetTeamId(team.Id) 695 696 if res, err := th.SystemAdminClient.UpdateTeam(team); err != nil { 697 t.Fatal(err) 698 } else if rteam := res.Data.(*model.Team); rteam.Email == "" { 699 t.Fatal("should not have sanitized email for admin") 700 } else if rteam.AllowedDomains == "" { 701 t.Fatal("should not have sanitized allowed domains") 702 } 703 }) 704 } 705 706 func TestFuzzyTeamCreate(t *testing.T) { 707 th := Setup().InitBasic() 708 defer th.TearDown() 709 710 Client := th.BasicClient 711 712 for i := 0; i < len(utils.FUZZY_STRINGS_NAMES) || i < len(utils.FUZZY_STRINGS_EMAILS); i++ { 713 testDisplayName := "Name" 714 testEmail := "test@nowhere.com" 715 716 if i < len(utils.FUZZY_STRINGS_NAMES) { 717 testDisplayName = utils.FUZZY_STRINGS_NAMES[i] 718 } 719 if i < len(utils.FUZZY_STRINGS_EMAILS) { 720 testEmail = utils.FUZZY_STRINGS_EMAILS[i] 721 } 722 723 team := model.Team{DisplayName: testDisplayName, Name: "z-z-" + model.NewId() + "a", Email: testEmail, Type: model.TEAM_OPEN} 724 725 _, err := Client.CreateTeam(&team) 726 if err != nil { 727 t.Fatal(err) 728 } 729 } 730 } 731 732 func TestGetMyTeam(t *testing.T) { 733 th := Setup().InitBasic() 734 defer th.TearDown() 735 736 Client := th.BasicClient 737 738 team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN} 739 rteam, _ := Client.CreateTeam(team) 740 team = rteam.Data.(*model.Team) 741 742 Client.Logout() 743 744 user := model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"} 745 ruser, _ := Client.CreateUser(&user, "") 746 th.LinkUserToTeam(ruser.Data.(*model.User), rteam.Data.(*model.Team)) 747 store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id)) 748 749 Client.Login(user.Email, user.Password) 750 Client.SetTeamId(team.Id) 751 752 if result, err := Client.GetMyTeam(""); err != nil { 753 t.Fatal(err) 754 } else { 755 if result.Data.(*model.Team).DisplayName != team.DisplayName { 756 t.Fatal("team names did not match") 757 } 758 if result.Data.(*model.Team).Name != team.Name { 759 t.Fatal("team domains did not match") 760 } 761 if result.Data.(*model.Team).Type != team.Type { 762 t.Fatal("team types did not match") 763 } 764 } 765 } 766 767 func TestGetMyTeamSanitization(t *testing.T) { 768 th := Setup().InitBasic().InitSystemAdmin() 769 defer th.TearDown() 770 771 var team *model.Team 772 if res, err := th.BasicClient.CreateTeam(&model.Team{ 773 DisplayName: t.Name() + "_1", 774 Name: GenerateTestTeamName(), 775 Email: th.GenerateTestEmail(), 776 Type: model.TEAM_OPEN, 777 AllowedDomains: "simulator.amazonses.com", 778 }); err != nil { 779 t.Fatal(err) 780 } else { 781 team = res.Data.(*model.Team) 782 } 783 784 t.Run("team user", func(t *testing.T) { 785 th.LinkUserToTeam(th.BasicUser2, team) 786 787 client := th.CreateClient() 788 client.Must(client.Login(th.BasicUser2.Email, th.BasicUser2.Password)) 789 790 client.SetTeamId(team.Id) 791 792 if res, err := client.GetMyTeam(""); err != nil { 793 t.Fatal(err) 794 } else if rteam := res.Data.(*model.Team); rteam.Email != "" { 795 t.Fatal("should've sanitized email") 796 } else if rteam.AllowedDomains != "" { 797 t.Fatal("should've sanitized allowed domains") 798 } 799 }) 800 801 t.Run("team admin", func(t *testing.T) { 802 th.BasicClient.SetTeamId(team.Id) 803 804 if res, err := th.BasicClient.GetMyTeam(""); err != nil { 805 t.Fatal(err) 806 } else if rteam := res.Data.(*model.Team); rteam.Email == "" { 807 t.Fatal("should not have sanitized email") 808 } else if rteam.AllowedDomains == "" { 809 t.Fatal("should not have sanitized allowed domains") 810 } 811 }) 812 813 t.Run("system admin", func(t *testing.T) { 814 th.SystemAdminClient.SetTeamId(team.Id) 815 816 if res, err := th.SystemAdminClient.GetMyTeam(""); err != nil { 817 t.Fatal(err) 818 } else if rteam := res.Data.(*model.Team); rteam.Email == "" { 819 t.Fatal("should not have sanitized email") 820 } else if rteam.AllowedDomains == "" { 821 t.Fatal("should not have sanitized allowed domains") 822 } 823 }) 824 } 825 826 func TestGetTeamMembers(t *testing.T) { 827 th := Setup().InitBasic() 828 defer th.TearDown() 829 830 if result, err := th.BasicClient.GetTeamMembers(th.BasicTeam.Id, 0, 100); err != nil { 831 t.Fatal(err) 832 } else { 833 members := result.Data.([]*model.TeamMember) 834 if len(members) == 0 { 835 t.Fatal("should have results") 836 } 837 } 838 839 if _, err := th.BasicClient.GetTeamMembers("junk", 0, 100); err == nil { 840 t.Fatal("should have errored - bad team id") 841 } 842 } 843 844 func TestGetMyTeamMembers(t *testing.T) { 845 th := Setup().InitBasic() 846 defer th.TearDown() 847 848 if result, err := th.BasicClient.GetMyTeamMembers(); err != nil { 849 t.Fatal(err) 850 } else { 851 members := result.Data.([]*model.TeamMember) 852 if len(members) == 0 { 853 t.Fatal("should have results") 854 } 855 } 856 } 857 858 func TestGetMyTeamsUnread(t *testing.T) { 859 th := Setup().InitBasic() 860 defer th.TearDown() 861 862 if result, err := th.BasicClient.GetMyTeamsUnread(""); err != nil { 863 t.Fatal(err) 864 } else { 865 members := result.Data.([]*model.TeamUnread) 866 if len(members) == 0 { 867 t.Fatal("should have results") 868 } 869 } 870 871 if result, err := th.BasicClient.GetMyTeamsUnread(th.BasicTeam.Id); err != nil { 872 t.Fatal(err) 873 } else { 874 members := result.Data.([]*model.TeamUnread) 875 if len(members) != 0 { 876 t.Fatal("should not have results") 877 } 878 } 879 } 880 881 func TestGetTeamMember(t *testing.T) { 882 th := Setup().InitBasic() 883 defer th.TearDown() 884 885 if result, err := th.BasicClient.GetTeamMember(th.BasicTeam.Id, th.BasicUser.Id); err != nil { 886 t.Fatal(err) 887 } else { 888 member := result.Data.(*model.TeamMember) 889 if member == nil { 890 t.Fatal("should be valid") 891 } 892 } 893 894 if _, err := th.BasicClient.GetTeamMember("junk", th.BasicUser.Id); err == nil { 895 t.Fatal("should have errored - bad team id") 896 } 897 898 if _, err := th.BasicClient.GetTeamMember(th.BasicTeam.Id, ""); err == nil { 899 t.Fatal("should have errored - blank user id") 900 } 901 902 if _, err := th.BasicClient.GetTeamMember(th.BasicTeam.Id, "junk"); err == nil { 903 t.Fatal("should have errored - bad user id") 904 } 905 906 if _, err := th.BasicClient.GetTeamMember(th.BasicTeam.Id, "12345678901234567890123456"); err == nil { 907 t.Fatal("should have errored - bad user id") 908 } 909 } 910 911 func TestGetTeamMembersByIds(t *testing.T) { 912 th := Setup().InitBasic() 913 defer th.TearDown() 914 915 if result, err := th.BasicClient.GetTeamMembersByIds(th.BasicTeam.Id, []string{th.BasicUser.Id}); err != nil { 916 t.Fatal(err) 917 } else { 918 member := result.Data.([]*model.TeamMember)[0] 919 if member.UserId != th.BasicUser.Id { 920 t.Fatal("user id did not match") 921 } 922 if member.TeamId != th.BasicTeam.Id { 923 t.Fatal("team id did not match") 924 } 925 } 926 927 if result, err := th.BasicClient.GetTeamMembersByIds(th.BasicTeam.Id, []string{th.BasicUser.Id, th.BasicUser2.Id, model.NewId()}); err != nil { 928 t.Fatal(err) 929 } else { 930 members := result.Data.([]*model.TeamMember) 931 if len(members) != 2 { 932 t.Fatal("length should have been 2") 933 } 934 } 935 936 if _, err := th.BasicClient.GetTeamMembersByIds("junk", []string{th.BasicUser.Id}); err == nil { 937 t.Fatal("should have errored - bad team id") 938 } 939 940 if _, err := th.BasicClient.GetTeamMembersByIds(th.BasicTeam.Id, []string{}); err == nil { 941 t.Fatal("should have errored - empty user ids") 942 } 943 } 944 945 func TestUpdateTeamMemberRoles(t *testing.T) { 946 th := Setup().InitSystemAdmin().InitBasic() 947 defer th.TearDown() 948 949 th.SystemAdminClient.SetTeamId(th.BasicTeam.Id) 950 th.LinkUserToTeam(th.SystemAdminUser, th.BasicTeam) 951 952 const BASIC_MEMBER = "team_user" 953 const TEAM_ADMIN = "team_user team_admin" 954 955 // user 1 trying to promote user 2 956 if _, err := th.BasicClient.UpdateTeamRoles(th.BasicUser2.Id, TEAM_ADMIN); err == nil { 957 t.Fatal("Should have errored, not team admin") 958 } 959 960 // user 1 trying to promote themselves 961 if _, err := th.BasicClient.UpdateTeamRoles(th.BasicUser.Id, TEAM_ADMIN); err == nil { 962 t.Fatal("Should have errored, not team admin") 963 } 964 965 // user 1 trying to demote someone 966 if _, err := th.BasicClient.UpdateTeamRoles(th.SystemAdminUser.Id, BASIC_MEMBER); err == nil { 967 t.Fatal("Should have errored, not team admin") 968 } 969 970 // system admin promoting user1 971 if _, err := th.SystemAdminClient.UpdateTeamRoles(th.BasicUser.Id, TEAM_ADMIN); err != nil { 972 t.Fatal("Should have worked: " + err.Error()) 973 } 974 975 // user 1 trying to promote user 2 976 if _, err := th.BasicClient.UpdateTeamRoles(th.BasicUser2.Id, TEAM_ADMIN); err != nil { 977 t.Fatal("Should have worked, user is team admin: " + th.BasicUser.Id) 978 } 979 980 // user 1 trying to demote user 2 981 if _, err := th.BasicClient.UpdateTeamRoles(th.BasicUser2.Id, BASIC_MEMBER); err != nil { 982 t.Fatal("Should have worked, user is team admin") 983 } 984 985 // user 1 trying to demote a system admin 986 if _, err := th.BasicClient.UpdateTeamRoles(th.SystemAdminUser.Id, BASIC_MEMBER); err != nil { 987 t.Fatal("Should have worked, user is team admin and has the ability to manage permissions on this team.") 988 // Note to anyone who thinks this test is wrong: 989 // This operation will not effect the system admin's permissions because they have global access to all teams. 990 // Their team level permissions are irrelavent. A team admin should be able to manage team level permissions. 991 } 992 993 // System admins should be able to manipulate permission no matter what their team level permissions are. 994 // systemAdmin trying to promote user 2 995 if _, err := th.SystemAdminClient.UpdateTeamRoles(th.BasicUser2.Id, TEAM_ADMIN); err != nil { 996 t.Fatal("Should have worked, user is system admin") 997 } 998 999 // system admin trying to demote user 2 1000 if _, err := th.SystemAdminClient.UpdateTeamRoles(th.BasicUser2.Id, BASIC_MEMBER); err != nil { 1001 t.Fatal("Should have worked, user is system admin") 1002 } 1003 1004 // user 1 trying to demote himself 1005 if _, err := th.BasicClient.UpdateTeamRoles(th.BasicUser.Id, BASIC_MEMBER); err != nil { 1006 t.Fatal("Should have worked, user is team admin") 1007 } 1008 } 1009 1010 func TestGetTeamStats(t *testing.T) { 1011 th := Setup().InitBasic().InitSystemAdmin() 1012 defer th.TearDown() 1013 1014 Client := th.BasicClient 1015 1016 if result, err := th.SystemAdminClient.GetTeamStats(th.BasicTeam.Id); err != nil { 1017 t.Fatal(err) 1018 } else { 1019 if result.Data.(*model.TeamStats).TotalMemberCount != 2 { 1020 t.Fatal("wrong count") 1021 } 1022 1023 if result.Data.(*model.TeamStats).ActiveMemberCount != 2 { 1024 t.Fatal("wrong count") 1025 } 1026 } 1027 1028 th.SystemAdminClient.Must(th.SystemAdminClient.UpdateActive(th.BasicUser2.Id, false)) 1029 1030 if result, err := th.SystemAdminClient.GetTeamStats(th.BasicTeam.Id); err != nil { 1031 t.Fatal(err) 1032 } else { 1033 if result.Data.(*model.TeamStats).TotalMemberCount != 2 { 1034 t.Fatal("wrong count") 1035 } 1036 1037 if result.Data.(*model.TeamStats).ActiveMemberCount != 1 { 1038 t.Fatal("wrong count") 1039 } 1040 } 1041 1042 if _, err := th.SystemAdminClient.GetTeamStats("junk"); err == nil { 1043 t.Fatal("should fail invalid teamid") 1044 } else { 1045 if err.Id != "store.sql_team.get.find.app_error" { 1046 t.Fatal("wrong error. Got: " + err.Id) 1047 } 1048 } 1049 1050 if result, err := th.SystemAdminClient.GetTeamStats(th.BasicTeam.Id); err != nil { 1051 t.Fatal(err) 1052 } else { 1053 if result.Data.(*model.TeamStats).TotalMemberCount != 2 { 1054 t.Fatal("wrong count") 1055 } 1056 } 1057 1058 user := model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"} 1059 ruser, _ := Client.CreateUser(&user, "") 1060 store.Must(th.App.Srv.Store.User().VerifyEmail(ruser.Data.(*model.User).Id)) 1061 1062 Client.Login(user.Email, user.Password) 1063 1064 if _, err := Client.GetTeamStats(th.BasicTeam.Id); err == nil { 1065 t.Fatal("should have errored - not on team") 1066 } 1067 } 1068 1069 func TestUpdateTeamDescription(t *testing.T) { 1070 th := Setup().InitBasic() 1071 defer th.TearDown() 1072 1073 Client := th.BasicClient 1074 1075 team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TEAM_OPEN} 1076 team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team) 1077 1078 Client.Logout() 1079 1080 user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Jabba the Hutt", Password: "passwd1"} 1081 user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User) 1082 th.LinkUserToTeam(user2, team) 1083 store.Must(th.App.Srv.Store.User().VerifyEmail(user2.Id)) 1084 1085 Client.Login(user2.Email, "passwd1") 1086 Client.SetTeamId(team.Id) 1087 1088 vteam := &model.Team{DisplayName: team.DisplayName, Name: team.Name, Description: team.Description, Email: team.Email, Type: team.Type} 1089 vteam.Description = "yommamma" 1090 if _, err := Client.UpdateTeam(vteam); err == nil { 1091 t.Fatal("Should have errored, not admin") 1092 } 1093 1094 th.LoginBasic() 1095 1096 vteam.Description = "" 1097 if _, err := Client.UpdateTeam(vteam); err != nil { 1098 t.Fatal("Should have errored, should save blank Description") 1099 } 1100 1101 vteam.Description = "yommamma" 1102 if _, err := Client.UpdateTeam(vteam); err != nil { 1103 t.Fatal(err) 1104 } 1105 } 1106 1107 func TestGetTeamByName(t *testing.T) { 1108 th := Setup().InitSystemAdmin().InitBasic() 1109 defer th.TearDown() 1110 1111 Client := th.BasicClient 1112 1113 team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TEAM_OPEN, AllowOpenInvite: false} 1114 team = Client.Must(Client.CreateTeam(team)).Data.(*model.Team) 1115 1116 team2 := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TEAM_OPEN, AllowOpenInvite: true} 1117 team2 = Client.Must(Client.CreateTeam(team2)).Data.(*model.Team) 1118 1119 team3 := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TEAM_INVITE, AllowOpenInvite: true} 1120 team3 = Client.Must(Client.CreateTeam(team3)).Data.(*model.Team) 1121 1122 if _, err := Client.GetTeamByName(team.Name); err != nil { 1123 t.Fatal("Failed to get team") 1124 } 1125 1126 if _, err := Client.GetTeamByName("InvalidTeamName"); err == nil { 1127 t.Fatal("Should not exist this team") 1128 } 1129 1130 if _, err := Client.GetTeamByName(team2.Name); err != nil { 1131 t.Fatal("Failed to get team") 1132 } 1133 1134 Client.Must(Client.Logout()) 1135 1136 user2 := &model.User{Email: "success+" + model.NewId() + "@simulator.amazonses.com", Nickname: "Jabba the Hutt", Password: "passwd1"} 1137 user2 = Client.Must(Client.CreateUser(user2, "")).Data.(*model.User) 1138 store.Must(th.App.Srv.Store.User().VerifyEmail(user2.Id)) 1139 1140 Client.Login(user2.Email, "passwd1") 1141 1142 // AllowInviteOpen is false and team is open and user is not part of the team 1143 if _, err := Client.GetTeamByName(team.Name); err == nil { 1144 t.Fatal("Should fail dont have permissions to get the team") 1145 } 1146 1147 if _, err := Client.GetTeamByName("InvalidTeamName"); err == nil { 1148 t.Fatal("Should not exist this team") 1149 } 1150 1151 // AllowInviteOpen is true and is open and user is not part of the team 1152 if _, err := Client.GetTeamByName(team2.Name); err != nil { 1153 t.Fatal("Should not fail team is open") 1154 } 1155 1156 // AllowInviteOpen is true and is invite only and user is not part of the team 1157 if _, err := Client.GetTeamByName(team3.Name); err == nil { 1158 t.Fatal("Should fail team is invite only") 1159 } 1160 1161 Client.Must(Client.Logout()) 1162 th.BasicClient.Logout() 1163 th.LoginSystemAdmin() 1164 1165 if _, err := th.SystemAdminClient.GetTeamByName(team.Name); err != nil { 1166 t.Fatal("Should not fail to get team the user is admin") 1167 } 1168 1169 if _, err := th.SystemAdminClient.GetTeamByName(team2.Name); err != nil { 1170 t.Fatal("Should not fail to get team the user is admin and team is open") 1171 } 1172 1173 if _, err := th.SystemAdminClient.GetTeamByName(team3.Name); err != nil { 1174 t.Fatal("Should not fail to get team the user is admin and team is invite") 1175 } 1176 1177 if _, err := Client.GetTeamByName("InvalidTeamName"); err == nil { 1178 t.Fatal("Should not exist this team") 1179 } 1180 1181 Client.Logout() 1182 if _, err := Client.GetTeamByName(th.BasicTeam.Name); err == nil { 1183 t.Fatal("Should have failed when not logged in.") 1184 } 1185 } 1186 1187 func TestGetTeamByNameSanitization(t *testing.T) { 1188 th := Setup().InitBasic().InitSystemAdmin() 1189 defer th.TearDown() 1190 1191 var team *model.Team 1192 if res, err := th.BasicClient.CreateTeam(&model.Team{ 1193 DisplayName: t.Name() + "_1", 1194 Name: GenerateTestTeamName(), 1195 Email: th.GenerateTestEmail(), 1196 Type: model.TEAM_OPEN, 1197 AllowedDomains: "simulator.amazonses.com", 1198 }); err != nil { 1199 t.Fatal(err) 1200 } else { 1201 team = res.Data.(*model.Team) 1202 } 1203 1204 t.Run("team user", func(t *testing.T) { 1205 th.LinkUserToTeam(th.BasicUser2, team) 1206 1207 client := th.CreateClient() 1208 client.Must(client.Login(th.BasicUser2.Email, th.BasicUser2.Password)) 1209 1210 if res, err := client.GetTeamByName(team.Name); err != nil { 1211 t.Fatal(err) 1212 } else if rteam := res.Data.(*model.Team); rteam.Email != "" { 1213 t.Fatal("should've sanitized email") 1214 } else if rteam.AllowedDomains != "" { 1215 t.Fatal("should've sanitized allowed domains") 1216 } 1217 }) 1218 1219 t.Run("team admin", func(t *testing.T) { 1220 if res, err := th.BasicClient.GetTeamByName(team.Name); err != nil { 1221 t.Fatal(err) 1222 } else if rteam := res.Data.(*model.Team); rteam.Email == "" { 1223 t.Fatal("should not have sanitized email") 1224 } else if rteam.AllowedDomains == "" { 1225 t.Fatal("should not have sanitized allowed domains") 1226 } 1227 }) 1228 1229 t.Run("system admin", func(t *testing.T) { 1230 th.SystemAdminClient.SetTeamId(team.Id) 1231 1232 if res, err := th.SystemAdminClient.GetTeamByName(team.Name); err != nil { 1233 t.Fatal(err) 1234 } else if rteam := res.Data.(*model.Team); rteam.Email == "" { 1235 t.Fatal("should not have sanitized email") 1236 } else if rteam.AllowedDomains == "" { 1237 t.Fatal("should not have sanitized allowed domains") 1238 } 1239 }) 1240 } 1241 1242 func TestFindTeamByName(t *testing.T) { 1243 th := Setup().InitBasic() 1244 defer th.TearDown() 1245 1246 Client := th.BasicClient 1247 Client.Logout() 1248 1249 if _, err := Client.FindTeamByName(th.BasicTeam.Name); err == nil { 1250 t.Fatal("Should have failed when not logged in.") 1251 } 1252 }