forked from python-social-auth/social-app-django
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_views.py
141 lines (119 loc) · 5.2 KB
/
test_views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# -*- coding: utf-8 -*-
import mock
from django.contrib.auth import get_user_model
from django.contrib.auth.models import AbstractBaseUser
from django.test import TestCase, override_settings
from social_django.compat import reverse
from social_django.models import UserSocialAuth
from social_django.views import get_session_timeout
from .compat import base_url
@override_settings(SOCIAL_AUTH_FACEBOOK_KEY='1',
SOCIAL_AUTH_FACEBOOK_SECRET='2')
class TestViews(TestCase):
def setUp(self):
session = self.client.session
session['facebook_state'] = '1'
session.save()
def test_begin_view(self):
response = self.client.get(reverse('social:begin', kwargs={'backend': 'facebook'}))
self.assertEqual(response.status_code, 302)
url = reverse('social:begin', kwargs={'backend': 'blabla'})
response = self.client.get(url)
self.assertEqual(response.status_code, 404)
@mock.patch('social_core.backends.base.BaseAuth.request')
def test_complete(self, mock_request):
url = reverse('social:complete', kwargs={'backend': 'facebook'})
url += '?code=2&state=1'
mock_request.return_value.json.return_value = {'access_token': '123'}
with mock.patch('django.contrib.sessions.backends.base.SessionBase'
'.set_expiry', side_effect=[OverflowError, None]):
response = self.client.get(url)
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, base_url + '/accounts/profile/')
@mock.patch('social_core.backends.base.BaseAuth.request')
def test_disconnect(self, mock_request):
user_model = get_user_model()
user = user_model.objects.create_user(username='test', password='pwd')
UserSocialAuth.objects.create(user=user, provider='facebook')
self.client.login(username='test', password='pwd')
url = reverse('social:disconnect', kwargs={'backend': 'facebook'})
response = self.client.post(url)
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, 'http://testserver/accounts/profile/')
url = reverse('social:disconnect_individual',
kwargs={'backend': 'facebook', 'association_id': '123'})
hup = AbstractBaseUser.has_usable_password
del AbstractBaseUser.has_usable_password
response = self.client.post(url)
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, 'http://testserver/accounts/profile/')
AbstractBaseUser.has_usable_password = hup
class TestGetSessionTimeout(TestCase):
"""
Ensure that the branching logic of get_session_timeout behaves as expected.
"""
def setUp(self):
self.social_user = mock.MagicMock()
self.social_user.expiration_datetime.return_value = None
super(TestGetSessionTimeout, self).setUp()
def set_user_expiration(self, seconds):
self.social_user.expiration_datetime.return_value = mock.MagicMock(
total_seconds = mock.MagicMock(return_value=seconds)
)
def test_expiration_disabled_no_max(self):
self.set_user_expiration(60)
expiration_length = get_session_timeout(
self.social_user,
enable_session_expiration=False
)
self.assertIsNone(expiration_length)
def test_expiration_disabled_with_max(self):
expiration_length = get_session_timeout(
self.social_user,
enable_session_expiration=False,
max_session_length=60
)
self.assertEqual(expiration_length, 60)
def test_expiration_disabled_with_zero_max(self):
expiration_length = get_session_timeout(
self.social_user,
enable_session_expiration=False,
max_session_length=0
)
self.assertEqual(expiration_length, 0)
def test_user_has_session_length_no_max(self):
self.set_user_expiration(60)
expiration_length = get_session_timeout(
self.social_user,
enable_session_expiration=True
)
self.assertEqual(expiration_length, 60)
def test_user_has_session_length_larger_max(self):
self.set_user_expiration(60)
expiration_length = get_session_timeout(
self.social_user,
enable_session_expiration=True,
max_session_length=90
)
self.assertEqual(expiration_length, 60)
def test_user_has_session_length_smaller_max(self):
self.set_user_expiration(60)
expiration_length = get_session_timeout(
self.social_user,
enable_session_expiration=True,
max_session_length=30
)
self.assertEqual(expiration_length, 30)
def test_user_has_no_session_length_with_max(self):
expiration_length = get_session_timeout(
self.social_user,
enable_session_expiration=True,
max_session_length=60
)
self.assertEqual(expiration_length, 60)
def test_user_has_no_session_length_no_max(self):
expiration_length = get_session_timeout(
self.social_user,
enable_session_expiration=True
)
self.assertIsNone(expiration_length)