Exemplo n.º 1
0
    def clean(self):

        data = self.cleaned_data
        if 'upload' not in self.cleaned_data:
            self._errors['upload'] = self.upload_error
            return

        # Packaged apps are only valid for firefox os.
        if self.is_packaged():
            # Now run the packaged app check, done in clean, because
            # clean_packaged needs to be processed first.
            try:
                pkg = parse_addon(data['upload'], self.addon)
            except forms.ValidationError, e:
                self._errors['upload'] = self.error_class(e.messages)
                return

            ver = pkg.get('version')
            if (ver and self.addon and
                self.addon.versions.filter(version=ver).exists()):
                self._errors['upload'] = _(u'Version %s already exists') % ver
                return

            origin = pkg.get('origin')
            if origin:
                try:
                    validate_origin(origin)
                    origin = verify_app_domain(origin, packaged=True)
                except forms.ValidationError, e:
                    self._errors['upload'] = self.error_class(e.messages)
                    return
                if origin:
                    data['origin'] = origin
Exemplo n.º 2
0
 def test_invalid_origins(self):
     origins = [
         'this-is-not-an-origin',
         'ftp://domain.com',
         'mail:[email protected]',
         '//domain.com',
         'http://domain.com',
         'https://domain.com',
     ]
     for origin in origins:
         with self.assertRaises(ValidationError):
             forms.validate_origin(origin)
Exemplo n.º 3
0
 def test_valid_origins(self):
     origins = [
         'app://domain.com',
         'app://domain.com/with/path.exe?q=yo',
         # TODO: Should that be valid? ^
     ]
     for origin in origins:
         origin = forms.validate_origin(origin)
         assert origin, 'Origin invalid: %s' % origin