def create_item(self, url): aliases_limit = self.site.aliases_limit if (aliases_limit is not None and self.count() >= aliases_limit): raise LimitExceeded('Aliases limit exceeded') if len(url) > self.ALIAS_LEN_LIMIT: raise ValidationError('Url too long') url = url.strip().lower() (valid, error) = url_utils.validate_site_url(url) if not valid: raise ValidationError('Invalid url: ' + error) if self.find_item_by_url(url): raise ValidationError('Alias with this url already exists') return self._do_create_item(url=url_utils.remove_default_port(url))
def create_item(self, url): aliases_limit = self.site.aliases_limit if (aliases_limit is not None and self.count() >= aliases_limit): raise LimitExceeded('Aliases limit exceeded') if len(url) > self.ALIAS_LEN_LIMIT: raise ValidationError('Url too long') url = url.strip().lower() (valid, error) = url_utils.validate_site_url(url) if not valid: raise ValidationError('Invalid url: ' + error) url = url_utils.remove_default_port(url) if self.find_item_by_url(url): raise ValidationError('Alias with this url already exists') return self._do_create_item(url=url)
def test_validation(self): self.assertInvalid( validate_site_url('example.com'), 'missing scheme') self.assertInvalid( validate_site_url('ftp://example.com'), 'incorrect scheme') self.assertInvalid( validate_site_url('http://'), 'missing domain') self.assertInvalid( validate_site_url('http://example.com/foo'), 'contains path') self.assertInvalid( validate_site_url('http://example.com/'), 'contains path') self.assertInvalid( validate_site_url('http://example.com?a=b'), 'contains query') self.assertInvalid( validate_site_url('http://example.com#boo'), 'contains fragment') self.assertInvalid( validate_site_url('http://[email protected]'), 'contains username') self.assertInvalid( validate_site_url('http://:[email protected]'), 'contains password') self.assertValid(validate_site_url('http://example.com')) self.assertValid(validate_site_url('http://example.com:80')) self.assertValid(validate_site_url('https://example.com')) self.assertValid(validate_site_url('https://example.com:123'))