display_name limited to between 2 and 50 characters (#10270)

This commit is contained in:
Andrew Williamson 2019-01-02 23:14:27 +00:00 коммит произвёл GitHub
Родитель 080a1f310c
Коммит 3258a760dc
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
6 изменённых файлов: 45 добавлений и 4 удалений

Просмотреть файл

@ -133,7 +133,7 @@ but not listed below are not editable and will be ignored in the patch request.
.. _account-edit-request:
:<json string|null biography: More details about the user. No links are allowed.
:<json string|null display_name: The name chosen by the user.
:<json string|null display_name: The name chosen by the user. Minimum length is 2, maximum length is 50 characters.
:<json string|null homepage: The user's website.
:<json string|null location: The location of the user.
:<json string|null occupation: The occupation of the user.

Просмотреть файл

@ -68,6 +68,7 @@ class PublicUserProfileSerializer(BaseUserSerializer):
class UserProfileSerializer(PublicUserProfileSerializer):
display_name = serializers.CharField(min_length=2, max_length=50)
picture_upload = serializers.ImageField(use_url=True, write_only=True)
permissions = serializers.SerializerMethodField()
fxa_edit_email_url = serializers.SerializerMethodField()

Просмотреть файл

@ -1120,6 +1120,25 @@ class TestAccountViewSetUpdate(TestCase):
'username': [u'Enter a valid username consisting of letters, '
u'numbers, underscores or hyphens.']}
def test_display_name_validation(self):
self.client.login_api(self.user)
response = self.patch(
data={'display_name': 'a'})
assert response.status_code == 400
assert json.loads(response.content) == {
'display_name': ['Ensure this field has at least 2 characters.']}
response = self.patch(
data={'display_name': 'a' * 51})
assert response.status_code == 400
assert json.loads(response.content) == {
'display_name': [
'Ensure this field has no more than 50 characters.']}
response = self.patch(
data={'display_name': 'a' * 50})
assert response.status_code == 200
def test_picture_upload(self):
# Make sure the picture doesn't exist already or we get a false-postive
assert not path.exists(self.user.picture_path)

Просмотреть файл

@ -230,7 +230,7 @@ class TestThemeForm(TestCase):
# Bug 1181751.
user = UserProfile.objects.create(email='foo@bar.com',
username='a' * 255,
display_name='b' * 255)
display_name='b' * 50)
request = RequestFactory()
request.user = user
cat = Category.objects.create(type=amo.ADDON_PERSONA)

Просмотреть файл

@ -121,8 +121,9 @@ class UserProfile(OnChangeMixin, ModelBase, AbstractBaseUser):
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email']
username = models.CharField(max_length=255, default='', unique=True)
display_name = models.CharField(max_length=255, default='', null=True,
blank=True)
display_name = models.CharField(
max_length=50, default='', null=True, blank=True,
validators=[validators.MinLengthValidator(2)])
email = models.EmailField(unique=True, null=True, max_length=75)

Просмотреть файл

@ -92,6 +92,26 @@ class TestUserEditForm(UserFormBase):
self.assertFormError(response, 'form', 'display_name', msg)
assert self.user.reload().display_name != 'IE6Fan'
def test_display_name_length(self):
data = {'username': 'new-username',
'display_name': 'a' * 51,
'email': 'jbalogh@mozilla.com'}
response = self.client.post(self.url, data)
msg = 'Ensure this value has at most 50 characters (it has 51).'
self.assertFormError(response, 'form', 'display_name', msg)
assert self.user.reload().display_name != 'a' * 51
data['display_name'] = 'a'
response = self.client.post(self.url, data)
msg = 'Ensure this value has at least 2 characters (it has 1).'
self.assertFormError(response, 'form', 'display_name', msg)
assert self.user.reload().display_name != 'a'
data['display_name'] = ''
response = self.client.post(self.url, data)
self.assertNoFormErrors(response)
assert self.user.reload().display_name == ''
def test_no_username_anonymous_does_not_change(self):
"""Test that username isn't required with auto-generated usernames and
the auto-generated value does not change."""