aboutsummaryrefslogtreecommitdiffstats
path: root/alphabetlearning/users/tests/test_admin.py
diff options
context:
space:
mode:
Diffstat (limited to 'alphabetlearning/users/tests/test_admin.py')
-rw-r--r--alphabetlearning/users/tests/test_admin.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/alphabetlearning/users/tests/test_admin.py b/alphabetlearning/users/tests/test_admin.py
new file mode 100644
index 0000000..bd7296f
--- /dev/null
+++ b/alphabetlearning/users/tests/test_admin.py
@@ -0,0 +1,65 @@
+import contextlib
+from http import HTTPStatus
+from importlib import reload
+
+import pytest
+from django.contrib import admin
+from django.contrib.auth.models import AnonymousUser
+from django.urls import reverse
+from pytest_django.asserts import assertRedirects
+
+from alphabetlearning.users.models import User
+
+
+class TestUserAdmin:
+ def test_changelist(self, admin_client):
+ url = reverse("admin:users_user_changelist")
+ response = admin_client.get(url)
+ assert response.status_code == HTTPStatus.OK
+
+ def test_search(self, admin_client):
+ url = reverse("admin:users_user_changelist")
+ response = admin_client.get(url, data={"q": "test"})
+ assert response.status_code == HTTPStatus.OK
+
+ def test_add(self, admin_client):
+ url = reverse("admin:users_user_add")
+ response = admin_client.get(url)
+ assert response.status_code == HTTPStatus.OK
+
+ response = admin_client.post(
+ url,
+ data={
+ "email": "new-admin@example.com",
+ "password1": "My_R@ndom-P@ssw0rd",
+ "password2": "My_R@ndom-P@ssw0rd",
+ },
+ )
+ assert response.status_code == HTTPStatus.FOUND
+ assert User.objects.filter(email="new-admin@example.com").exists()
+
+ def test_view_user(self, admin_client):
+ user = User.objects.get(email="admin@example.com")
+ url = reverse("admin:users_user_change", kwargs={"object_id": user.pk})
+ response = admin_client.get(url)
+ assert response.status_code == HTTPStatus.OK
+
+ @pytest.fixture()
+ def _force_allauth(self, settings):
+ settings.DJANGO_ADMIN_FORCE_ALLAUTH = True
+ # Reload the admin module to apply the setting change
+ import alphabetlearning.users.admin as users_admin
+
+ with contextlib.suppress(admin.sites.AlreadyRegistered):
+ reload(users_admin)
+
+ @pytest.mark.django_db()
+ @pytest.mark.usefixtures("_force_allauth")
+ def test_allauth_login(self, rf, settings):
+ request = rf.get("/fake-url")
+ request.user = AnonymousUser()
+ response = admin.site.login(request)
+
+ # The `admin` login view should redirect to the `allauth` login view
+ target_url = reverse(settings.LOGIN_URL) + "?next=" + request.path
+ assertRedirects(response, target_url, fetch_redirect_response=False)