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
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)
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