from django.contrib.auth.forms import PasswordChangeForm from django.contrib.auth.models import User from django.contrib.auth import views as auth_views from django.core.urlresolvers import reverse from django.urls import resolve from django.test import TestCase class PasswordChangeTests(TestCase): def setUp(self): username = 'john' password = 'secret123' user = User.objects.create_user(username=username, email='john@doe.com', password=password) url = reverse('password_change') self.client.login(username=username, password=password) self.response = self.client.get(url) def test_status_code(self): self.assertEquals(self.response.status_code, 200) def test_url_resolves_correct_view(self): view = resolve('/settings/password/') self.assertEquals(view.func.view_class, auth_views.PasswordChangeView) def test_csrf(self): self.assertContains(self.response, 'csrfmiddlewaretoken') def test_contains_form(self): form = self.response.context.get('form') self.assertIsInstance(form, PasswordChangeForm) def test_form_inputs(self): ''' The view must contain four inputs: csrf, old_password, new_password1, new_password2 ''' self.assertContains(self.response, '