Flows no longer need to be saved between uses.
Also introduces util.positional declarations.
Reviewed in http://codereview.appspot.com/6441056/.
Fixes issue #136.
diff --git a/tests/test_oauth2client_appengine.py b/tests/test_oauth2client_appengine.py
index 58f3e55..6774abd 100644
--- a/tests/test_oauth2client_appengine.py
+++ b/tests/test_oauth2client_appengine.py
@@ -55,7 +55,6 @@
from oauth2client.appengine import CredentialsModel
from oauth2client.appengine import FlowProperty
from oauth2client.appengine import OAuth2Decorator
-from oauth2client.appengine import OAuth2Handler
from oauth2client.appengine import StorageByKeyName
from oauth2client.appengine import oauth2decorator_from_clientsecrets
from oauth2client.client import AccessTokenRefreshError
@@ -200,7 +199,8 @@
def test_flow_get_put(self):
instance = TestFlowModel(
- flow=flow_from_clientsecrets(datafile('client_secrets.json'), 'foo'),
+ flow=flow_from_clientsecrets(datafile('client_secrets.json'), 'foo',
+ redirect_uri='oob'),
key_name='foo'
)
instance.put()
@@ -276,6 +276,14 @@
self.assertEqual(None, credentials)
self.assertEqual(None, memcache.get('foo'))
+class MockRequest(object):
+ url = 'https://example.org'
+
+ def relative_url(self, rel):
+ return self.url + rel
+
+class MockRequestHandler(object):
+ request = MockRequest()
class DecoratorTests(unittest.TestCase):
@@ -312,7 +320,7 @@
application = webapp2.WSGIApplication([
- ('/oauth2callback', OAuth2Handler),
+ ('/oauth2callback', self.decorator.callback_handler()),
('/foo_path', TestRequiredHandler),
webapp2.Route(r'/bar_path/<year:\d{4}>/<month:\d{2}>',
handler=TestAwareHandler, name='bar')],
@@ -441,6 +449,11 @@
scope=['foo_scope', 'bar_scope'],
access_type='offline',
approval_prompt='force')
+ request_handler = MockRequestHandler()
+ decorator._create_flow(request_handler)
+
+ self.assertEqual('https://example.org/oauth2callback',
+ decorator.flow.redirect_uri)
self.assertEqual('offline', decorator.flow.params['access_type'])
self.assertEqual('force', decorator.flow.params['approval_prompt'])
self.assertEqual('foo_user_agent', decorator.flow.user_agent)