WIP: a11y: add title attribute to password policy rules (#83211) #179

Draft
smihai wants to merge 1 commits from wip/83211-a11y-add-title-attribute-to-password-policy-rules into main
4 changed files with 8 additions and 0 deletions

View File

@ -1571,6 +1571,7 @@ class ValidatePasswordAPI(BaseRpcView):
{
'result': check.result,
'label': check.label,
'tip': check.tip,
}
)
result['ok'] = ok

View File

@ -59,6 +59,7 @@ class PasswordChecker(metaclass=abc.ABCMeta):
def __init__(self, label, result):
self.label = label
self.result = result
self.tip = _('criteria met') if self.result else _('criteria unmet')
@abc.abstractmethod
def __call__(self, password, **kwargs):

View File

@ -99,6 +99,7 @@ a2_password_validate = (function () {
var $rule = $('<span class="a2-password-policy-rule"/>');
$rule.text(error.label)
$rule.attr('title', error.tip)
$rule.appendTo($policyContainer);
$rule.toggleClass('a2-password-ok', error.result);
$rule.toggleClass('a2-password-nok', ! error.result);

View File

@ -1860,14 +1860,19 @@ def test_validate_password_regex(app, settings):
assert len(response.json['checks']) == 5
assert response.json['checks'][0]['label'] == '8 characters'
assert response.json['checks'][0]['result'] is True
assert response.json['checks'][0]['tip'] == 'criteria met'
assert response.json['checks'][1]['label'] == '1 lowercase letter'
assert response.json['checks'][1]['result'] is True
assert response.json['checks'][1]['tip'] == 'criteria met'
assert response.json['checks'][2]['label'] == '1 digit'
assert response.json['checks'][2]['result'] is True
assert response.json['checks'][2]['tip'] == 'criteria met'
assert response.json['checks'][3]['label'] == '1 uppercase letter'
assert response.json['checks'][3]['result'] is True
assert response.json['checks'][3]['tip'] == 'criteria met'
assert response.json['checks'][4]['label'] == 'must contain "ok"'
assert response.json['checks'][4]['result'] is False
assert response.json['checks'][4]['tip'] == 'criteria unmet'
response = app.post_json('/api/validate-password/', params={'password': 'x' * 8 + 'ok1X'})
assert response.json['result'] == 1