]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Fix some iter{items,keys,values} calls that slipped through the cracks.
authorBen Darnell <ben@bendarnell.com>
Sun, 20 Jan 2013 20:40:31 +0000 (15:40 -0500)
committerBen Darnell <ben@bendarnell.com>
Sun, 20 Jan 2013 20:59:01 +0000 (15:59 -0500)
Add tests for the functions that were thereby revealed to have none.

tornado/auth.py
tornado/curl_httpclient.py
tornado/httpclient.py
tornado/test/auth_test.py
tornado/test/httpclient_test.py
tornado/test/twisted_test.py
tornado/test/web_test.py
tornado/web.py

index 86193256875d0d11bcb02593fc3f772384468523..52900cb1039527ee2d4b59e11cd8941d269878ea 100644 (file)
@@ -165,7 +165,7 @@ class OpenIdMixin(object):
 
         # Make sure we got back at least an email from attribute exchange
         ax_ns = None
-        for name in self.request.arguments.keys():
+        for name in self.request.arguments:
             if name.startswith("openid.ns.") and \
                     self.get_argument(name) == u("http://openid.net/srv/ax/1.0"):
                 ax_ns = name[10:]
@@ -769,9 +769,9 @@ class GoogleMixin(OpenIdMixin, OAuthMixin):
         """Fetches the authenticated user data upon redirect."""
         # Look to see if we are doing combined OpenID/OAuth
         oauth_ns = ""
-        for name, values in self.request.arguments.iteritems():
+        for name, values in self.request.arguments.items():
             if name.startswith("openid.ns.") and \
-                    values[-1] == u("http://specs.openid.net/extensions/oauth/1.0"):
+                    values[-1] == b"http://specs.openid.net/extensions/oauth/1.0":
                 oauth_ns = name[10:]
                 break
         token = self.get_argument("openid." + oauth_ns + ".request_token", "")
index 6fea3253f8b9b68a0b160b00cd479bd019cd58e9..3a75a95c0d9b081a9533abd48072fbfe303a5094 100644 (file)
@@ -299,7 +299,7 @@ def _curl_setup_request(curl, request, buffer, headers):
                     [utf8("%s: %s" % i) for i in request.headers.get_all()])
     else:
         curl.setopt(pycurl.HTTPHEADER,
-                    [utf8("%s: %s" % i) for i in request.headers.iteritems()])
+                    [utf8("%s: %s" % i) for i in request.headers.items()])
 
     if request.header_callback:
         curl.setopt(pycurl.HEADERFUNCTION, request.header_callback)
index 46184cb0fa0fe218ed8a637c6c2e336298b24434..6fecdebbec9d82c42c0146c12d75b5cf8cd3988f 100644 (file)
@@ -382,7 +382,7 @@ class HTTPResponse(object):
             raise self.error
 
     def __repr__(self):
-        args = ",".join("%s=%r" % i for i in self.__dict__.iteritems())
+        args = ",".join("%s=%r" % i for i in sorted(self.__dict__.items()))
         return "%s(%s)" % (self.__class__.__name__, args)
 
 
index 80534a23980ede8626870081b0a49a384fd629fe..4ae1dba590509138042f07bac7e630ff00ace023 100644 (file)
@@ -5,7 +5,7 @@
 
 
 from __future__ import absolute_import, division, print_function, with_statement
-from tornado.auth import OpenIdMixin, OAuthMixin, OAuth2Mixin, TwitterMixin
+from tornado.auth import OpenIdMixin, OAuthMixin, OAuth2Mixin, TwitterMixin, GoogleMixin
 from tornado.escape import json_decode
 from tornado.testing import AsyncHTTPTestCase
 from tornado.util import u
@@ -132,6 +132,26 @@ class TwitterServerShowUserHandler(RequestHandler):
         self.write(dict(screen_name=screen_name, name=screen_name.capitalize()))
 
 
+class GoogleOpenIdClientLoginHandler(RequestHandler, GoogleMixin):
+    def initialize(self, test):
+        self._OPENID_ENDPOINT = test.get_url('/openid/server/authenticate')
+
+    @asynchronous
+    def get(self):
+        if self.get_argument("openid.mode", None):
+            self.get_authenticated_user(self.on_user)
+            return
+        self.authenticate_redirect()
+
+    def on_user(self, user):
+        if user is None:
+            raise Exception("user is None")
+        self.finish(user)
+
+    def get_auth_http_client(self):
+        return self.settings['http_client']
+
+
 class AuthTest(AsyncHTTPTestCase):
     def get_app(self):
         return Application(
@@ -151,6 +171,7 @@ class AuthTest(AsyncHTTPTestCase):
                 ('/oauth2/client/login', OAuth2ClientLoginHandler, dict(test=self)),
 
                 ('/twitter/client/login', TwitterClientLoginHandler, dict(test=self)),
+                ('/google/client/openid_login', GoogleOpenIdClientLoginHandler, dict(test=self)),
 
                 # simulated servers
                 ('/openid/server/authenticate', OpenIdServerAuthenticateHandler),
@@ -261,3 +282,16 @@ class AuthTest(AsyncHTTPTestCase):
                           u('name'): u('Foo'),
                           u('screen_name'): u('foo'),
                           u('username'): u('foo')})
