from django.contrib.auth.models import Permission, User from django.shortcuts import reverse from django.test import Client, TestCase class AccountsTestCase(TestCase): def setUp(self): self.client.login(username='admin', password='admin') user = User.objects.create_user(username='test', password='test') permission = Permission.objects.get(codename='change_password') user.user_permissions.add(permission) def test_profile(self): response = self.client.get(reverse('profile')) self.assertEqual(response.status_code, 200) response = self.client.get(reverse('account', args=[2])) self.assertEqual(response.status_code, 200) def test_login_logout(self): user = User.objects.get(username='test') self.assertEqual(user.id, 2) client = Client() response = client.post(reverse("login"), {"username": "test", "password": "test"}) self.assertRedirects(response, reverse('profile')) response = client.get(reverse('logout')) self.assertRedirects(response, reverse('login')) def test_password_change(self): client = Client() logged_in = client.login(username='test', password='test') self.assertTrue(logged_in) response = client.get(reverse('change_password')) self.assertEqual(response.status_code, 200) response = client.post( reverse('change_password'), { 'old_password': 'wrongpass', 'new_password1': 'newpw', 'new_password2': 'newpw', }, ) self.assertEqual(response.status_code, 200) response = client.post( reverse('change_password'), { 'old_password': 'test', 'new_password1': 'newpw', 'new_password2': 'newpw', }, ) self.assertRedirects(response, reverse('profile')) client.logout() logged_in = client.login(username='test', password='newpw') self.assertTrue(logged_in)