def test_some_names(self, _, __, username, realname, success):
     """Test some obviously good and bad usernames."""
     try:
         validate_username(username, realname)
     except ValidationWarning as ex:
         if success:
             pytest.fail("Received unexpected error: {error}".format(error=ex))
Exemple #2
0
def recommend(real_name: str, n: int) -> List[Any]:
    name_fields: List[str] = [name.lower() for name in real_name.split()]

    # Can reimplement name_field_abbrevs to only remove vowels or consonants
    name_field_abbrevs: List[List[str]] = [[] for i in range(len(name_fields))]
    for i in range(len(name_fields)):
        name_field = name_fields[i]
        for j in range(1, len(name_field) + 1):
            name_field_abbrevs[i].append(name_field[:j])

    unvalidated_recs = name_field_abbrevs[0]
    for i in range(1, len(name_fields)):
        new_unvalidated_recs = []
        for name_field_abbrev in name_field_abbrevs[i]:
            for rec in unvalidated_recs:
                new_unvalidated_recs.append(rec + name_field_abbrev)
        unvalidated_recs = new_unvalidated_recs

    validated_recs: List[Any] = []
    while len(validated_recs) < n and len(unvalidated_recs) > 0:
        rec = unvalidated_recs.pop(randint(0, len(unvalidated_recs) - 1))
        try:
            validate_username(rec, real_name)
            validated_recs.append(rec)
        except (ValidationError, ValidationWarning):
            pass  # Account name wasn't valid, skip this recommendation
    return validated_recs
 def test_long_names(self, _, __):
     """In the past, create has gotten "stuck" trying millions of
     combinations of real names because we try permutations of the words in
     the real name."""
     with pytest.raises(ValidationWarning):
         # 16! = 2.09227899e13, so if this works, it's definitely not
         # because we tried all possibilities
         validate_username("nomatch", "I Have Sixteen Names A B C D E F G H I J K L")
Exemple #4
0
 def test_some_names(self, _, __, username, realname, success,):
     """Test some obviously good and bad usernames."""
     try:
         validate_username(username, realname)
     except ValidationWarning as ex:
         if success:
             pytest.fail(
                 'Received unexpected error: {error}'.format(error=ex),
             )
Exemple #5
0
 def test_long_names(self, _, __):
     """In the past, create has gotten "stuck" trying millions of
     combinations of real names because we try permutations of the words in
     the real name."""
     with pytest.raises(ValidationWarning):
         # 16! = 2.09227899e13, so if this works, it's definitely not
         # because we tried all possibilities
         validate_username(
             'nomatch',
             'I Have Sixteen Names A B C D E F G H I J K L',
         )
Exemple #6
0
def validate(request):
    real_name = request.GET.get('real_name', None)
    if real_name is None:
        return HttpResponseBadRequest('No real_name in validate request')
    username = request.GET.get('username', None)
    if username is None:
        return HttpResponseBadRequest('No username in validate request')

    try:
        validate_username(username, real_name)
        return JsonResponse({
            'is_valid': True,
            'msg': 'Username is available.',
        })
    except (ValidationError, ValidationWarning) as e:
        return JsonResponse({
            'is_valid': False,
            'msg': str(e),
        })
Exemple #7
0
 def test_error_user_exists(self):
     """Ensure that we raise an error if the username already exists."""
     with pytest.raises(ValidationError):
         validate_username('ckuehl', 'Chris Kuehl')
Exemple #8
0
 def test_error_names(self, _, __, username):
     """Ensure that we raise errors when appropriate."""
     with pytest.raises(ValidationError):
         validate_username(username, username)
Exemple #9
0
 def test_warning_names(self, _, __, username):
     """Ensure that we raise warnings when bad/restricted words appear."""
     with pytest.raises(ValidationWarning):
         validate_username(username, username)
Exemple #10
0
 def test_error_user_exists(self):
     """Ensure that we raise an error if the username already exists."""
     with pytest.raises(ValidationError):
         validate_username('ckuehl', 'Chris Kuehl')
Exemple #11
0
 def test_error_names(self, _, __, username):
     """Ensure that we raise errors when appropriate."""
     with pytest.raises(ValidationError):
         validate_username(username, username)
Exemple #12
0
 def test_warning_names(self, _, __, username):
     """Ensure that we raise warnings when bad/restricted words appear."""
     with pytest.raises(ValidationWarning):
         validate_username(username, username)