From 24725fa8681f906ab44d80687c09fecc171a2896 Mon Sep 17 00:00:00 2001 From: "MobileMachine\\jeremy" Date: Tue, 6 Jun 2017 22:59:03 -0400 Subject: 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. --- Core/Scripts/ThirdParty/github/tests/Exceptions.py | 135 +++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 Core/Scripts/ThirdParty/github/tests/Exceptions.py (limited to 'Core/Scripts/ThirdParty/github/tests/Exceptions.py') 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 # +# Copyright 2012 Zearin # +# Copyright 2013 Vincent Jacques # +# # +# 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 . # +# # +# ############################################################################## + +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": "

503 Service Unavailable

No server is available to handle this request.", + } + ) + 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) -- cgit v1.2.3