// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package api4 import ( "net/http" "strconv" "testing" "github.com/mattermost/platform/model" "github.com/mattermost/platform/utils" ) func TestCreateTeam(t *testing.T) { th := Setup().InitBasic() defer TearDown() Client := th.Client team := &model.Team{Name: GenerateTestUsername(), DisplayName: "Some Team", Type: model.TEAM_OPEN} rteam, resp := Client.CreateTeam(team) CheckNoError(t, resp) if rteam.Name != team.Name { t.Fatal("names did not match") } if rteam.DisplayName != team.DisplayName { t.Fatal("display names did not match") } if rteam.Type != team.Type { t.Fatal("types did not match") } _, resp = Client.CreateTeam(rteam) CheckBadRequestStatus(t, resp) rteam.Id = "" _, resp = Client.CreateTeam(rteam) CheckErrorMessage(t, resp, "store.sql_team.save.domain_exists.app_error") CheckBadRequestStatus(t, resp) rteam.Name = "" _, resp = Client.CreateTeam(rteam) CheckErrorMessage(t, resp, "model.team.is_valid.characters.app_error") CheckBadRequestStatus(t, resp) if r, err := Client.DoApiPost("/teams", "garbage"); err == nil { t.Fatal("should have errored") } else { if r.StatusCode != http.StatusBadRequest { t.Log("actual: " + strconv.Itoa(r.StatusCode)) t.Log("expected: " + strconv.Itoa(http.StatusBadRequest)) t.Fatal("wrong status code") } } Client.Logout() _, resp = Client.CreateTeam(rteam) CheckUnauthorizedStatus(t, resp) // Update permission enableTeamCreation := utils.Cfg.TeamSettings.EnableTeamCreation defer func() { utils.Cfg.TeamSettings.EnableTeamCreation = enableTeamCreation utils.SetDefaultRolesBasedOnConfig() }() utils.Cfg.TeamSettings.EnableTeamCreation = false utils.SetDefaultRolesBasedOnConfig() th.LoginBasic() _, resp = Client.CreateTeam(team) CheckForbiddenStatus(t, resp) } func TestGetTeam(t *testing.T) { th := Setup().InitBasic().InitSystemAdmin() defer TearDown() Client := th.Client team := th.BasicTeam rteam, resp := Client.GetTeam(team.Id, "") CheckNoError(t, resp) if rteam.Id != team.Id { t.Fatal("wrong team") } _, resp = Client.GetTeam("junk", "") CheckBadRequestStatus(t, resp) _, resp = Client.GetTeam("", "") CheckNotFoundStatus(t, resp) _, resp = Client.GetTeam(model.NewId(), "") CheckNotFoundStatus(t, resp) th.LoginTeamAdmin() team2 := &model.Team{DisplayName: "Name", Name: GenerateTestTeamName(), Email: GenerateTestEmail(), Type: model.TEAM_INVITE} rteam2, _ := Client.CreateTeam(team2) th.LoginBasic() _, resp = Client.GetTeam(rteam2.Id, "") CheckForbiddenStatus(t, resp) Client.Logout() _, resp = Client.GetTeam(team.Id, "") CheckUnauthorizedStatus(t, resp) _, resp = th.SystemAdminClient.GetTeam(rteam2.Id, "") CheckNoError(t, resp) } func TestGetTeamsForUser(t *testing.T) { th := Setup().InitBasic().InitSystemAdmin() defer TearDown() Client := th.Client team2 := &model.Team{DisplayName: "Name", Name: GenerateTestTeamName(), Email: GenerateTestEmail(), Type: model.TEAM_INVITE} rteam2, _ := Client.CreateTeam(team2) teams, resp := Client.GetTeamsForUser(th.BasicUser.Id, "") CheckNoError(t, resp) if len(teams) != 2 { t.Fatal("wrong number of teams") } found1 := false found2 := false for _, t := range teams { if t.Id == th.BasicTeam.Id { found1 = true } else if t.Id == rteam2.Id { found2 = true } } if !found1 || !found2 { t.Fatal("missing team") } _, resp = Client.GetTeamsForUser("junk", "") CheckBadRequestStatus(t, resp) _, resp = Client.GetTeamsForUser(model.NewId(), "") CheckForbiddenStatus(t, resp) _, resp = Client.GetTeamsForUser(th.BasicUser2.Id, "") CheckForbiddenStatus(t, resp) _, resp = th.SystemAdminClient.GetTeamsForUser(th.BasicUser2.Id, "") CheckNoError(t, resp) } func TestGetTeamMember(t *testing.T) { th := Setup().InitBasic().InitSystemAdmin() defer TearDown() Client := th.Client team := th.BasicTeam user := th.BasicUser rmember, resp := Client.GetTeamMember(team.Id, user.Id, "") CheckNoError(t, resp) if rmember.TeamId != team.Id { t.Fatal("wrong team id") } if rmember.UserId != user.Id { t.Fatal("wrong team id") } _, resp = Client.GetTeamMember("junk", user.Id, "") CheckBadRequestStatus(t, resp) _, resp = Client.GetTeamMember(team.Id, "junk", "") CheckBadRequestStatus(t, resp) _, resp = Client.GetTeamMember("junk", "junk", "") CheckBadRequestStatus(t, resp) _, resp = Client.GetTeamMember(team.Id, model.NewId(), "") CheckNotFoundStatus(t, resp) _, resp = Client.GetTeamMember(model.NewId(), user.Id, "") CheckForbiddenStatus(t, resp) _, resp = th.SystemAdminClient.GetTeamMember(team.Id, user.Id, "") CheckNoError(t, resp) }