Lighten the project by supporting sqlite3 and also handling email using only python threads
43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
from django.contrib.auth import get_user_model
|
|
from django.http import HttpResponse
|
|
from django.test import TestCase, RequestFactory
|
|
from accounts.decorators import admin_required
|
|
|
|
User = get_user_model()
|
|
|
|
class AdminRequiredDecoratorTests(TestCase):
|
|
def setUp(self):
|
|
self.superuser = User.objects.create_superuser(
|
|
username='admin', email='admin@example.com', password='password'
|
|
)
|
|
self.user = User.objects.create_user(
|
|
username='user', email='user@example.com', password='password'
|
|
)
|
|
self.factory = RequestFactory()
|
|
|
|
def admin_view(self, request):
|
|
return HttpResponse()
|
|
|
|
def test_admin_required_decorator(self):
|
|
# Apply the admin_required decorator to the view function
|
|
decorated_view = admin_required(self.admin_view)
|
|
|
|
request = self.factory.get("/")
|
|
request.user = self.user
|
|
response = decorated_view(request)
|
|
self.assertEqual(response.status_code, 302)
|
|
|
|
|
|
def test_admin_required_decorator_with_redirect(self):
|
|
# Apply the admin_required decorator to the view function
|
|
decorated_view = admin_required(function=self.admin_view,redirect_to="/login/")
|
|
|
|
request = self.factory.get("/")
|
|
request.user = self.user
|
|
response = decorated_view(request)
|
|
|
|
# Assert redirection to login page
|
|
self.assertEqual(response.status_code, 302)
|
|
self.assertEqual(response.url, '/login/')
|
|
|