Browse Source

teams: defaulting invalid permission level to member permission level

Hugo Häggmark 6 years ago
parent
commit
c826f39a8b
2 changed files with 32 additions and 1 deletions
  1. 4 1
      pkg/services/sqlstore/team.go
  2. 28 0
      pkg/services/sqlstore/team_test.go

+ 4 - 1
pkg/services/sqlstore/team.go

@@ -271,7 +271,10 @@ func UpdateTeamMember(cmd *m.UpdateTeamMemberCommand) error {
 			return m.ErrTeamMemberNotFound
 		}
 
-		// TODO: check to make sure that permission is a legal value
+		if cmd.Permission != int64(m.PERMISSION_ADMIN) {
+			cmd.Permission = 0
+		}
+
 		member.Permission = cmd.Permission
 		_, err = sess.Cols("permission").Where("org_id=? and team_id=? and user_id=?", cmd.OrgId, cmd.TeamId, cmd.UserId).Update(member)
 

+ 28 - 0
pkg/services/sqlstore/team_test.go

@@ -102,6 +102,34 @@ func TestTeamCommandsAndQueries(t *testing.T) {
 				So(qAfterUpdate.Result[0].Permission, ShouldEqual, m.PERMISSION_ADMIN)
 			})
 
+			Convey("Should default to member permission level when updating a user with invalid permission level", func() {
+				userID := userIds[0]
+				team := group1.Result
+				addMemberCmd := m.AddTeamMemberCommand{OrgId: testOrgId, TeamId: team.Id, UserId: userID}
+				err = AddTeamMember(&addMemberCmd)
+				So(err, ShouldBeNil)
+
+				qBeforeUpdate := &m.GetTeamMembersQuery{OrgId: testOrgId, TeamId: team.Id}
+				err = GetTeamMembers(qBeforeUpdate)
+				So(err, ShouldBeNil)
+				So(qBeforeUpdate.Result[0].Permission, ShouldEqual, 0)
+
+				invalidPermissionLevel := 1337
+				err = UpdateTeamMember(&m.UpdateTeamMemberCommand{
+					UserId:     userID,
+					OrgId:      testOrgId,
+					TeamId:     team.Id,
+					Permission: int64(invalidPermissionLevel),
+				})
+
+				So(err, ShouldBeNil)
+
+				qAfterUpdate := &m.GetTeamMembersQuery{OrgId: testOrgId, TeamId: team.Id}
+				err = GetTeamMembers(qAfterUpdate)
+				So(err, ShouldBeNil)
+				So(qAfterUpdate.Result[0].Permission, ShouldEqual, 0)
+			})
+
 			Convey("Shouldn't be able to update a user not in the team.", func() {
 				err = UpdateTeamMember(&m.UpdateTeamMemberCommand{
 					UserId:     1,