NamedUser.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 2017 Simon <spam@esemi.ru> # 10 # Copyright 2018 namc <namratachaudhary@users.noreply.github.com> # 11 # Copyright 2018 sfdye <tsfdye@gmail.com> # 12 # Copyright 2018 itsbruce <it.is.bruce@gmail.com> # 13 # # 14 # This file is part of PyGithub. # 15 # http://pygithub.readthedocs.io/ # 16 # # 17 # PyGithub is free software: you can redistribute it and/or modify it under # 18 # the terms of the GNU Lesser General Public License as published by the Free # 19 # Software Foundation, either version 3 of the License, or (at your option) # 20 # any later version. # 21 # # 22 # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # 23 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # 24 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # 25 # details. # 26 # # 27 # You should have received a copy of the GNU Lesser General Public License # 28 # along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # 29 # # 30 ################################################################################ 31 32 from datetime import datetime, timezone 33 34 from . import Framework 35 36 37 class NamedUser(Framework.TestCase): 38 def setUp(self): 39 super().setUp() 40 self.user = self.g.get_user("jacquev6") 41 42 def testAttributesOfOtherUser(self): 43 self.user = self.g.get_user("nvie") 44 self.assertEqual( 45 self.user.avatar_url, 46 "https://secure.gravatar.com/avatar/c5a7f21b46df698f3db31c37ed0cf55a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png", 47 ) 48 self.assertEqual(self.user.bio, None) 49 self.assertEqual(self.user.blog, "http://nvie.com") 50 self.assertEqual(self.user.collaborators, None) 51 self.assertEqual(self.user.company, "3rd Cloud") 52 self.assertEqual( 53 self.user.created_at, 54 datetime(2009, 5, 12, 21, 19, 38, tzinfo=timezone.utc), 55 ) 56 self.assertEqual(self.user.disk_usage, None) 57 self.assertEqual(self.user.email, "vincent@3rdcloud.com") 58 self.assertEqual(self.user.followers, 296) 59 self.assertEqual(self.user.following, 41) 60 self.assertEqual(self.user.gravatar_id, "c5a7f21b46df698f3db31c37ed0cf55a") 61 self.assertFalse(self.user.hireable) 62 self.assertEqual(self.user.html_url, "https://github.com/nvie") 63 self.assertEqual(self.user.id, 83844) 64 self.assertEqual(self.user.location, "Netherlands") 65 self.assertEqual(self.user.login, "nvie") 66 self.assertEqual(self.user.name, "Vincent Driessen") 67 self.assertEqual(self.user.owned_private_repos, None) 68 self.assertEqual(self.user.plan, None) 69 self.assertEqual(self.user.private_gists, None) 70 self.assertEqual(self.user.public_gists, 16) 71 self.assertEqual(self.user.public_repos, 61) 72 self.assertEqual(self.user.suspended_at, None) 73 self.assertEqual(self.user.total_private_repos, None) 74 self.assertEqual(self.user.twitter_username, "nvie") 75 self.assertEqual(self.user.type, "User") 76 self.assertEqual(self.user.url, "https://api.github.com/users/nvie") 77 self.assertEqual(self.user.node_id, "MDQ6VXNlcjgzODQ0") 78 self.assertEqual(repr(self.user), 'NamedUser(login="nvie")') 79 80 def testAttributesOfSelf(self): 81 self.assertEqual( 82 self.user.avatar_url, 83 "https://secure.gravatar.com/avatar/b68de5ae38616c296fa345d2b9df2225?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png", 84 ) 85 self.assertEqual(self.user.bio, "") 86 self.assertEqual(self.user.blog, "http://vincent-jacques.net") 87 self.assertEqual(self.user.collaborators, 0) 88 self.assertEqual(self.user.company, "Criteo") 89 self.assertEqual( 90 self.user.created_at, 91 datetime(2010, 7, 9, 6, 10, 6, tzinfo=timezone.utc), 92 ) 93 self.assertEqual(self.user.disk_usage, 17080) 94 self.assertEqual(self.user.email, "vincent@vincent-jacques.net") 95 self.assertEqual(self.user.followers, 13) 96 self.assertEqual(self.user.following, 24) 97 self.assertEqual(self.user.gravatar_id, "b68de5ae38616c296fa345d2b9df2225") 98 self.assertFalse(self.user.hireable) 99 self.assertEqual(self.user.html_url, "https://github.com/jacquev6") 100 self.assertEqual(self.user.id, 327146) 101 self.assertEqual(self.user.location, "Paris, France") 102 self.assertEqual(self.user.login, "jacquev6") 103 self.assertEqual(self.user.name, "Vincent Jacques") 104 self.assertEqual(self.user.owned_private_repos, 5) 105 self.assertEqual(self.user.plan.name, "micro") 106 self.assertEqual(self.user.plan.collaborators, 1) 107 self.assertEqual(self.user.plan.space, 614400) 108 self.assertEqual(self.user.plan.private_repos, 5) 109 self.assertEqual(self.user.private_gists, 5) 110 self.assertEqual(self.user.public_gists, 2) 111 self.assertEqual(self.user.public_repos, 11) 112 self.assertEqual( 113 self.user.suspended_at, 114 datetime(2013, 8, 10, 7, 11, 7, tzinfo=timezone.utc), 115 ) 116 self.assertEqual(self.user.total_private_repos, 5) 117 self.assertIsNone(self.user.twitter_username) 118 self.assertEqual(self.user.type, "User") 119 self.assertEqual(self.user.url, "https://api.github.com/users/jacquev6") 120 self.assertEqual(self.user.node_id, "MDQ6VXNlcjMyNzE0Ng==") 121 self.assertEqual(repr(self.user), 'NamedUser(login="jacquev6")') 122 self.assertEqual(repr(self.user.plan), 'Plan(name="micro")') 123 124 def testGetGists(self): 125 self.assertListKeyEqual( 126 self.user.get_gists(), 127 lambda g: g.description, 128 [ 129 "Gist created by PyGithub", 130 "FairThreadPoolPool.cpp", 131 "How to error 500 Github API v3, as requested by Rick (GitHub Staff)", 132 "Cadfael: order of episodes in French DVD edition", 133 ], 134 ) 135 self.assertListKeyEqual( 136 self.user.get_gists(since=datetime(2012, 3, 1, 17, 0, 0)), 137 lambda g: g.description, 138 ["Gist created by PyGithub", "FairThreadPoolPool.cpp"], 139 ) 140 141 def testGetFollowers(self): 142 self.assertListKeyEqual( 143 self.user.get_followers(), 144 lambda f: f.login, 145 [ 146 "jnorthrup", 147 "brugidou", 148 "regisb", 149 "walidk", 150 "afzalkhan", 151 "sdanzan", 152 "vineus", 153 "gturri", 154 "fjardon", 155 "cjuniet", 156 "jardon-u", 157 "kamaradclimber", 158 "L42y", 159 ], 160 ) 161 162 def testGetFollowing(self): 163 self.assertListKeyEqual( 164 self.user.get_following(), 165 lambda f: f.login, 166 [ 167 "nvie", 168 "schacon", 169 "jamis", 170 "chad", 171 "unclebob", 172 "dabrahams", 173 "jnorthrup", 174 "brugidou", 175 "regisb", 176 "walidk", 177 "tanzilli", 178 "fjardon", 179 "r3c", 180 "sdanzan", 181 "vineus", 182 "cjuniet", 183 "gturri", 184 "ant9000", 185 "asquini", 186 "claudyus", 187 "jardon-u", 188 "s-bernard", 189 "kamaradclimber", 190 "Lyloa", 191 ], 192 ) 193 194 def testHasInFollowing(self): 195 nvie = self.g.get_user("nvie") 196 self.assertTrue(self.user.has_in_following(nvie)) 197 198 def testGetOrgs(self): 199 self.assertListKeyEqual(self.user.get_orgs(), lambda o: o.login, ["BeaverSoftware"]) 200 201 def testGetOrganizationMembership(self): 202 o = self.user.get_orgs() 203 membership = self.user.get_organization_membership(o[0]) 204 self.assertEqual( 205 repr(membership), 206 'Membership(url="https://api.github.com/orgs/BeaverSoftware/memberships/jacquev6")', 207 ) 208 self.assertEqual(self.user.login, membership.user.login) 209 self.assertEqual(membership.state, "active") 210 self.assertEqual(membership.role, "member") 211 self.assertEqual( 212 membership.url, 213 "https://api.github.com/orgs/BeaverSoftware/memberships/jacquev6", 214 ) 215 self.assertEqual(membership.organization.login, "BeaverSoftware") 216 self.assertEqual(membership.organization_url, "https://api.github.com/orgs/BeaverSoftware") 217 218 def testGetOrganizationMembershipNotMember(self): 219 from github import UnknownObjectException 220 221 self.assertRaises( 222 UnknownObjectException, 223 self.user.get_organization_membership, 224 "BeaverSoftware", 225 ) 226 227 def testGetRepo(self): 228 self.assertEqual( 229 self.user.get_repo("PyGithub").description, 230 "Python library implementing the full Github API v3", 231 ) 232 233 def testGetRepos(self): 234 self.assertListKeyEqual( 235 self.user.get_repos(), 236 lambda r: r.name, 237 [ 238 "TestPyGithub", 239 "django", 240 "PyGithub", 241 "developer.github.com", 242 "acme-public-website", 243 "C4Planner", 244 "DrawTurksHead", 245 "DrawSyntax", 246 "QuadProgMm", 247 "Boost.HierarchicalEnum", 248 "ViDE", 249 ], 250 ) 251 252 def testGetReposWithAllArgs(self): 253 self.assertListKeyEqual( 254 self.user.get_repos(type="owner", sort="created", direction="asc"), 255 lambda r: r.name, 256 [ 257 "DrawTurksHead", 258 "vincent-jacques.net", 259 "IpMap", 260 "MockMockMock", 261 "ActionTree", 262 "InteractiveCommandLine", 263 "RecursiveDocument", 264 "MarblesCollide", 265 "jacquev6.github.io", 266 "LowVoltage", 267 ], 268 ) 269 270 def testGetWatched(self): 271 self.assertListKeyEqual( 272 self.user.get_watched(), 273 lambda r: r.name, 274 [ 275 "git", 276 "boost.php", 277 "capistrano", 278 "boost.perl", 279 "git-subtree", 280 "git-hg", 281 "homebrew", 282 "celtic_knot", 283 "twisted-intro", 284 "markup", 285 "hub", 286 "gitflow", 287 "murder", 288 "boto", 289 "agit", 290 "d3", 291 "pygit2", 292 "git-pulls", 293 "django_mathlatex", 294 "scrumblr", 295 "developer.github.com", 296 "python-github3", 297 "PlantUML", 298 "bootstrap", 299 "drawnby", 300 "django-socketio", 301 "django-realtime", 302 "playground", 303 "BozoCrack", 304 "FatherBeaver", 305 "PyGithub", 306 "django", 307 "django", 308 "TestPyGithub", 309 ], 310 ) 311 312 def testGetStarred(self): 313 self.assertListKeyEqual( 314 self.user.get_starred(), 315 lambda r: r.name, 316 [ 317 "git", 318 "boost.php", 319 "capistrano", 320 "boost.perl", 321 "git-subtree", 322 "git-hg", 323 "homebrew", 324 "celtic_knot", 325 "twisted-intro", 326 "markup", 327 "hub", 328 "gitflow", 329 "murder", 330 "boto", 331 "agit", 332 "d3", 333 "pygit2", 334 "git-pulls", 335 "django_mathlatex", 336 "scrumblr", 337 "developer.github.com", 338 "python-github3", 339 "PlantUML", 340 "bootstrap", 341 "drawnby", 342 "django-socketio", 343 "django-realtime", 344 "playground", 345 "BozoCrack", 346 "FatherBeaver", 347 "amaunet", 348 "django", 349 "django", 350 "moviePlanning", 351 "folly", 352 ], 353 ) 354 355 def testGetSubscriptions(self): 356 self.assertListKeyEqual( 357 self.user.get_subscriptions(), 358 lambda r: r.name, 359 [ 360 "ViDE", 361 "Boost.HierarchicalEnum", 362 "QuadProgMm", 363 "DrawSyntax", 364 "DrawTurksHead", 365 "PrivateStuff", 366 "vincent-jacques.net", 367 "Hacking", 368 "C4Planner", 369 "developer.github.com", 370 "PyGithub", 371 "PyGithub", 372 "django", 373 "CinePlanning", 374 "PyGithub", 375 "PyGithub", 376 "PyGithub", 377 "IpMap", 378 "PyGithub", 379 "PyGithub", 380 "PyGithub", 381 "PyGithub", 382 "PyGithub", 383 "PyGithub", 384 "PyGithub", 385 "PyGithub", 386 "PyGithub", 387 "PyGithub", 388 "PyGithub", 389 "PyGithub", 390 ], 391 ) 392 393 def testGetEvents(self): 394 self.assertListKeyBegin( 395 self.user.get_events(), 396 lambda e: e.type, 397 ["GistEvent", "IssueCommentEvent", "PushEvent", "IssuesEvent"], 398 ) 399 400 def testGetPublicEvents(self): 401 self.assertListKeyBegin( 402 self.user.get_public_events(), 403 lambda e: e.type, 404 ["PushEvent", "CreateEvent", "GistEvent", "IssuesEvent"], 405 ) 406 407 def testGetPublicReceivedEvents(self): 408 self.assertListKeyBegin( 409 self.user.get_public_received_events(), 410 lambda e: e.type, 411 [ 412 "IssueCommentEvent", 413 "IssueCommentEvent", 414 "IssueCommentEvent", 415 "IssueCommentEvent", 416 ], 417 ) 418 419 def testGetReceivedEvents(self): 420 self.assertListKeyBegin( 421 self.user.get_received_events(), 422 lambda e: e.type, 423 [ 424 "IssueCommentEvent", 425 "IssueCommentEvent", 426 "IssueCommentEvent", 427 "IssueCommentEvent", 428 ], 429 ) 430 431 def testGetKeys(self): 432 self.assertListKeyEqual( 433 self.user.get_keys(), 434 lambda k: k.id, 435 [3557894, 3791954, 3937333, 4051357, 4051492], 436 ) 437 438 def testUserEquality(self): 439 u1 = self.g.get_user("nvie") 440 u2 = self.g.get_user("nvie") 441 self.assertTrue(u1 == u2) 442 self.assertEqual(u1, u2) 443 self.assertEqual(u1.__hash__(), u2.__hash__())