|
5 | 5 | import warnings
|
6 | 6 |
|
7 | 7 | import django
|
8 |
| -from django.contrib.auth.models import Group, Permission, User |
| 8 | +from django.contrib.auth.models import AnonymousUser, Group, Permission, User |
9 | 9 | from django.db import models
|
10 | 10 | from django.test import TestCase
|
11 | 11 | from django.urls import ResolverMatch
|
12 |
| -from django.utils.deprecation import CallableBool |
13 | 12 |
|
14 | 13 | from rest_framework import (
|
15 | 14 | HTTP_HEADER_ENCODING, authentication, generics, permissions, serializers,
|
@@ -543,39 +542,46 @@ def test_permission_denied_for_object_with_custom_detail(self):
|
543 | 542 | self.assertEqual(detail, self.custom_message)
|
544 | 543 |
|
545 | 544 |
|
546 |
| -class FakeUser: |
547 |
| - def __init__(self, auth=False): |
548 |
| - self.is_authenticated = CallableBool(auth) |
| 545 | +class PermissionsCompositionTests(TestCase): |
549 | 546 |
|
| 547 | + def setUp(self): |
| 548 | + self.username = 'john' |
| 549 | + self.email = 'lennon@thebeatles.com' |
| 550 | + self.password = 'password' |
| 551 | + self.user = User.objects.create_user( |
| 552 | + self.username, |
| 553 | + self.email, |
| 554 | + self.password |
| 555 | + ) |
| 556 | + self.client.login(username=self.username, password=self.password) |
550 | 557 |
|
551 |
| -class PermissionsCompositionTests(TestCase): |
552 | 558 | def test_and_false(self):
|
553 | 559 | request = factory.get('/1', format='json')
|
554 |
| - request.user = FakeUser(auth=False) |
| 560 | + request.user = AnonymousUser() |
555 | 561 | composed_perm = permissions.IsAuthenticated & permissions.AllowAny
|
556 | 562 | assert composed_perm().has_permission(request, None) is False
|
557 | 563 |
|
558 | 564 | def test_and_true(self):
|
559 | 565 | request = factory.get('/1', format='json')
|
560 |
| - request.user = FakeUser(auth=True) |
| 566 | + request.user = self.user |
561 | 567 | composed_perm = permissions.IsAuthenticated & permissions.AllowAny
|
562 | 568 | assert composed_perm().has_permission(request, None) is True
|
563 | 569 |
|
564 | 570 | def test_or_false(self):
|
565 | 571 | request = factory.get('/1', format='json')
|
566 |
| - request.user = FakeUser(auth=False) |
| 572 | + request.user = AnonymousUser() |
567 | 573 | composed_perm = permissions.IsAuthenticated | permissions.AllowAny
|
568 | 574 | assert composed_perm().has_permission(request, None) is True
|
569 | 575 |
|
570 | 576 | def test_or_true(self):
|
571 | 577 | request = factory.get('/1', format='json')
|
572 |
| - request.user = FakeUser(auth=True) |
| 578 | + request.user = self.user |
573 | 579 | composed_perm = permissions.IsAuthenticated | permissions.AllowAny
|
574 | 580 | assert composed_perm().has_permission(request, None) is True
|
575 | 581 |
|
576 | 582 | def test_several_levels(self):
|
577 | 583 | request = factory.get('/1', format='json')
|
578 |
| - request.user = FakeUser(auth=True) |
| 584 | + request.user = self.user |
579 | 585 | composed_perm = (
|
580 | 586 | permissions.IsAuthenticated &
|
581 | 587 | permissions.IsAuthenticated &
|
|
0 commit comments