Coverage for product_risk_suite/product_risk_suite/tests.py: 100%
55 statements
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 12:45 +0000
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 12:45 +0000
1from product.tests import *
2from risk_assessment.tests import *
3from threat_model.tests import *
5from django.contrib.auth.models import User
6from django.test import TestCase
9class ShowLoginViewTest(TestCase):
10 def setUp(self):
11 self.user = User.objects.create_user(username="testuser", password="pw")
13 def test_unauthenticated_renders_login_page(self):
14 response = self.client.get('/')
15 self.assertEqual(response.status_code, 200)
16 self.assertEqual(response.context['error'], '')
18 def test_authenticated_redirects_to_product(self):
19 self.client.force_login(self.user)
20 response = self.client.get('/')
21 self.assertRedirects(response, '/product/', fetch_redirect_response=False)
24class LoginViewTest(TestCase):
25 def setUp(self):
26 self.user = User.objects.create_user(username="testuser", password="correct-pw")
28 def test_get_renders_login_page(self):
29 response = self.client.get('/login')
30 self.assertEqual(response.status_code, 200)
31 self.assertEqual(response.context['error'], '')
33 def test_post_valid_credentials_redirects_to_product(self):
34 response = self.client.post('/login', {'username': 'testuser', 'password': 'correct-pw'})
35 self.assertRedirects(response, '/product/', fetch_redirect_response=False)
37 def test_post_wrong_password_shows_error(self):
38 response = self.client.post('/login', {'username': 'testuser', 'password': 'wrong-pw'})
39 self.assertEqual(response.status_code, 200)
40 self.assertEqual(response.context['error'], 'User or password wrong')
42 def test_post_unknown_user_shows_error(self):
43 response = self.client.post('/login', {'username': 'nobody', 'password': 'pw'})
44 self.assertEqual(response.status_code, 200)
45 self.assertEqual(response.context['error'], 'User or password wrong')
47 def test_post_missing_credentials_shows_error(self):
48 response = self.client.post('/login', {})
49 self.assertEqual(response.status_code, 200)
50 self.assertEqual(response.context['error'], 'User or password wrong')
52 def test_post_valid_login_authenticates_user(self):
53 self.client.post('/login', {'username': 'testuser', 'password': 'correct-pw'})
54 response = self.client.get('/')
55 self.assertRedirects(response, '/product/', fetch_redirect_response=False)
58class LogoutViewTest(TestCase):
59 def setUp(self):
60 self.user = User.objects.create_user(username="testuser", password="pw")
62 def test_logout_redirects_to_root(self):
63 self.client.force_login(self.user)
64 response = self.client.get('/logout')
65 self.assertRedirects(response, '/', fetch_redirect_response=False)
67 def test_logout_clears_session(self):
68 self.client.force_login(self.user)
69 self.client.get('/logout')
70 response = self.client.get('/')
71 self.assertEqual(response.status_code, 200)
72 self.assertEqual(response.context['error'], '')