|
2 | 2 |
|
3 | 3 | import base64
|
4 | 4 | import json
|
| 5 | +import datetime |
5 | 6 |
|
6 | 7 | from django.test import TestCase, RequestFactory
|
7 | 8 | from django.core.urlresolvers import reverse
|
8 | 9 | from django.utils import timezone
|
9 | 10 |
|
10 | 11 | from ..compat import urlparse, parse_qs, urlencode, get_user_model
|
11 |
| -from ..models import get_application_model, Grant |
| 12 | +from ..models import get_application_model, Grant, AccessToken |
12 | 13 | from ..settings import oauth2_settings
|
13 | 14 | from ..views import ProtectedResourceView
|
14 | 15 |
|
@@ -91,6 +92,32 @@ def test_pre_auth_valid_client(self):
|
91 | 92 | self.assertEqual(form['scopes'].value(), "read write")
|
92 | 93 | self.assertEqual(form['client_id'].value(), self.application.client_id)
|
93 | 94 |
|
| 95 | + def test_pre_auth_approval_prompt(self): |
| 96 | + """ |
| 97 | +
|
| 98 | + """ |
| 99 | + tok = AccessToken.objects.create(user=self.test_user, token='1234567890', |
| 100 | + application=self.application, |
| 101 | + expires=timezone.now()+datetime.timedelta(days=1), |
| 102 | + scope='read write') |
| 103 | + self.client.login(username="test_user", password="123456") |
| 104 | + query_string = urlencode({ |
| 105 | + 'client_id': self.application.client_id, |
| 106 | + 'response_type': 'code', |
| 107 | + 'state': 'random_state_string', |
| 108 | + 'scope': 'read write', |
| 109 | + 'redirect_uri': 'http://example.it', |
| 110 | + 'approval_prompt': 'auto', |
| 111 | + }) |
| 112 | + url = "{url}?{qs}".format(url=reverse('oauth2_provider:authorize'), qs=query_string) |
| 113 | + response = self.client.get(url) |
| 114 | + self.assertEqual(response.status_code, 302) |
| 115 | + # user already authorized the application, but with different scopes: prompt them. |
| 116 | + tok.scope = 'read' |
| 117 | + tok.save() |
| 118 | + response = self.client.get(url) |
| 119 | + self.assertEqual(response.status_code, 200) |
| 120 | + |
94 | 121 | def test_pre_auth_default_redirect(self):
|
95 | 122 | """
|
96 | 123 | Test for default redirect uri if omitted from query string with response_type: code
|
|
0 commit comments