diff --git a/github/Team.py b/github/Team.py index 9491020b..7b0f3b7d 100644 --- a/github/Team.py +++ b/github/Team.py @@ -125,16 +125,29 @@ class Team(github.GithubObject.CompletableGithubObject): self.url + "/members/" + member._identity ) - def add_membership(self, member): + def add_membership(self, member, role=github.GithubObject.NotSet): """ :calls: `PUT /teams/:id/memberships/:user `_ :param member: :class:`github.Nameduser.NamedUser` + :param role: string :rtype: None """ assert isinstance(member, github.NamedUser.NamedUser), member + assert role is github.GithubObject.NotSet or isinstance( + role, (str, unicode)), role + if role is not github.GithubObject.NotSet: + assert role in ['member', 'maintainer'] + put_parameters = { + "role": role, + } + else: + put_parameters = { + "role": "member", + } headers, data = self._requester.requestJsonAndCheck( "PUT", - self.url + "/memberships/" + member._identity + self.url + "/memberships/" + member._identity, + input=put_parameters ) def add_to_repos(self, repo): diff --git a/github/tests/ReplayData/Team.testMembers.txt b/github/tests/ReplayData/Team.testMembers.txt index 17223850..8ab4ad81 100644 --- a/github/tests/ReplayData/Team.testMembers.txt +++ b/github/tests/ReplayData/Team.testMembers.txt @@ -102,8 +102,8 @@ PUT api.github.com None /teams/189850/memberships/jacquev6 -{'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} -None +{'Content-Type': 'application/json', 'Authorization': 'Basic login_and_password_removed', 'User-Agent': 'PyGithub/Python'} +{"role": "maintainer"} 200 -[('status', '200 No Content'), ('x-ratelimit-remaining', '4971'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '"d41d8cd98f00b204e9800998ecf8427e"'), ('date', 'Sat, 26 May 2012 21:09:55 GMT')] +[('status', '200 OK'), ('x-ratelimit-remaining', '4949'), ('content-length', '151'), ('server', 'nginx/1.0.13'), ('connection', 'keep-alive'), ('x-ratelimit-limit', '5000'), ('etag', '"8856425cedbdf3075576e823f39fc3d6"'), ('date', 'Sat, 26 May 2012 21:14:46 GMT'), ('content-type', 'application/json; charset=utf-8')] [] diff --git a/github/tests/Team.py b/github/tests/Team.py index 8df352f3..b4a5c820 100644 --- a/github/tests/Team.py +++ b/github/tests/Team.py @@ -54,7 +54,8 @@ class Team(Framework.TestCase): self.team.remove_from_members(user) self.assertListKeyEqual(self.team.get_members(), None, []) self.assertFalse(self.team.has_in_members(user)) - self.team.add_membership(user) + self.team.add_membership(user, "maintainer") + self.assertRaises(AssertionError, self.team.add_membership, user, "admin") def testRepoPermission(self): repo = self.org.get_repo("FatherBeaver")