+
+    def test_google_redirect(self):
+        # same as test_openid_redirect
+        response = self.fetch('/google/client/openid_login', follow_redirects=False)
+        self.assertEqual(response.code, 302)
+        self.assertTrue(
+            '/openid/server/authenticate?' in response.headers['Location'])
+
+    def test_google_get_user(self):
+        response = self.fetch('/google/client/openid_login?openid.mode=blah&openid.ns.ax=http://openid.net/srv/ax/1.0&openid.ax.type.email=http://axschema.org/contact/email&openid.ax.value.email=foo@example.com', follow_redirects=False)
+        response.rethrow()
+        parsed = json_decode(response.body)
+        self.assertEqual(parsed["email"], "foo@example.com")
index 99b3a686dde63ff5951915539076a723dda1904c..e04f7c451c128ce71a9cbe084fe6d38f916f1585 100644 (file)
@@ -9,7 +9,7 @@ import functools
 import sys
 
 from tornado.escape import utf8
-from tornado.httpclient import HTTPRequest, _RequestProxy
+from tornado.httpclient import HTTPRequest, HTTPResponse, _RequestProxy
 from tornado.iostream import IOStream
 from tornado import netutil
 from tornado.stack_context import ExceptionStackContext, NullContext
@@ -18,6 +18,10 @@ from tornado.test.util import unittest
 from tornado.util import u, bytes_type
 from tornado.web import Application, RequestHandler, url
 
+try:
+    from io import BytesIO  # python 3
+except ImportError:
+    from cStringIO import StringIO as BytesIO
 
 class HelloWorldHandler(RequestHandler):
     def get(self):
@@ -345,3 +349,12 @@ class RequestProxyTest(unittest.TestCase):
     def test_defaults_none(self):
         proxy = _RequestProxy(HTTPRequest('http://example.com/'), None)
         self.assertIs(proxy.auth_username, None)
+
+
+class HTTPResponseTestCase(unittest.TestCase):
+    def test_str(self):
+        response = HTTPResponse(HTTPRequest('http://example.com'),
+                                200, headers={}, buffer=BytesIO())
+        s = str(response)
+        self.assertTrue(s.startswith('HTTPResponse('))
+        self.assertIn('code=200', s)
index 197589826caba187529643a715a8930c69291456..ba00c309d05e1e842976919e036fb23cc007bb4b 100644 (file)
@@ -72,7 +72,7 @@ def save_signal_handlers():
 
 
 def restore_signal_handlers(saved):
-    for sig, handler in saved.iteritems():
+    for sig, handler in saved.items():
         signal.signal(sig, handler)
 
 
@@ -508,7 +508,7 @@ if have_twisted:
         ],
         'twisted.internet.test.test_unix.UNIXPortTestsBuilder': [],
     }
-    for test_name, blacklist in twisted_tests.iteritems():
+    for test_name, blacklist in twisted_tests.items():
         try:
             test_class = import_object(test_name)
         except (ImportError, AttributeError):
index 7a3cdc2b41f7674454649c475f1e13bf2457d567..e9dfb4cff1d4019ab12981d52236c9083de12f58 100644 (file)
@@ -1080,3 +1080,17 @@ class PathArgsInPrepareTest(WebTestCase):
         response.rethrow()
         data = json_decode(response.body)
         self.assertEqual(data, {'args': [], 'kwargs': {'path': 'foo'}})
+
+
+@wsgi_safe
+class ClearAllCookiesTest(SimpleHandlerTestCase):
+    class Handler(RequestHandler):
+        def get(self):
+            self.clear_all_cookies()
+            self.write('ok')
+
+    def test_clear_all_cookies(self):
+        response = self.fetch('/', headers={'Cookie': 'foo=bar; baz=xyzzy'})
+        set_cookies = sorted(response.headers.get_list('Set-Cookie'))
+        self.assertTrue(set_cookies[0].startswith('baz=;'))
+        self.assertTrue(set_cookies[1].startswith('foo=;'))
index 7fd0c208dee1a05518d93da1116b84c6e24203d9..05637034c3ed063cb4e36321e7e88c99b668dba9 100644 (file)
@@ -434,7 +434,7 @@ class RequestHandler(object):
 
     def clear_all_cookies(self):
         """Deletes all the cookies the user sent with this request."""
-        for name in self.request.cookies.iterkeys():
+        for name in self.request.cookies:
             self.clear_cookie(name)
 
     def set_secure_cookie(self, name, value, expires_days=30, **kwargs):