test_passwordinput.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from django.forms import CharField, Form, PasswordInput
  2. from .base import WidgetTest
  3. class PasswordInputTest(WidgetTest):
  4. widget = PasswordInput()
  5. def test_render(self):
  6. self.check_html(
  7. self.widget, "password", "", html='<input type="password" name="password">'
  8. )
  9. def test_render_ignore_value(self):
  10. self.check_html(
  11. self.widget,
  12. "password",
  13. "secret",
  14. html='<input type="password" name="password">',
  15. )
  16. def test_render_value_true(self):
  17. """
  18. The render_value argument lets you specify whether the widget should
  19. render its value. For security reasons, this is off by default.
  20. """
  21. widget = PasswordInput(render_value=True)
  22. self.check_html(
  23. widget, "password", "", html='<input type="password" name="password">'
  24. )
  25. self.check_html(
  26. widget, "password", None, html='<input type="password" name="password">'
  27. )
  28. self.check_html(
  29. widget,
  30. "password",
  31. "test@example.com",
  32. html='<input type="password" name="password" value="test@example.com">',
  33. )
  34. def test_fieldset(self):
  35. class TestForm(Form):
  36. template_name = "forms_tests/use_fieldset.html"
  37. field = CharField(widget=self.widget)
  38. form = TestForm()
  39. self.assertIs(self.widget.use_fieldset, False)
  40. self.assertHTMLEqual(
  41. '<div><label for="id_field">Field:</label>'
  42. '<input type="password" name="field" required id="id_field"></div>',
  43. form.render(),
  44. )