|
3 | 3 | from django_auth_adfs.exceptions import MFARequired
|
4 | 4 |
|
5 | 5 | try:
|
6 |
| - from urllib.parse import urlparse, parse_qs |
| 6 | + from urllib.parse import parse_qs, urlparse |
7 | 7 | except ImportError: # Python 2.7
|
8 | 8 | from urlparse import urlparse, parse_qs
|
9 | 9 |
|
10 | 10 | from copy import deepcopy
|
11 | 11 |
|
12 |
| -from django.contrib.auth.models import User, Group |
| 12 | +from django.contrib.auth.models import Group, User |
13 | 13 | from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
|
14 | 14 | from django.db.models.signals import post_save
|
15 |
| -from django.test import TestCase, RequestFactory |
| 15 | +from django.test import RequestFactory, TestCase |
16 | 16 | from mock import Mock, patch
|
17 | 17 |
|
18 | 18 | from django_auth_adfs import signals
|
19 | 19 | from django_auth_adfs.backend import AdfsAuthCodeBackend
|
20 | 20 | from django_auth_adfs.config import ProviderConfig, Settings
|
| 21 | + |
21 | 22 | from .models import Profile
|
22 | 23 | from .utils import mock_adfs
|
23 | 24 |
|
@@ -175,6 +176,38 @@ def test_no_group_claim(self):
|
175 | 176 | self.assertEqual(user.email, "john.doe@example.com")
|
176 | 177 | self.assertEqual(len(user.groups.all()), 0)
|
177 | 178 |
|
| 179 | + @mock_adfs("2016") |
| 180 | + def test_group_claim_with_mirror_groups(self): |
| 181 | + # Remove one group |
| 182 | + Group.objects.filter(name="group1").delete() |
| 183 | + |
| 184 | + backend = AdfsAuthCodeBackend() |
| 185 | + with patch("django_auth_adfs.backend.settings.MIRROR_GROUPS", True): |
| 186 | + user = backend.authenticate(self.request, authorization_code="dummycode") |
| 187 | + self.assertIsInstance(user, User) |
| 188 | + self.assertEqual(user.first_name, "John") |
| 189 | + self.assertEqual(user.last_name, "Doe") |
| 190 | + self.assertEqual(user.email, "john.doe@example.com") |
| 191 | + # group1 is restored |
| 192 | + group_names = user.groups.order_by("name").values_list("name", flat=True) |
| 193 | + self.assertSequenceEqual(group_names, ['group1', 'group2']) |
| 194 | + |
| 195 | + @mock_adfs("2016") |
| 196 | + def test_group_claim_without_mirror_groups(self): |
| 197 | + # Remove one group |
| 198 | + Group.objects.filter(name="group1").delete() |
| 199 | + |
| 200 | + backend = AdfsAuthCodeBackend() |
| 201 | + with patch("django_auth_adfs.backend.settings.MIRROR_GROUPS", False): |
| 202 | + user = backend.authenticate(self.request, authorization_code="dummycode") |
| 203 | + self.assertIsInstance(user, User) |
| 204 | + self.assertEqual(user.first_name, "John") |
| 205 | + self.assertEqual(user.last_name, "Doe") |
| 206 | + self.assertEqual(user.email, "john.doe@example.com") |
| 207 | + # User is not added to group1 because the group doesn't exist |
| 208 | + group_names = user.groups.values_list("name", flat=True) |
| 209 | + self.assertSequenceEqual(group_names, ['group2']) |
| 210 | + |
178 | 211 | @mock_adfs("2016", empty_keys=True)
|
179 | 212 | def test_empty_keys(self):
|
180 | 213 | backend = AdfsAuthCodeBackend()
|
|
0 commit comments