Skip to content

Commit 5c78892

Browse files
committed
Add some basic tests
Mostly to help when updating dependency versions.
1 parent 3ccf15e commit 5c78892

File tree

5 files changed

+124
-0
lines changed

5 files changed

+124
-0
lines changed

runtests

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/usr/bin/env python
2+
3+
import os
4+
import sys
5+
import django
6+
7+
from django.conf import settings
8+
from django.test.utils import get_runner
9+
10+
if __name__ == '__main__':
11+
os.environ['DJANGO_SETTINGS_MODULE'] = 'tests.settings'
12+
django.setup()
13+
failures = get_runner(settings)().run_tests(sys.argv[1:])
14+
sys.exit(bool(failures))

tests/__init__.py

Whitespace-only changes.

tests/settings.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
SECRET_KEY = 'very-secret-value'
2+
3+
INSTALLED_APPS = [
4+
'django.contrib.auth',
5+
'django.contrib.contenttypes', # needed by django.auth
6+
'django.contrib.sessions',
7+
'debug_toolbar',
8+
'debug_toolbar_user_switcher',
9+
]
10+
11+
DATABASES={
12+
'default': {
13+
'ENGINE': 'django.db.backends.sqlite3',
14+
}
15+
}
16+
17+
ROOT_URLCONF = 'tests.urls'
18+
19+
MIDDLEWARE = (
20+
'django.contrib.sessions.middleware.SessionMiddleware',
21+
'django.contrib.auth.middleware.AuthenticationMiddleware',
22+
'debug_toolbar.middleware.DebugToolbarMiddleware',
23+
)
24+
25+
TEMPLATES = (
26+
{
27+
'BACKEND': 'django.template.backends.django.DjangoTemplates',
28+
'APP_DIRS': True,
29+
'DIRS': (),
30+
'OPTIONS': {
31+
'debug': True,
32+
'builtins': [],
33+
},
34+
},
35+
)
36+
37+
DEBUG_TOOLBAR_PANELS = (
38+
'debug_toolbar_user_switcher.panels.UserPanel',
39+
)
40+
41+
DEBUG_TOOLBAR_USER_DEBUG = True

tests/test_user_panel.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
from typing import Union
2+
3+
from django.contrib.auth import get_user
4+
from django.contrib.auth.models import AnonymousUser, User
5+
from django.http import HttpRequest
6+
from django.test import TestCase
7+
from django.urls import reverse
8+
9+
10+
class UserPanelTests(TestCase):
11+
def assertCurrentUser(self, expected_user: Union[User, AnonymousUser]) -> None:
12+
request = HttpRequest()
13+
request.session = self.client.session
14+
user = get_user(request)
15+
self.assertEqual(expected_user, user, "Wrong user on session")
16+
17+
@classmethod
18+
def setUpTestData(cls) -> None:
19+
cls.user = User.objects.create(
20+
21+
username='demo-example',
22+
)
23+
User.objects.create(
24+
25+
username='other-example',
26+
)
27+
28+
def test_login_form_view(self) -> None:
29+
response = self.client.post(
30+
reverse('djdt:debug-userpanel-login-form'),
31+
data={'val': self.user.email},
32+
)
33+
self.assertRedirects(
34+
response,
35+
'/',
36+
fetch_redirect_response=False,
37+
)
38+
self.assertCurrentUser(self.user)
39+
40+
def test_login_id_view(self) -> None:
41+
response = self.client.post(
42+
reverse('djdt:debug-userpanel-login', args=(self.user.pk,)),
43+
)
44+
self.assertRedirects(
45+
response,
46+
'/',
47+
fetch_redirect_response=False,
48+
)
49+
self.assertCurrentUser(self.user)
50+
51+
def test_logout_view(self) -> None:
52+
self.client.force_login(self.user)
53+
response = self.client.post(
54+
reverse('djdt:debug-userpanel-logout'),
55+
)
56+
self.assertRedirects(
57+
response,
58+
'/',
59+
fetch_redirect_response=False,
60+
)
61+
self.assertCurrentUser(AnonymousUser())

tests/urls.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import debug_toolbar
2+
from django.urls import include, path
3+
4+
app_name = 'test'
5+
6+
urlpatterns = (
7+
path('__debug__', include(debug_toolbar.urls)),
8+
)

0 commit comments

Comments
 (0)