Add tests to get team local endpoints (#15071)
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
d9529183b2
Коммит
b660e217d1
@@ -24,52 +24,54 @@ import (
|
|||||||
func TestCreateTeam(t *testing.T) {
|
func TestCreateTeam(t *testing.T) {
|
||||||
th := Setup(t)
|
th := Setup(t)
|
||||||
defer th.TearDown()
|
defer th.TearDown()
|
||||||
Client := th.Client
|
|
||||||
|
th.TestForAllClients(t, func(t *testing.T, client *model.Client4) {
|
||||||
|
team := &model.Team{Name: GenerateTestUsername(), DisplayName: "Some Team", Type: model.TEAM_OPEN}
|
||||||
|
rteam, resp := client.CreateTeam(team)
|
||||||
|
CheckNoError(t, resp)
|
||||||
|
CheckCreatedStatus(t, resp)
|
||||||
|
|
||||||
|
require.Equal(t, rteam.Name, team.Name, "names did not match")
|
||||||
|
|
||||||
|
require.Equal(t, rteam.DisplayName, team.DisplayName, "display names did not match")
|
||||||
|
|
||||||
|
require.Equal(t, rteam.Type, team.Type, "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)
|
||||||
|
|
||||||
|
r, err := client.DoApiPost("/teams", "garbage")
|
||||||
|
require.NotNil(t, err, "should have errored")
|
||||||
|
|
||||||
|
require.Equalf(t, r.StatusCode, http.StatusBadRequest, "wrong status code, actual: %s, expected: %s", strconv.Itoa(r.StatusCode), strconv.Itoa(http.StatusBadRequest))
|
||||||
|
|
||||||
|
// Test GroupConstrained flag
|
||||||
|
groupConstrainedTeam := &model.Team{Name: GenerateTestUsername(), DisplayName: "Some Team", Type: model.TEAM_OPEN, GroupConstrained: model.NewBool(true)}
|
||||||
|
rteam, resp = client.CreateTeam(groupConstrainedTeam)
|
||||||
|
CheckNoError(t, resp)
|
||||||
|
CheckCreatedStatus(t, resp)
|
||||||
|
|
||||||
|
assert.Equal(t, *rteam.GroupConstrained, *groupConstrainedTeam.GroupConstrained, "GroupConstrained flags do not match")
|
||||||
|
})
|
||||||
|
|
||||||
|
th.Client.Logout()
|
||||||
|
|
||||||
team := &model.Team{Name: GenerateTestUsername(), DisplayName: "Some Team", Type: model.TEAM_OPEN}
|
team := &model.Team{Name: GenerateTestUsername(), DisplayName: "Some Team", Type: model.TEAM_OPEN}
|
||||||
rteam, resp := Client.CreateTeam(team)
|
_, resp := th.Client.CreateTeam(team)
|
||||||
CheckNoError(t, resp)
|
|
||||||
CheckCreatedStatus(t, resp)
|
|
||||||
|
|
||||||
require.Equal(t, rteam.Name, team.Name, "names did not match")
|
|
||||||
|
|
||||||
require.Equal(t, rteam.DisplayName, team.DisplayName, "display names did not match")
|
|
||||||
|
|
||||||
require.Equal(t, rteam.Type, team.Type, "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)
|
|
||||||
|
|
||||||
r, err := Client.DoApiPost("/teams", "garbage")
|
|
||||||
require.NotNil(t, err, "should have errored")
|
|
||||||
|
|
||||||
require.Equalf(t, r.StatusCode, http.StatusBadRequest, "wrong status code, actual: %s, expected: %s", strconv.Itoa(r.StatusCode), strconv.Itoa(http.StatusBadRequest))
|
|
||||||
|
|
||||||
Client.Logout()
|
|
||||||
|
|
||||||
_, resp = Client.CreateTeam(rteam)
|
|
||||||
CheckUnauthorizedStatus(t, resp)
|
CheckUnauthorizedStatus(t, resp)
|
||||||
|
|
||||||
th.LoginBasic()
|
th.LoginBasic()
|
||||||
|
|
||||||
// Test GroupConstrained flag
|
|
||||||
groupConstrainedTeam := &model.Team{Name: GenerateTestUsername(), DisplayName: "Some Team", Type: model.TEAM_OPEN, GroupConstrained: model.NewBool(true)}
|
|
||||||
rteam, resp = Client.CreateTeam(groupConstrainedTeam)
|
|
||||||
CheckNoError(t, resp)
|
|
||||||
CheckCreatedStatus(t, resp)
|
|
||||||
|
|
||||||
assert.Equal(t, *rteam.GroupConstrained, *groupConstrainedTeam.GroupConstrained, "GroupConstrained flags do not match")
|
|
||||||
|
|
||||||
// Check the appropriate permissions are enforced.
|
// Check the appropriate permissions are enforced.
|
||||||
defaultRolePermissions := th.SaveDefaultRolePermissions()
|
defaultRolePermissions := th.SaveDefaultRolePermissions()
|
||||||
defer func() {
|
defer func() {
|
||||||
@@ -79,7 +81,7 @@ func TestCreateTeam(t *testing.T) {
|
|||||||
th.RemovePermissionFromRole(model.PERMISSION_CREATE_TEAM.Id, model.SYSTEM_USER_ROLE_ID)
|
th.RemovePermissionFromRole(model.PERMISSION_CREATE_TEAM.Id, model.SYSTEM_USER_ROLE_ID)
|
||||||
th.AddPermissionToRole(model.PERMISSION_CREATE_TEAM.Id, model.SYSTEM_ADMIN_ROLE_ID)
|
th.AddPermissionToRole(model.PERMISSION_CREATE_TEAM.Id, model.SYSTEM_ADMIN_ROLE_ID)
|
||||||
|
|
||||||
_, resp = Client.CreateTeam(team)
|
_, resp = th.Client.CreateTeam(team)
|
||||||
CheckForbiddenStatus(t, resp)
|
CheckForbiddenStatus(t, resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,7 +106,7 @@ func TestCreateTeamSanitization(t *testing.T) {
|
|||||||
require.NotEmpty(t, rteam.InviteId, "should not have sanitized inviteid")
|
require.NotEmpty(t, rteam.InviteId, "should not have sanitized inviteid")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("system admin", func(t *testing.T) {
|
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
|
||||||
team := &model.Team{
|
team := &model.Team{
|
||||||
DisplayName: t.Name() + "_2",
|
DisplayName: t.Name() + "_2",
|
||||||
Name: GenerateTestTeamName(),
|
Name: GenerateTestTeamName(),
|
||||||
@@ -113,11 +115,11 @@ func TestCreateTeamSanitization(t *testing.T) {
|
|||||||
AllowedDomains: "simulator.amazonses.com,localhost",
|
AllowedDomains: "simulator.amazonses.com,localhost",
|
||||||
}
|
}
|
||||||
|
|
||||||
rteam, resp := th.SystemAdminClient.CreateTeam(team)
|
rteam, resp := client.CreateTeam(team)
|
||||||
CheckNoError(t, resp)
|
CheckNoError(t, resp)
|
||||||
require.NotEmpty(t, rteam.Email, "should not have sanitized email")
|
require.NotEmpty(t, rteam.Email, "should not have sanitized email")
|
||||||
require.NotEmpty(t, rteam.InviteId, "should not have sanitized inviteid")
|
require.NotEmpty(t, rteam.InviteId, "should not have sanitized inviteid")
|
||||||
})
|
}, "system admin")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetTeam(t *testing.T) {
|
func TestGetTeam(t *testing.T) {
|
||||||
@@ -126,19 +128,21 @@ func TestGetTeam(t *testing.T) {
|
|||||||
Client := th.Client
|
Client := th.Client
|
||||||
team := th.BasicTeam
|
team := th.BasicTeam
|
||||||
|
|
||||||
rteam, resp := Client.GetTeam(team.Id, "")
|
th.TestForAllClients(t, func(t *testing.T, client *model.Client4) {
|
||||||
CheckNoError(t, resp)
|
rteam, resp := client.GetTeam(team.Id, "")
|
||||||
|
CheckNoError(t, resp)
|
||||||
|
|
||||||
require.Equal(t, rteam.Id, team.Id, "wrong team")
|
require.Equal(t, rteam.Id, team.Id, "wrong team")
|
||||||
|
|
||||||
_, resp = Client.GetTeam("junk", "")
|
_, resp = client.GetTeam("junk", "")
|
||||||
CheckBadRequestStatus(t, resp)
|
CheckBadRequestStatus(t, resp)
|
||||||
|
|
||||||
_, resp = Client.GetTeam("", "")
|
_, resp = client.GetTeam("", "")
|
||||||
CheckNotFoundStatus(t, resp)
|
CheckNotFoundStatus(t, resp)
|
||||||
|
|
||||||
_, resp = Client.GetTeam(model.NewId(), "")
|
_, resp = client.GetTeam(model.NewId(), "")
|
||||||
CheckNotFoundStatus(t, resp)
|
CheckNotFoundStatus(t, resp)
|
||||||
|
})
|
||||||
|
|
||||||
th.LoginTeamAdmin()
|
th.LoginTeamAdmin()
|
||||||
|
|
||||||
@@ -150,7 +154,7 @@ func TestGetTeam(t *testing.T) {
|
|||||||
|
|
||||||
th.LoginBasic()
|
th.LoginBasic()
|
||||||
// AllowInviteOpen is false and team is open, and user is not on team
|
// AllowInviteOpen is false and team is open, and user is not on team
|
||||||
_, resp = Client.GetTeam(rteam2.Id, "")
|
_, resp := Client.GetTeam(rteam2.Id, "")
|
||||||
CheckForbiddenStatus(t, resp)
|
CheckForbiddenStatus(t, resp)
|
||||||
|
|
||||||
// AllowInviteOpen is true and team is invite, and user is not on team
|
// AllowInviteOpen is true and team is invite, and user is not on team
|
||||||
@@ -161,8 +165,10 @@ func TestGetTeam(t *testing.T) {
|
|||||||
_, resp = Client.GetTeam(team.Id, "")
|
_, resp = Client.GetTeam(team.Id, "")
|
||||||
CheckUnauthorizedStatus(t, resp)
|
CheckUnauthorizedStatus(t, resp)
|
||||||
|
|
||||||
_, resp = th.SystemAdminClient.GetTeam(rteam2.Id, "")
|
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
|
||||||
CheckNoError(t, resp)
|
_, resp = client.GetTeam(rteam2.Id, "")
|
||||||
|
CheckNoError(t, resp)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetTeamSanitization(t *testing.T) {
|
func TestGetTeamSanitization(t *testing.T) {
|
||||||
@@ -213,13 +219,13 @@ func TestGetTeamSanitization(t *testing.T) {
|
|||||||
require.NotEmpty(t, rteam.InviteId, "should not have sanitized inviteid")
|
require.NotEmpty(t, rteam.InviteId, "should not have sanitized inviteid")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("system admin", func(t *testing.T) {
|
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
|
||||||
rteam, resp := th.SystemAdminClient.GetTeam(team.Id, "")
|
rteam, resp := client.GetTeam(team.Id, "")
|
||||||
CheckNoError(t, resp)
|
CheckNoError(t, resp)
|
||||||
|
|
||||||
require.NotEmpty(t, rteam.Email, "should not have sanitized email")
|
require.NotEmpty(t, rteam.Email, "should not have sanitized email")
|
||||||
require.NotEmpty(t, rteam.InviteId, "should not have sanitized inviteid")
|
require.NotEmpty(t, rteam.InviteId, "should not have sanitized inviteid")
|
||||||
})
|
}, "system admin")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetTeamUnread(t *testing.T) {
|
func TestGetTeamUnread(t *testing.T) {
|
||||||
@@ -979,6 +985,12 @@ func TestGetAllTeams(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t.Run("Local mode", func(t *testing.T) {
|
||||||
|
teams, res := th.LocalClient.GetAllTeams("", 0, 10)
|
||||||
|
CheckNoError(t, res)
|
||||||
|
require.Len(t, teams, 5)
|
||||||
|
})
|
||||||
|
|
||||||
t.Run("Unauthorized", func(t *testing.T) {
|
t.Run("Unauthorized", func(t *testing.T) {
|
||||||
Client.Logout()
|
Client.Logout()
|
||||||
_, resp = Client.GetAllTeams("", 1, 10)
|
_, resp = Client.GetAllTeams("", 1, 10)
|
||||||
@@ -1033,8 +1045,8 @@ func TestGetAllTeamsSanitization(t *testing.T) {
|
|||||||
require.True(t, team2Found, "wasn't returned the expected teams so the test wasn't run correctly")
|
require.True(t, team2Found, "wasn't returned the expected teams so the test wasn't run correctly")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("system admin", func(t *testing.T) {
|
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
|
||||||
rteams, resp := th.SystemAdminClient.GetAllTeams("", 0, 1000)
|
rteams, resp := client.GetAllTeams("", 0, 1000)
|
||||||
CheckNoError(t, resp)
|
CheckNoError(t, resp)
|
||||||
for _, rteam := range rteams {
|
for _, rteam := range rteams {
|
||||||
if rteam.Id != team.Id && rteam.Id != team2.Id {
|
if rteam.Id != team.Id && rteam.Id != team2.Id {
|
||||||
@@ -1044,31 +1056,35 @@ func TestGetAllTeamsSanitization(t *testing.T) {
|
|||||||
require.NotEmpty(t, rteam.Email, "should not have sanitized email")
|
require.NotEmpty(t, rteam.Email, "should not have sanitized email")
|
||||||
require.NotEmpty(t, rteam.InviteId, "should not have sanitized inviteid")
|
require.NotEmpty(t, rteam.InviteId, "should not have sanitized inviteid")
|
||||||
}
|
}
|
||||||
})
|
}, "system admin")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetTeamByName(t *testing.T) {
|
func TestGetTeamByName(t *testing.T) {
|
||||||
th := Setup(t).InitBasic()
|
th := Setup(t).InitBasic()
|
||||||
defer th.TearDown()
|
defer th.TearDown()
|
||||||
Client := th.Client
|
|
||||||
team := th.BasicTeam
|
team := th.BasicTeam
|
||||||
|
|
||||||
rteam, resp := Client.GetTeamByName(team.Name, "")
|
th.TestForAllClients(t, func(t *testing.T, client *model.Client4) {
|
||||||
CheckNoError(t, resp)
|
rteam, resp := client.GetTeamByName(team.Name, "")
|
||||||
|
CheckNoError(t, resp)
|
||||||
|
|
||||||
require.Equal(t, rteam.Name, team.Name, "wrong team")
|
require.Equal(t, rteam.Name, team.Name, "wrong team")
|
||||||
|
|
||||||
_, resp = Client.GetTeamByName("junk", "")
|
_, resp = client.GetTeamByName("junk", "")
|
||||||
CheckNotFoundStatus(t, resp)
|
CheckNotFoundStatus(t, resp)
|
||||||
|
|
||||||
_, resp = Client.GetTeamByName("", "")
|
_, resp = client.GetTeamByName("", "")
|
||||||
CheckNotFoundStatus(t, resp)
|
CheckNotFoundStatus(t, resp)
|
||||||
|
|
||||||
_, resp = th.SystemAdminClient.GetTeamByName(strings.ToUpper(team.Name), "")
|
})
|
||||||
CheckNoError(t, resp)
|
|
||||||
|
|
||||||
Client.Logout()
|
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
|
||||||
_, resp = Client.GetTeamByName(team.Name, "")
|
_, resp := client.GetTeamByName(strings.ToUpper(team.Name), "")
|
||||||
|
CheckNoError(t, resp)
|
||||||
|
})
|
||||||
|
|
||||||
|
th.Client.Logout()
|
||||||
|
_, resp := th.Client.GetTeamByName(team.Name, "")
|
||||||
CheckUnauthorizedStatus(t, resp)
|
CheckUnauthorizedStatus(t, resp)
|
||||||
|
|
||||||
_, resp = th.SystemAdminClient.GetTeamByName(team.Name, "")
|
_, resp = th.SystemAdminClient.GetTeamByName(team.Name, "")
|
||||||
@@ -1077,18 +1093,18 @@ func TestGetTeamByName(t *testing.T) {
|
|||||||
th.LoginTeamAdmin()
|
th.LoginTeamAdmin()
|
||||||
|
|
||||||
team2 := &model.Team{DisplayName: "Name", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TEAM_OPEN, AllowOpenInvite: false}
|
team2 := &model.Team{DisplayName: "Name", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TEAM_OPEN, AllowOpenInvite: false}
|
||||||
rteam2, _ := Client.CreateTeam(team2)
|
rteam2, _ := th.Client.CreateTeam(team2)
|
||||||
|
|
||||||
team3 := &model.Team{DisplayName: "Name", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TEAM_INVITE, AllowOpenInvite: true}
|
team3 := &model.Team{DisplayName: "Name", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TEAM_INVITE, AllowOpenInvite: true}
|
||||||
rteam3, _ := Client.CreateTeam(team3)
|
rteam3, _ := th.Client.CreateTeam(team3)
|
||||||
|
|
||||||
th.LoginBasic()
|
th.LoginBasic()
|
||||||
// AllowInviteOpen is false and team is open, and user is not on team
|
// AllowInviteOpen is false and team is open, and user is not on team
|
||||||
_, resp = Client.GetTeamByName(rteam2.Name, "")
|
_, resp = th.Client.GetTeamByName(rteam2.Name, "")
|
||||||
CheckForbiddenStatus(t, resp)
|
CheckForbiddenStatus(t, resp)
|
||||||
|
|
||||||
// AllowInviteOpen is true and team is invite only, and user is not on team
|
// AllowInviteOpen is true and team is invite only, and user is not on team
|
||||||
_, resp = Client.GetTeamByName(rteam3.Name, "")
|
_, resp = th.Client.GetTeamByName(rteam3.Name, "")
|
||||||
CheckForbiddenStatus(t, resp)
|
CheckForbiddenStatus(t, resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user