diff options
| author | MobileMachine\jeremy <[email protected]> | 2017-06-06 22:59:03 -0400 |
|---|---|---|
| committer | MobileMachine\jeremy <[email protected]> | 2017-06-06 22:59:03 -0400 |
| commit | 24725fa8681f906ab44d80687c09fecc171a2896 (patch) | |
| tree | 312a601df29aca7f8db9f44082d96ebc7a679138 /Core/Scripts/ThirdParty/github/tests/Exceptions.py | |
| parent | Initial commit (diff) | |
| download | artv2-24725fa8681f906ab44d80687c09fecc171a2896.tar.xz artv2-24725fa8681f906ab44d80687c09fecc171a2896.zip | |
Initial Submission
First submission of current state of ARTv2. Currently considered to be in Alpha. There are a couple of animation tools not implemented yet, and one module not implemented yet, as well as incomplete documentation.
Diffstat (limited to 'Core/Scripts/ThirdParty/github/tests/Exceptions.py')
| -rw-r--r-- | Core/Scripts/ThirdParty/github/tests/Exceptions.py | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/Core/Scripts/ThirdParty/github/tests/Exceptions.py b/Core/Scripts/ThirdParty/github/tests/Exceptions.py new file mode 100644 index 0000000..dfaf109 --- /dev/null +++ b/Core/Scripts/ThirdParty/github/tests/Exceptions.py @@ -0,0 +1,135 @@ +# -*- coding: utf-8 -*- + +# ########################## Copyrights and license ############################ +# # +# Copyright 2012 Vincent Jacques <[email protected]> # +# Copyright 2012 Zearin <[email protected]> # +# Copyright 2013 Vincent Jacques <[email protected]> # +# # +# This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # +# # +# PyGithub is free software: you can redistribute it and/or modify it under # +# the terms of the GNU Lesser General Public License as published by the Free # +# Software Foundation, either version 3 of the License, or (at your option) # +# any later version. # +# # +# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # +# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # +# details. # +# # +# You should have received a copy of the GNU Lesser General Public License # +# along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # +# # +# ############################################################################## + +import github +import sys + +import Framework + +atLeastPython26 = sys.hexversion >= 0x02060000 +atMostPython2 = sys.hexversion < 0x03000000 + + +class Exceptions(Framework.TestCase): # To stay compatible with Python 2.6, we do not use self.assertRaises with only one argument + def testInvalidInput(self): + raised = False + try: + self.g.get_user().create_key("Bad key", "xxx") + except github.GithubException, exception: + raised = True + self.assertEqual(exception.status, 422) + self.assertEqual( + exception.data, + { + "errors": [ + { + "code": "custom", + "field": "key", + "message": "key is invalid. It must begin with 'ssh-rsa' or 'ssh-dss'. Check that you're copying the public half of the key", + "resource": "PublicKey" + } + ], + "message": "Validation Failed" + } + ) + self.assertTrue(raised) + + def testNonJsonDataReturnedByGithub(self): + # Replay data was forged according to https://github.com/jacquev6/PyGithub/pull/182 + raised = False + try: + self.g.get_user("jacquev6") + except github.GithubException, exception: + raised = True + self.assertEqual(exception.status, 503) + self.assertEqual( + exception.data, + { + "data": "<html><body><h1>503 Service Unavailable</h1>No server is available to handle this request.</body></html>", + } + ) + self.assertTrue(raised) + + def testUnknownObject(self): + raised = False + try: + self.g.get_user().get_repo("Xxx") + except github.GithubException, exception: + raised = True + self.assertEqual(exception.status, 404) + self.assertEqual(exception.data, {"message": "Not Found"}) + if atLeastPython26 and atMostPython2: + self.assertEqual(str(exception), "404 {u'message': u'Not Found'}") + else: + self.assertEqual(str(exception), "404 {'message': 'Not Found'}") # pragma no cover (Covered with Python 3) + self.assertTrue(raised) + + def testUnknownUser(self): + raised = False + try: + self.g.get_user("ThisUserShouldReallyNotExist") + except github.GithubException, exception: + raised = True + self.assertEqual(exception.status, 404) + self.assertEqual(exception.data, {"message": "Not Found"}) + if atLeastPython26 and atMostPython2: + self.assertEqual(str(exception), "404 {u'message': u'Not Found'}") + else: + self.assertEqual(str(exception), "404 {'message': 'Not Found'}") # pragma no cover (Covered with Python 3) + self.assertTrue(raised) + + def testBadAuthentication(self): + raised = False + try: + github.Github("BadUser", "BadPassword").get_user().login + except github.GithubException, exception: + raised = True + self.assertEqual(exception.status, 401) + self.assertEqual(exception.data, {"message": "Bad credentials"}) + if atLeastPython26 and atMostPython2: + self.assertEqual(str(exception), "401 {u'message': u'Bad credentials'}") + else: + self.assertEqual(str(exception), "401 {'message': 'Bad credentials'}") # pragma no cover (Covered with Python 3) + self.assertTrue(raised) + + +class SpecificExceptions(Framework.TestCase): + def testBadCredentials(self): + self.assertRaises(github.BadCredentialsException, lambda: github.Github("BadUser", "BadPassword").get_user().login) + + def testUnknownObject(self): + self.assertRaises(github.UnknownObjectException, lambda: self.g.get_user().get_repo("Xxx")) + + def testBadUserAgent(self): + self.assertRaises(github.BadUserAgentException, lambda: github.Github(self.login, self.password, user_agent="").get_user().name) + + def testRateLimitExceeded(self): + g = github.Github() + + def exceed(): + for i in range(100): + g.get_user("jacquev6") + + self.assertRaises(github.RateLimitExceededException, exceed) |