def test_bug_17944_empty_password(self):
     """Test form can be used when password not set
     https://code.djangoproject.com/ticket/17944
     """
     user = User.objects.get(email='*****@*****.**')
     form = UserChangeForm(instance=user)
     self.assertIn(_('No password set.'), form.as_table())
 def test_unusable_password(self):
     """Test that Django shows unusable password warning"""
     user = User.objects.get(email="*****@*****.**")
     user.set_unusable_password()
     user.save()
     form = UserChangeForm(instance=user)
     self.assertIn(_("No password set."), form.as_table())
 def test_update_form_success(self):
     """Test successful submission of update form"""
     user = UserFactory()
     data = {
         "email": user.email,
         "date_joined": user.date_joined,
     }
     form = UserChangeForm(data, instance=user)
     self.assertTrue(form.is_valid())
 def test_email_validity(self):
     """Ensure Email Validation is used on User"""
     user = User.objects.get(email="*****@*****.**")
     data = {"email": "not valid"}
     form = UserChangeForm(data, instance=user)
     self.assertFalse(form.is_valid())
     validator = next(v for v in User._meta.get_field("email").validators
                      if v.code == "invalid")
     self.assertEqual(form["email"].errors, [str(validator.message)])
 def test_bug_17944_unknown_password_algorithm(self):
     """Test form can be used when hashing algorithm is unrecognized
     https://code.djangoproject.com/ticket/17944
     """
     user = User.objects.get(email='*****@*****.**')
     form = UserChangeForm(instance=user)
     self.assertIn(
         _('Invalid password format or unknown hashing algorithm.'),
         form.as_table())
 def test_email_validity(self):
     """Ensure Email Validation is used on User"""
     user = User.objects.get(email='*****@*****.**')
     data = {'email': 'not valid'}
     form = UserChangeForm(data, instance=user)
     self.assertFalse(form.is_valid())
     validator = next(v for v in User._meta.get_field('email').validators
                      if v.code == 'invalid')
     self.assertEqual(form['email'].errors, [str(validator.message)])
    def test_bug_17944_unmanageable_password(self):
        """Test form can be used when password unmanageable

        https://code.djangoproject.com/ticket/17944

        """
        user = User.objects.get(email="*****@*****.**")
        form = UserChangeForm(instance=user)
        self.assertIn(
            _("Invalid password format or unknown hashing algorithm."),
            form.as_table(),
        )
 def test_bug_19349_bound_password_field(self):
     """Test re-rendering of ReadOnlyPasswordHashWidget
     https://code.djangoproject.com/ticket/19349
     """
     user = User.objects.get(email='*****@*****.**')
     form = UserChangeForm(data={}, instance=user)
     # When rendering the bound password field,
     # ReadOnlyPasswordHashWidget needs the initial
     # value to render correctly
     self.assertEqual(form.initial['password'], form['password'].value())
    def test_bug_19133(self):
        """The change form does not return the password value
        https://code.djangoproject.com/ticket/19133
        """
        # Use the form to construct the POST data
        user = User.objects.get(email='*****@*****.**')
        form_for_data = UserChangeForm(instance=user)
        post_data = form_for_data.initial

        # The password field should be readonly, so anything
        # posted here should be ignored; the form will be
        # valid, and give back the 'initial' value for the
        # password field.
        post_data['password'] = '******'
        form = UserChangeForm(instance=user, data=post_data)

        self.assertTrue(form.is_valid())
        self.assertTrue(user.check_password('password'))  # $ not in password
        self.assertIn('$', form.cleaned_data['password'])  # hash contains $