summaryrefslogtreecommitdiff
path: root/python2
diff options
context:
space:
mode:
authorJoe Gregorio <jcgregorio@google.com>2011-06-22 16:43:39 -0400
committerJoe Gregorio <jcgregorio@google.com>2011-06-22 16:43:39 -0400
commit2149bbfe16b9fc813ad4f32bc582aaa50e5fa58f (patch)
treece313ec78de152cd2b3402eff4e8e174ca11c13f /python2
parentb2cfdf6c271f3100fd9789ba74ace0d6e3568e4a (diff)
downloadhttplib2-2149bbfe16b9fc813ad4f32bc582aaa50e5fa58f.tar.gz
Add unit tests for app engine specific code. Fix bugs found in said tests.
Diffstat (limited to 'python2')
-rw-r--r--python2/httplib2/__init__.py4
-rw-r--r--python2/httplib2test_appengine.py64
2 files changed, 67 insertions, 1 deletions
diff --git a/python2/httplib2/__init__.py b/python2/httplib2/__init__.py
index 158e967..f894ee2 100644
--- a/python2/httplib2/__init__.py
+++ b/python2/httplib2/__init__.py
@@ -147,6 +147,7 @@ class ServerNotFoundError(HttpLib2Error): pass
class ProxiesUnavailableError(HttpLib2Error): pass
class CertificateValidationUnsupported(HttpLib2Error): pass
class SSLHandshakeError(HttpLib2Error): pass
+class NotSupportedOnThisPlatform(HttpLib2Error): pass
class CertificateHostnameMismatch(SSLHandshakeError):
def __init__(self, desc, host, cert):
HttpLib2Error.__init__(self, desc)
@@ -976,7 +977,8 @@ try:
deadline=self.timeout,
validate_certificate=self.validate_certificate)
self.response = ResponseDict(response.headers)
- self.response['status'] = response.status_code
+ self.response['status'] = str(response.status_code)
+ self.response.status = response.status_code
setattr(self.response, 'read', lambda : response.content)
# Make sure the exceptions raised match the exceptions expected.
diff --git a/python2/httplib2test_appengine.py b/python2/httplib2test_appengine.py
new file mode 100644
index 0000000..25317e2
--- /dev/null
+++ b/python2/httplib2test_appengine.py
@@ -0,0 +1,64 @@
+"""
+httplib2test_appengine
+
+A set of unit tests for httplib2.py on Google App Engine
+
+"""
+
+__author__ = "Joe Gregorio (joe@bitworking.org)"
+__copyright__ = "Copyright 2011, Joe Gregorio"
+
+import os
+import sys
+import unittest
+
+# The test resources base uri
+base = 'http://bitworking.org/projects/httplib2/test/'
+#base = 'http://localhost/projects/httplib2/test/'
+cacheDirName = ".cache"
+APP_ENGINE_PATH='../../google_appengine'
+
+sys.path.insert(0, APP_ENGINE_PATH)
+
+import dev_appserver
+dev_appserver.fix_sys_path()
+
+from google.appengine.ext import testbed
+testbed = testbed.Testbed()
+testbed.activate()
+testbed.init_urlfetch_stub()
+
+import httplib2
+
+class AppEngineHttpTest(unittest.TestCase):
+ def setUp(self):
+ if os.path.exists(cacheDirName):
+ [os.remove(os.path.join(cacheDirName, file)) for file in os.listdir(cacheDirName)]
+
+ if sys.version_info < (2, 6):
+ disable_cert_validation = True
+ else:
+ disable_cert_validation = False
+
+ def test(self):
+ h = httplib2.Http()
+ response, content = h.request("http://bitworking.org")
+ self.assertEqual(httplib2.SCHEME_TO_CONNECTION['https'],
+ httplib2.AppEngineHttpsConnection)
+ print h.connections
+ self.assertEquals(1, len(h.connections))
+ self.assertEquals(type(h.connections['http:bitworking.org']),
+ httplib2.AppEngineHttpConnection)
+ self.assertEquals(response.status, 200)
+ self.assertEquals(response['status'], '200')
+
+ def test_no_key_or_cert_file(self):
+ h = httplib2.Http(proxy_info='foo.txt')
+ try:
+ response, content = h.request("http://bitworking.org")
+ self.fail('Should raise exception.')
+ except httplib2.NotSupportedOnThisPlatform:
+ pass
+
+if __name__ == '__main__':
+ unittest.main()