summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIb Lundgren <ib.lundgren@gmail.com>2012-07-02 23:27:48 +0200
committerIb Lundgren <ib.lundgren@gmail.com>2012-07-02 23:27:48 +0200
commit826c2742753be126dffff701eb0eda966b5849cf (patch)
tree36572ac678f11708005f3b1588ca6c9e43d17b91
parent57aecb0648ada06d89ba790944ac01036ff21e16 (diff)
downloadoauthlib-826c2742753be126dffff701eb0eda966b5849cf.tar.gz
More client tests
-rw-r--r--tests/oauth2/draft25/test_client.py211
1 files changed, 210 insertions, 1 deletions
diff --git a/tests/oauth2/draft25/test_client.py b/tests/oauth2/draft25/test_client.py
index 90dbed5..26742de 100644
--- a/tests/oauth2/draft25/test_client.py
+++ b/tests/oauth2/draft25/test_client.py
@@ -4,7 +4,7 @@ from ...unittest import TestCase
from oauthlib.oauth2.draft25 import Client, PasswordCredentialsClient
from oauthlib.oauth2.draft25 import UserAgentClient, WebApplicationClient
-from oauthlib.oauth2.draft25 import NativeApplicationClient
+from oauthlib.oauth2.draft25 import ClientCredentialsClient
from oauthlib.oauth2.draft25 import AUTH_HEADER, URI_QUERY, BODY
@@ -227,3 +227,212 @@ class WebApplicationClientTest(TestCase):
# Mismatching state
self.assertRaises(Warning, client.parse_request_body_response, self.token_json, scope=u"invalid")
+
+
+class UserAgentClientTest(TestCase):
+
+ client_id = u"someclientid"
+ uri = u"http://example.com/path?query=world"
+ uri_id = uri + u"&response_type=token&client_id=" + client_id
+ uri_redirect = uri_id + u"&redirect_uri=http%3A%2F%2Fmy.page.com%2Fcallback"
+ redirect_uri = u"http://my.page.com/callback"
+ scope = u"/profile"
+ state = u"xyz"
+ uri_scope = uri_id + u"&scope=%2Fprofile"
+ uri_state = uri_id + u"&state=" + state
+ kwargs = {
+ u"some": u"providers",
+ u"require": u"extra arguments"
+ }
+ uri_kwargs = uri_id + u"&some=providers&require=extra+arguments"
+
+ code = u"zzzzaaaa"
+
+ response_uri = (u'https://client.example.com/cb?#'
+ u'access_token=2YotnFZFEjr1zCsicMWpAA&'
+ u'token_type=example&'
+ u'expires_in=3600&'
+ u'scope=%2Fprofile&'
+ u'example_parameter=example_value')
+ token = {
+ u"access_token": u"2YotnFZFEjr1zCsicMWpAA",
+ u"token_type": u"example",
+ u"expires_in": u"3600",
+ u"scope": "/profile",
+ u"example_parameter": u"example_value"
+ }
+
+ def test_implicit_token_uri(self):
+ client = UserAgentClient(self.client_id)
+
+ # Basic, no extra arguments
+ uri = client.prepare_request_uri(self.uri)
+ self.assertEqual(uri, self.uri_id)
+
+ # With redirection uri
+ uri = client.prepare_request_uri(self.uri, redirect_uri=self.redirect_uri)
+ self.assertEqual(uri, self.uri_redirect)
+
+ rclient = UserAgentClient(self.client_id,
+ default_redirect_uri=self.redirect_uri)
+ uri = rclient.prepare_request_uri(self.uri)
+ self.assertEqual(uri, self.uri_redirect)
+
+ # With scope
+ uri = client.prepare_request_uri(self.uri, scope=self.scope)
+ self.assertEqual(uri, self.uri_scope)
+
+ # With state
+ uri = client.prepare_request_uri(self.uri, state=self.state)
+ self.assertEqual(uri, self.uri_state)
+
+ # With extra parameters through kwargs, checking using len since order
+ # of dict items is undefined
+ rclient = UserAgentClient(self.client_id,
+ default_kwargs_uri=self.kwargs)
+ uri = rclient.prepare_request_uri(self.uri)
+ self.assertEqual(len(uri), len(self.uri_kwargs))
+ uri = client.prepare_request_uri(self.uri, **self.kwargs)
+ self.assertEqual(len(uri), len(self.uri_kwargs))
+
+ def test_parse_token_response(self):
+ client = UserAgentClient(self.client_id)
+
+ # Parse code and state
+ response = client.parse_request_uri_response(self.response_uri, scope=self.scope)
+ self.assertEqual(response, self.token)
+ self.assertEqual(client.access_token, response.get(u"access_token"))
+ self.assertEqual(client.refresh_token, response.get(u"refresh_token"))
+ self.assertEqual(client.token_type, response.get(u"token_type"))
+
+ # Mismatching state
+ self.assertRaises(Warning, client.parse_request_uri_response, self.response_uri, scope=u"invalid")
+
+
+class PasswordCredentialsClientTest(TestCase):
+
+ client_id = u"someclientid"
+ scope = u"/profile"
+ kwargs = {
+ u"some": u"providers",
+ u"require": u"extra arguments"
+ }
+
+ username = u"foo"
+ password = u"bar"
+ body = u"not=empty"
+
+ body_up = u"not=empty&grant_type=password&username=%s&password=%s" % (username, password)
+ body_kwargs = body_up + u"&some=providers&require=extra+arguments"
+
+ token_json = (u'{ "access_token":"2YotnFZFEjr1zCsicMWpAA",'
+ u' "token_type":"example",'
+ u' "expires_in":3600,'
+ u' "scope":"/profile",'
+ u' "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",'
+ u' "example_parameter":"example_value"}')
+ token = {
+ u"access_token": u"2YotnFZFEjr1zCsicMWpAA",
+ u"token_type": u"example",
+ u"expires_in": 3600,
+ u"scope": "/profile",
+ u"refresh_token": u"tGzv3JOkF0XG5Qx2TlKWIA",
+ u"example_parameter": u"example_value"
+ }
+
+ def test_request_body(self):
+ client = PasswordCredentialsClient(self.client_id,
+ username=self.username, password=self.password)
+
+ # Basic, no extra arguments
+ body = client.prepare_request_body(body=self.body)
+ self.assertEqual(body, self.body_up)
+
+ rclient = PasswordCredentialsClient(self.client_id)
+ body = rclient.prepare_request_body(body=self.body, username=self.username, password=self.password)
+ self.assertEqual(body, self.body_up)
+
+ # With extra parameters, checked using length since order of
+ # dict items is undefined
+ body = client.prepare_request_body(body=self.body, **self.kwargs)
+ self.assertEqual(len(body), len(self.body_kwargs))
+
+ rclient = PasswordCredentialsClient(self.client_id, username=self.username,
+ password=self.password, default_kwargs_body=self.kwargs)
+ body = rclient.prepare_request_body(body=self.body)
+ self.assertEqual(len(body), len(self.body_kwargs))
+
+ def test_parse_token_response(self):
+ client = PasswordCredentialsClient(self.client_id)
+
+ # Parse code and state
+ response = client.parse_request_body_response(self.token_json, scope=self.scope)
+ self.assertEqual(response, self.token)
+ self.assertEqual(client.access_token, response.get(u"access_token"))
+ self.assertEqual(client.refresh_token, response.get(u"refresh_token"))
+ self.assertEqual(client.token_type, response.get(u"token_type"))
+
+ # Mismatching state
+ self.assertRaises(Warning, client.parse_request_body_response, self.token_json, scope=u"invalid")
+
+
+class ClientCredentialsClientTest(TestCase):
+
+ client_id = u"someclientid"
+ scope = u"/profile"
+ kwargs = {
+ u"some": u"providers",
+ u"require": u"extra arguments"
+ }
+
+ body = u"not=empty"
+
+ body_up = u"not=empty&grant_type=client_credentials"
+ body_kwargs = body_up + u"&some=providers&require=extra+arguments"
+
+ token_json = (u'{ "access_token":"2YotnFZFEjr1zCsicMWpAA",'
+ u' "token_type":"example",'
+ u' "expires_in":3600,'
+ u' "scope":"/profile",'
+ u' "example_parameter":"example_value"}')
+ token = {
+ u"access_token": u"2YotnFZFEjr1zCsicMWpAA",
+ u"token_type": u"example",
+ u"expires_in": 3600,
+ u"scope": "/profile",
+ u"example_parameter": u"example_value"
+ }
+
+ def test_request_body(self):
+ client = ClientCredentialsClient(self.client_id)
+
+ # Basic, no extra arguments
+ body = client.prepare_request_body(body=self.body)
+ self.assertEqual(body, self.body_up)
+
+ rclient = ClientCredentialsClient(self.client_id)
+ body = rclient.prepare_request_body(body=self.body)
+ self.assertEqual(body, self.body_up)
+
+ # With extra parameters, checked using length since order of
+ # dict items is undefined
+ body = client.prepare_request_body(body=self.body, **self.kwargs)
+ self.assertEqual(len(body), len(self.body_kwargs))
+
+ rclient = ClientCredentialsClient(self.client_id,
+ default_kwargs_body=self.kwargs)
+ body = rclient.prepare_request_body(body=self.body)
+ self.assertEqual(len(body), len(self.body_kwargs))
+
+ def test_parse_token_response(self):
+ client = ClientCredentialsClient(self.client_id)
+
+ # Parse code and state
+ response = client.parse_request_body_response(self.token_json, scope=self.scope)
+ self.assertEqual(response, self.token)
+ self.assertEqual(client.access_token, response.get(u"access_token"))
+ self.assertEqual(client.refresh_token, response.get(u"refresh_token"))
+ self.assertEqual(client.token_type, response.get(u"token_type"))
+
+ # Mismatching state
+ self.assertRaises(Warning, client.parse_request_body_response, self.token_json, scope=u"invalid")