Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
    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
Exemple #4
0
 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.']
Exemple #5
0
 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.'])
Exemple #6
0
 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.']
Exemple #7
0
    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()
Exemple #8
0
    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()
Exemple #9
0
 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.'
     ])
Exemple #10
0
 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.')
Exemple #11
0
 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