display_name limited to between 2 and 50 characters (#10270)
This commit is contained in:
Родитель
080a1f310c
Коммит
3258a760dc
|
@ -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."""
|
||||
|
|
Загрузка…
Ссылка в новой задаче