| """Tests for httplib2 on Google App Engine.""" | |
| import mock | |
| import os | |
| import sys | |
| import unittest | |
| APP_ENGINE_PATH = "/usr/local/google_appengine" | |
| sys.path.insert(0, APP_ENGINE_PATH) | |
| import dev_appserver | |
| dev_appserver.fix_sys_path() | |
| from google.appengine.ext import testbed | |
| # Ensure that we are not loading the httplib2 version included in the Google | |
| # App Engine SDK. | |
| sys.path.insert(0, os.path.dirname(os.path.realpath(__file__))) | |
| class AberrationsTest(unittest.TestCase): | |
| def setUp(self): | |
| self.testbed = testbed.Testbed() | |
| self.testbed.activate() | |
| self.testbed.init_urlfetch_stub() | |
| def tearDown(self): | |
| self.testbed.deactivate() | |
| @mock.patch.dict("os.environ", {"SERVER_SOFTWARE": ""}) | |
| def testConnectionInit(self): | |
| global httplib2 | |
| import httplib2 | |
| self.assertNotEqual( | |
| httplib2.SCHEME_TO_CONNECTION["https"], httplib2.AppEngineHttpsConnection | |
| ) | |
| self.assertNotEqual( | |
| httplib2.SCHEME_TO_CONNECTION["http"], httplib2.AppEngineHttpConnection | |
| ) | |
| del globals()["httplib2"] | |
| class AppEngineHttpTest(unittest.TestCase): | |
| def setUp(self): | |
| self.testbed = testbed.Testbed() | |
| self.testbed.activate() | |
| self.testbed.init_urlfetch_stub() | |
| global httplib2 | |
| import httplib2 | |
| reload(httplib2) | |
| def tearDown(self): | |
| self.testbed.deactivate() | |
| del globals()["httplib2"] | |
| def testConnectionInit(self): | |
| self.assertEqual( | |
| httplib2.SCHEME_TO_CONNECTION["https"], httplib2.AppEngineHttpsConnection | |
| ) | |
| self.assertEqual( | |
| httplib2.SCHEME_TO_CONNECTION["http"], httplib2.AppEngineHttpConnection | |
| ) | |
| def testGet(self): | |
| http = httplib2.Http() | |
| response, content = http.request("http://www.google.com") | |
| self.assertEqual( | |
| httplib2.SCHEME_TO_CONNECTION["https"], httplib2.AppEngineHttpsConnection | |
| ) | |
| self.assertEquals(1, len(http.connections)) | |
| self.assertEquals(response.status, 200) | |
| self.assertEquals(response["status"], "200") | |
| def testProxyInfoIgnored(self): | |
| http = httplib2.Http(proxy_info=mock.MagicMock()) | |
| response, content = http.request("http://www.google.com") | |
| self.assertEquals(response.status, 200) | |
| if __name__ == "__main__": | |
| unittest.main() |