class _UserForm(formencode.Schema): allow_extra_fields = True filter_extra_fields = True username = All(v.UnicodeString(strip=True, min=1, not_empty=True), v.ValidUsername(edit, old_data)) if edit: new_password = All( v.ValidPassword(), v.UnicodeString(strip=False, min=6, not_empty=False)) password_confirmation = All( v.ValidPassword(), v.UnicodeString(strip=False, min=6, not_empty=False), ) admin = v.StringBoolean(if_missing=False) chained_validators = [ v.ValidPasswordsMatch('new_password', 'password_confirmation') ] else: password = All(v.ValidPassword(), v.UnicodeString(strip=False, min=6, not_empty=True)) password_confirmation = All( v.ValidPassword(), v.UnicodeString(strip=False, min=6, not_empty=False)) chained_validators = [ v.ValidPasswordsMatch('password', 'password_confirmation') ] active = v.StringBoolean(if_missing=False) firstname = v.UnicodeString(strip=True, min=1, not_empty=False) lastname = v.UnicodeString(strip=True, min=1, not_empty=False) email = All(v.Email(not_empty=True), v.UniqSystemEmail(old_data)) extern_name = v.UnicodeString(strip=True, if_missing=None) extern_type = v.UnicodeString(strip=True, if_missing=None)
def test_ValidPasswordsMatch(self): validator = v.ValidPasswordsMatch('new_password', 'password_confirmation') with pytest.raises(formencode.Invalid): validator.to_python({ 'new_password': '******', 'password_confirmation': 'pass2' }) with pytest.raises(formencode.Invalid): validator.to_python({ 'new_password': '******', 'password_confirmation': 'pass2' }) assert { 'new_password': '******', 'password_confirmation': 'pass' } == validator.to_python({ 'new_password': '******', 'password_confirmation': 'pass' }) assert { 'new_password': '******', 'password_confirmation': 'pass' } == validator.to_python({ 'new_password': '******', 'password_confirmation': 'pass' })
def test_register_password_mismatch(self): response = self.app.post( url(controller='login', action='register'), { 'username': '******', 'password': '******', 'password_confirmation': 'qwe123', 'email': '*****@*****.**', 'firstname': 'test', 'lastname': 'test' }) msg = validators.ValidPasswordsMatch()._messages['password_mismatch'] response.mustcontain(msg)
def test_register_password_mismatch(self): response = self.app.post(base.url(controller='login', action='register'), {'username': '******', 'password': '******', 'password_confirmation': 'qwe123', 'email': '*****@*****.**', 'firstname': 'test', 'lastname': 'test', '_session_csrf_secret_token': self.session_csrf_secret_token()}) with test_context(self.app): msg = validators.ValidPasswordsMatch('password', 'password_confirmation')._messages['password_mismatch'] response.mustcontain(msg)
class _PasswordChangeForm(formencode.Schema): allow_extra_fields = True filter_extra_fields = True current_password = v.ValidOldPassword(username)(not_empty=True) new_password = All(v.ValidPassword(), v.UnicodeString(strip=False, min=6)) new_password_confirmation = All(v.ValidPassword(), v.UnicodeString(strip=False, min=6)) chained_validators = [ v.ValidPasswordsMatch('new_password', 'new_password_confirmation') ]
class _PasswordResetConfirmationForm(formencode.Schema): allow_extra_fields = True filter_extra_fields = True email = v.UnicodeString(strip=True, not_empty=True) timestamp = v.Number(strip=True, not_empty=True) token = v.UnicodeString(strip=True, not_empty=True) password = All(v.ValidPassword(), v.UnicodeString(strip=False, min=6)) password_confirm = All(v.ValidPassword(), v.UnicodeString(strip=False, min=6)) chained_validators = [ v.ValidPasswordsMatch('password', 'password_confirm') ]
def test_ValidPasswordsMatch(self): validator = v.ValidPasswordsMatch() self.assertRaises(formencode.Invalid, validator.to_python, {'password': '******', 'password_confirmation': 'pass2'}) self.assertRaises(formencode.Invalid, validator.to_python, {'new_password': '******', 'password_confirmation': 'pass2'}) self.assertEqual({'new_password': '******', 'password_confirmation': 'pass'}, validator.to_python({'new_password': '******', 'password_confirmation': 'pass'})) self.assertEqual({'password': '******', 'password_confirmation': 'pass'}, validator.to_python({'password': '******', 'password_confirmation': 'pass'}))