Team.py
1 ############################ Copyrights and license ############################ 2 # # 3 # Copyright 2012 Vincent Jacques <vincent@vincent-jacques.net> # 4 # Copyright 2012 Zearin <zearin@gonk.net> # 5 # Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net> # 6 # Copyright 2014 Vincent Jacques <vincent@vincent-jacques.net> # 7 # Copyright 2016 Jannis Gebauer <ja.geb@me.com> # 8 # Copyright 2016 Peter Buckley <dx-pbuckley@users.noreply.github.com> # 9 # Copyright 2016 mattjmorrison <mattjmorrison@mattjmorrison.com> # 10 # Copyright 2018 Isuru Fernando <isuruf@gmail.com> # 11 # Copyright 2018 Jacopo Notarstefano <jacopo.notarstefano@gmail.com> # 12 # Copyright 2018 James D'Amato <james.j.damato@gmail.com> # 13 # Copyright 2018 Steve Kowalik <steven@wedontsleep.org> # 14 # Copyright 2018 Tim Boring <tboring@hearst.com> # 15 # Copyright 2018 sfdye <tsfdye@gmail.com> # 16 # # 17 # This file is part of PyGithub. # 18 # http://pygithub.readthedocs.io/ # 19 # # 20 # PyGithub is free software: you can redistribute it and/or modify it under # 21 # the terms of the GNU Lesser General Public License as published by the Free # 22 # Software Foundation, either version 3 of the License, or (at your option) # 23 # any later version. # 24 # # 25 # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # 26 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # 27 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # 28 # details. # 29 # # 30 # You should have received a copy of the GNU Lesser General Public License # 31 # along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # 32 # # 33 ################################################################################ 34 35 36 import warnings 37 from datetime import datetime, timezone 38 39 from . import Framework 40 41 42 class Team(Framework.TestCase): 43 def setUp(self): 44 super().setUp() 45 self.org = self.g.get_organization("BeaverSoftware") 46 self.team = self.org.get_team(189850) 47 48 def testAttributes(self): 49 self.assertEqual(self.team.id, 189850) 50 self.assertEqual(self.team.members_count, 0) 51 self.assertEqual(self.team.name, "Team created by PyGithub") 52 self.assertEqual(self.team.permission, "pull") 53 self.assertEqual(self.team.repos_count, 0) 54 self.assertEqual(self.team.url, "https://api.github.com/teams/189850") 55 self.assertEqual(self.team.organization, self.org) 56 self.assertEqual(self.team.privacy, "closed") 57 self.assertEqual(self.team.parent, None) 58 self.assertEqual(repr(self.team), 'Team(name="Team created by PyGithub", id=189850)') 59 self.assertEqual(self.team.html_url, "https://github.com/orgs/BeaverSoftware/teams/core") 60 61 def testDiscussions(self): 62 discussions = list(self.team.get_discussions()) 63 self.assertEqual(len(discussions), 1) 64 65 d = discussions[0] 66 self.assertEqual(d.author.login, "jacquev6") 67 self.assertEqual(d.body, "BODY") 68 self.assertEqual(d.body_html, "<p>BODY</p>") 69 self.assertEqual(d.body_version, "bedf0740b01d2d758cff9873c2387817") 70 self.assertEqual(d.comments_count, 0) 71 self.assertEqual(d.comments_url, "https://api.github.com/teams/189850/discussions/1/comments") 72 self.assertEqual(d.created_at, datetime(2019, 10, 8, 21, 3, 36, tzinfo=timezone.utc)) 73 self.assertEqual( 74 d.html_url, 75 "https://github.com/orgs/BeaverSoftware/teams/Team/discussions/1", 76 ) 77 self.assertEqual(d.last_edited_at, None) 78 self.assertEqual(d.node_id, "MDE0OlRlYW1EaXNjdXNzaW9uMzA=") 79 self.assertEqual(d.number, 1) 80 self.assertEqual(d.pinned, True) 81 self.assertEqual(d.private, False) 82 self.assertEqual(d.team_url, "https://api.github.com/teams/189850") 83 self.assertEqual(d.title, "TITLE") 84 self.assertEqual(d.updated_at, datetime(2019, 10, 8, 21, 3, 36, tzinfo=timezone.utc)) 85 self.assertEqual(d.url, "https://api.github.com/teams/189850/discussions/1") 86 self.assertEqual(repr(d), 'TeamDiscussion(title="TITLE", number=1)') 87 88 def testMembers(self): 89 user = self.g.get_user("jacquev6") 90 self.assertListKeyEqual(self.team.get_members(), None, []) 91 self.assertFalse(self.team.has_in_members(user)) 92 self.team.add_to_members(user) 93 self.assertListKeyEqual(self.team.get_members(), lambda u: u.login, ["jacquev6"]) 94 self.assertTrue(self.team.has_in_members(user)) 95 self.team.remove_from_members(user) 96 self.assertListKeyEqual(self.team.get_members(), None, []) 97 self.assertFalse(self.team.has_in_members(user)) 98 self.team.add_membership(user, "maintainer") 99 self.assertRaises(AssertionError, self.team.add_membership, user, "admin") 100 self.team.remove_membership(user) 101 102 def testTeamMembership(self): 103 user = self.g.get_user("jacquev6") 104 self.assertEqual(list(self.team.get_members()), []) 105 self.assertFalse(self.team.has_in_members(user)) 106 self.team.add_membership(user) 107 self.assertListKeyEqual(self.team.get_members(), lambda u: u.login, ["jacquev6"]) 108 self.assertTrue(self.team.has_in_members(user)) 109 membership_data = self.team.get_team_membership(user) 110 self.assertEqual(membership_data.user.login, "jacquev6") 111 self.assertEqual(membership_data.role, "member") 112 self.assertEqual(membership_data.organization.login, "BeaverSoftware") 113 114 def testRepoPermission(self): 115 repo = self.org.get_repo("FatherBeaver") 116 # Ignore the warning since this method is deprecated 117 warnings.filterwarnings("ignore", category=DeprecationWarning) 118 self.team.set_repo_permission(repo, "admin") 119 warnings.resetwarnings() 120 121 def testUpdateTeamRepository(self): 122 repo = self.org.get_repo("FatherBeaver") 123 self.assertTrue(self.team.update_team_repository(repo, "admin")) 124 125 def testRepos(self): 126 repo = self.org.get_repo("FatherBeaver") 127 self.assertListKeyEqual(self.team.get_repos(), None, []) 128 self.assertFalse(self.team.has_in_repos(repo)) 129 self.assertIsNone(self.team.get_repo_permission(repo)) 130 self.team.add_to_repos(repo) 131 self.assertListKeyEqual(self.team.get_repos(), lambda r: r.name, ["FatherBeaver"]) 132 self.assertTrue(self.team.has_in_repos(repo)) 133 permissions = self.team.get_repo_permission(repo) 134 self.assertTrue(permissions.pull) 135 self.team.remove_from_repos(repo) 136 self.assertListKeyEqual(self.team.get_repos(), None, []) 137 self.assertFalse(self.team.has_in_repos(repo)) 138 139 def testEditWithoutArguments(self): 140 self.team.edit("Name edited by PyGithub") 141 self.assertEqual(self.team.name, "Name edited by PyGithub") 142 143 def testEditWithAllArguments(self): 144 self.team.edit( 145 "Name edited twice by PyGithub", 146 "Description edited by PyGithub", 147 "admin", 148 "secret", 149 ) 150 self.assertEqual(self.team.name, "Name edited twice by PyGithub") 151 self.assertEqual(self.team.description, "Description edited by PyGithub") 152 self.assertEqual(self.team.permission, "admin") 153 self.assertEqual(self.team.privacy, "secret") 154 155 def testGetTeams(self): 156 nested_teams = self.team.get_teams() 157 self.assertListKeyEqual(nested_teams, lambda t: t.name, ["DummyTeam1", "DummyTeam2", "DummyTeam3"]) 158 parent = nested_teams[0].parent 159 self.assertEqual(self.team.name, parent.name) 160 self.assertEqual(self.team.id, parent.id) 161 162 def testDelete(self): 163 self.team.delete()