"""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()