def test_description_min_length(self): delicious = Addon.objects.get() assert delicious.type == amo.ADDON_EXTENSION with override_switch('content-optimization', active=False): form = forms.DescribeForm( {'name': u'Delicious for everyone', 'summary': u'foo', 'slug': u'bar', 'description': u'123456789'}, request=self.request, instance=delicious) assert form.is_valid(), form.errors with override_switch('content-optimization', active=True): form = forms.DescribeForm( {'name': u'Delicious for everyone', 'summary': u'foo', 'slug': u'bar', 'description': u'123456789'}, request=self.request, instance=delicious) assert not form.is_valid() # But only extensions have a minimum length delicious.update(type=amo.ADDON_STATICTHEME) form = forms.DescribeForm( {'name': u'Delicious for everyone', 'summary': u'foo', 'slug': u'bar', 'description': u'123456789'}, request=self.request, instance=delicious) assert form.is_valid() # Do it again, but this time with a longer description delicious.update(type=amo.ADDON_EXTENSION) form = forms.DescribeForm( {'name': u'Delicious for everyone', 'summary': u'foo', 'slug': u'bar', 'description': u'1234567890'}, request=self.request, instance=delicious) assert form.is_valid(), form.errors
def test_summary_optional(self): delicious = Addon.objects.get() assert delicious.type == amo.ADDON_EXTENSION with override_switch('content-optimization', active=False): form = forms.DescribeForm( {'name': 'Delicious for everyone', 'summary': 'foo', 'slug': 'bar'}, request=self.request, instance=delicious) assert form.is_valid(), form.errors with override_switch('content-optimization', active=True): form = forms.DescribeForm( {'name': 'Delicious for everyone', 'summary': 'foo', 'slug': 'bar'}, request=self.request, instance=delicious) assert not form.is_valid() # But only extensions are required to have a description delicious.update(type=amo.ADDON_STATICTHEME) form = forms.DescribeForm( {'name': 'Delicious for everyone', 'summary': 'foo', 'slug': 'bar'}, request=self.request, instance=delicious) assert form.is_valid(), form.errors # Do it again, but this time with a description delicious.update(type=amo.ADDON_EXTENSION) form = forms.DescribeForm( {'name': 'Delicious for everyone', 'summary': 'foo', 'slug': 'bar', 'description': 'its a description'}, request=self.request, instance=delicious) assert form.is_valid(), form.errors
def test_name_summary_lengths(self): delicious = Addon.objects.get() short_data = { 'name': u'n', 'summary': u's', 'slug': u'bar', 'description': u'1234567890'} over_70_data = { 'name': u'this is a name that hits the 50 char limit almost', 'summary': u'this is a summary that doesn`t get close to the ' u'existing 250 limit but is over 70', 'slug': u'bar', 'description': u'1234567890'} under_70_data = { 'name': u'this is a name that is over the 50 char limit by a few', 'summary': u'ab', 'slug': u'bar', 'description': u'1234567890'} # short name and summary - both allowed with DescribeForm form = forms.DescribeForm( short_data, request=self.request, instance=delicious) assert form.is_valid() # but not with DescribeFormContentOptimization form = forms.DescribeFormContentOptimization( short_data, request=self.request, instance=delicious) assert not form.is_valid() assert form.errors['name'] == [ u'Ensure this value has at least 2 characters (it has 1).'] assert form.errors['summary'] == [ u'Ensure this value has at least 2 characters (it has 1).'] # As are long names and summaries form = forms.DescribeForm( over_70_data, request=self.request, instance=delicious) assert form.is_valid() # but together are over 70 chars so no longer allowed form = forms.DescribeFormContentOptimization( over_70_data, request=self.request, instance=delicious) assert not form.is_valid() assert len(over_70_data['name']) + len(over_70_data['summary']) == 130 assert form.errors['name'] == [ u'Ensure name and summary combined are at most 70 characters ' u'(they have 130).'] assert 'summary' not in form.errors # DescribeForm has a lower limit for name length form = forms.DescribeForm( under_70_data, request=self.request, instance=delicious) assert not form.is_valid() assert form.errors['name'] == [ u'Ensure this value has at most 50 characters (it has 54).'] # DescribeFormContentOptimization only cares that the total is <= 70 form = forms.DescribeFormContentOptimization( under_70_data, request=self.request, instance=delicious) assert form.is_valid() assert len(under_70_data['name']) + len(under_70_data['summary']) == 56
def test_bogus_support_url(self): form = forms.DescribeForm( {'support_url': 'javascript://something.com'}, request=self.request, instance=Addon.objects.get()) assert not form.is_valid() assert form.errors['support_url'] == [u'Enter a valid URL.']
def test_slug_isdigit(self): delicious = Addon.objects.get() form = forms.DescribeForm( {'slug': u'123'}, request=self.request, instance=delicious) assert not form.is_valid() assert form.errors['slug'] == ( [u'The slug cannot be "123". Please choose another.'])
def test_ftp_support_url(self): form = forms.DescribeForm( {'support_url': 'ftp://foo.com'}, request=self.request, instance=Addon.objects.get(), ) assert not form.is_valid() assert form.errors['support_url'] == ['Enter a valid URL.']
def test_name_no_trademark(self): delicious = Addon.objects.get() form = forms.DescribeForm( {'name': u'Delicious Dumdidum', 'summary': u'đoo', 'slug': u'bar'}, request=self.request, instance=delicious) assert form.is_valid()
def test_name_trademark_allowed_for_prefix(self): delicious = Addon.objects.get() form = forms.DescribeForm( {'name': 'Delicious for Mozilla', 'summary': 'foo', 'slug': 'bar'}, request=self.request, instance=delicious) assert form.is_valid()
def test_slug_deny(self): delicious = Addon.objects.get() form = forms.DescribeForm({'slug': 'submit'}, request=self.request, instance=delicious) assert not form.is_valid() assert form.errors['slug'] == ([ 'The slug cannot be "submit". Please choose another.' ])
def test_name_trademark_firefox(self): delicious = Addon.objects.get() form = forms.DescribeForm( {'name': u'Delicious Firefox', 'summary': u'foö', 'slug': u'bar'}, request=self.request, instance=delicious) assert not form.is_valid() assert form.errors['name'].data[0].message.startswith( u'Add-on names cannot contain the Mozilla or Firefox trademarks.')
def test_http_support_url(self): form = forms.DescribeForm( { 'name': u'Delicious Dumdidum', 'summary': u'foo', 'slug': u'bar', 'support_url': 'http://foo.com' }, request=self.request, instance=Addon.objects.get()) assert form.is_valid(), form.errors