zhongrj
2025-11-24 276323dce9613867abb3f58a4cc2abbfb2fd0dea
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from django.contrib.auth.models import User
from django.test import Client
 
from app.models import Project
from .classes import BootTestCase
 
 
class TestWelcome(BootTestCase):
 
    def setUp(self):
        Project.objects.all().delete()
 
        # Start with no users
        User.objects.all().delete()
 
    def tearDown(self):
        pass
 
    def test_first_screen(self):
        c = Client()
 
        # User points the browser to the website
        res = c.get('/', follow=True)
 
        # User is redirected to the welcome page
        self.assertRedirects(res, '/welcome/')
 
        # The welcome page is being rendered by the correct template
        self.assertTemplateUsed(res, 'app/welcome.html')
 
        # User cannot create an admin user without password
        res = c.post('/welcome/', data={
            'username': 'testadminuser',
            'password': ''}, follow=True)
        self.assertFormError(res, 'firstuserform', 'password', 'This field is required.')
        self.assertTrue(User.objects.count() == 0, 'No users were created')
 
        # User can create admin user
        res = c.post('/welcome/', data={
            'username': 'testadminuser',
            'password': 'testadminpass'}, follow=True)
        self.assertTrue(User.objects.count() == 1, 'A user was created')
 
        # User was created
        user = User.objects.get(username='testadminuser')
        self.assertTrue(user.is_superuser, 'The user is a superuser')
        self.assertTrue(user.is_staff, 'The user is a staff member')
 
        # Redirect to the dashboard happens
        self.assertRedirects(res, '/dashboard/')
 
        # User is automatically logged-in
        self.assertTrue(res.context['user'].is_authenticated)
 
        # After a super admin is created, the welcome page is no longer accessible
        res = c.get('/welcome/', follow=True)
        self.assertRedirects(res, '/dashboard/')
 
        # We cannot create another superuser
        res = c.post('/welcome/', data={
            'username': 'testadminuser2',
            'password': 'testadminpass2'}, follow=True)
        self.assertRedirects(res, '/dashboard/')
 
        self.assertTrue(User.objects.filter(username='testadminuser2').count() == 0, 'No users were created')
 
        # If we log-out and try to access the welcome page, we should get the login page
        c.logout()
        res = c.get('/welcome/', follow=True)
        self.assertRedirects(res, '/login/')
 
        # We're not logged-in
        self.assertFalse(res.context['user'].is_authenticated)
 
        # We can log-in
        res = c.post('/login/', data={
            'username': 'testadminuser',
            'password': 'testadminpass'}, follow=True)
        self.assertTrue(res.context['user'].is_authenticated)
        self.assertRedirects(res, '/dashboard/')