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

1from product.tests import * 

2from risk_assessment.tests import * 

3from threat_model.tests import * 

4 

5from django.contrib.auth.models import User 

6from django.test import TestCase 

7 

8 

9class ShowLoginViewTest(TestCase): 

10 def setUp(self): 

11 self.user = User.objects.create_user(username="testuser", password="pw") 

12 

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'], '') 

17 

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) 

22 

23 

24class LoginViewTest(TestCase): 

25 def setUp(self): 

26 self.user = User.objects.create_user(username="testuser", password="correct-pw") 

27 

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'], '') 

32 

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) 

36 

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') 

41 

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') 

46 

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') 

51 

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) 

56 

57 

58class LogoutViewTest(TestCase): 

59 def setUp(self): 

60 self.user = User.objects.create_user(username="testuser", password="pw") 

61 

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) 

66 

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'], '')