MM-20977 - Inviting multiple users with valid/allowed and inva… (#13372)

Этот коммит содержится в:
Eli Yukelzon
2020-01-14 15:29:50 +02:00
коммит произвёл GitHub
родитель 51a61f6bc1
Коммит e77ef9733c
10 изменённых файлов: 204 добавлений и 8 удалений

Просмотреть файл

@@ -522,6 +522,8 @@ func addUserToTeamFromInvite(c *Context, w http.ResponseWriter, r *http.Request)
}
func addTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
graceful := r.URL.Query().Get("graceful") != ""
c.RequireTeamId()
if c.Err != nil {
return
@@ -587,7 +589,7 @@ func addTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
members, err = c.App.AddTeamMembers(c.Params.TeamId, userIds, c.App.Session.UserId)
membersWithErrors, err := c.App.AddTeamMembers(c.Params.TeamId, userIds, c.App.Session.UserId, graceful)
if err != nil {
c.Err = err
@@ -595,7 +597,14 @@ func addTeamMembers(c *Context, w http.ResponseWriter, r *http.Request) {
}
w.WriteHeader(http.StatusCreated)
w.Write([]byte(model.TeamMembersToJson(members)))
if graceful {
// in 'graceful' mode we allow a different return value, notifying the client which users were not added
w.Write([]byte(model.TeamMembersWithErrorToJson(membersWithErrors)))
} else {
w.Write([]byte(model.TeamMembersToJson(model.TeamMembersWithErrorToTeamMembers(membersWithErrors))))
}
}
func removeTeamMember(c *Context, w http.ResponseWriter, r *http.Request) {

Просмотреть файл

@@ -1651,6 +1651,66 @@ func TestAddTeamMemberMyself(t *testing.T) {
}
func TestAddTeamMembersDomainConstrained(t *testing.T) {
th := Setup().InitBasic()
defer th.TearDown()
client := th.SystemAdminClient
team := th.BasicTeam
team.AllowedDomains = "domain1.com, domain2.com"
_, response := client.UpdateTeam(team)
require.Nil(t, response.Error)
// create two users on allowed domains
user1, response := client.CreateUser(&model.User{
Email: "user@domain1.com",
Password: "Pa$$word11",
Username: GenerateTestUsername(),
})
require.Nil(t, response.Error)
user2, response := client.CreateUser(&model.User{
Email: "user@domain2.com",
Password: "Pa$$word11",
Username: GenerateTestUsername(),
})
require.Nil(t, response.Error)
userList := []string{
user1.Id,
user2.Id,
}
// validate that they can be added
tm, response := client.AddTeamMembers(team.Id, userList)
require.Nil(t, response.Error)
require.Len(t, tm, 2)
// cleanup
_, response = client.RemoveTeamMember(team.Id, user1.Id)
require.Nil(t, response.Error)
_, response = client.RemoveTeamMember(team.Id, user2.Id)
require.Nil(t, response.Error)
// disable one of the allowed domains
team.AllowedDomains = "domain1.com"
_, response = client.UpdateTeam(team)
require.Nil(t, response.Error)
// validate that they cannot be added
_, response = client.AddTeamMembers(team.Id, userList)
require.NotNil(t, response.Error)
// validate that one user can be added gracefully
members, response := client.AddTeamMembersGracefully(team.Id, userList)
require.Nil(t, response.Error)
require.Len(t, members, 2)
require.NotNil(t, members[0].Member)
require.NotNil(t, members[1].Error)
require.Equal(t, members[0].UserId, user1.Id)
require.Equal(t, members[1].UserId, user2.Id)
require.Nil(t, members[0].Error)
require.Nil(t, members[1].Member)
}
func TestAddTeamMembers(t *testing.T) {
th := Setup().InitBasic()
defer th.TearDown()