Kaydet (Commit) 8b77b64f authored tarafından Danilo Bargen's avatar Danilo Bargen Kaydeden (comit) Tim Graham

Refactored URLValidator tests by moving URLs to text files.

üst ebc8e79c
foo
http://
http://example
http://example.
http://.com
http://invalid-.com
http://-invalid.com
http://invalid.com-
http://inv-.alid-.com
http://inv-.-alid.com
file://localhost/path
git://example.com/
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from datetime import datetime, timedelta from datetime import datetime, timedelta
import io
import os
import re import re
import types import types
from unittest import TestCase from unittest import TestCase
...@@ -16,12 +18,13 @@ from django.core.validators import ( ...@@ -16,12 +18,13 @@ from django.core.validators import (
) )
from django.test import SimpleTestCase from django.test import SimpleTestCase
from django.test.utils import str_prefix from django.test.utils import str_prefix
from django.utils._os import upath
NOW = datetime.now() NOW = datetime.now()
EXTENDED_SCHEMES = ['http', 'https', 'ftp', 'ftps', 'git', 'file'] EXTENDED_SCHEMES = ['http', 'https', 'ftp', 'ftps', 'git', 'file']
TEST_DATA = ( TEST_DATA = [
# (validator, value, expected), # (validator, value, expected),
(validate_integer, '42', None), (validate_integer, '42', None),
(validate_integer, '-42', None), (validate_integer, '-42', None),
...@@ -153,37 +156,9 @@ TEST_DATA = ( ...@@ -153,37 +156,9 @@ TEST_DATA = (
(MinLengthValidator(10), '', ValidationError), (MinLengthValidator(10), '', ValidationError),
(URLValidator(), 'http://www.djangoproject.com/', None),
(URLValidator(), 'HTTP://WWW.DJANGOPROJECT.COM/', None),
(URLValidator(), 'http://localhost/', None),
(URLValidator(), 'http://example.com/', None),
(URLValidator(), 'http://www.example.com/', None),
(URLValidator(), 'http://www.example.com:8000/test', None),
(URLValidator(), 'http://valid-with-hyphens.com/', None),
(URLValidator(), 'http://subdomain.example.com/', None),
(URLValidator(), 'http://200.8.9.10/', None),
(URLValidator(), 'http://200.8.9.10:8000/test', None),
(URLValidator(), 'http://valid-----hyphens.com/', None),
(URLValidator(), 'http://example.com?something=value', None),
(URLValidator(), 'http://example.com/index.php?something=value&another=value2', None),
(URLValidator(), 'https://example.com/', None),
(URLValidator(), 'ftp://example.com/', None),
(URLValidator(), 'ftps://example.com/', None),
(URLValidator(EXTENDED_SCHEMES), 'file://localhost/path', None), (URLValidator(EXTENDED_SCHEMES), 'file://localhost/path', None),
(URLValidator(EXTENDED_SCHEMES), 'git://example.com/', None), (URLValidator(EXTENDED_SCHEMES), 'git://example.com/', None),
(URLValidator(), 'foo', ValidationError),
(URLValidator(), 'http://', ValidationError),
(URLValidator(), 'http://example', ValidationError),
(URLValidator(), 'http://example.', ValidationError),
(URLValidator(), 'http://.com', ValidationError),
(URLValidator(), 'http://invalid-.com', ValidationError),
(URLValidator(), 'http://-invalid.com', ValidationError),
(URLValidator(), 'http://invalid.com-', ValidationError),
(URLValidator(), 'http://inv-.alid-.com', ValidationError),
(URLValidator(), 'http://inv-.-alid.com', ValidationError),
(URLValidator(), 'file://localhost/path', ValidationError),
(URLValidator(), 'git://example.com/', ValidationError),
(URLValidator(EXTENDED_SCHEMES), 'git://-invalid.com', ValidationError), (URLValidator(EXTENDED_SCHEMES), 'git://-invalid.com', ValidationError),
(BaseValidator(True), True, None), (BaseValidator(True), True, None),
...@@ -208,7 +183,20 @@ TEST_DATA = ( ...@@ -208,7 +183,20 @@ TEST_DATA = (
(RegexValidator('x', flags=re.IGNORECASE), 'y', ValidationError), (RegexValidator('x', flags=re.IGNORECASE), 'y', ValidationError),
(RegexValidator('a'), 'A', ValidationError), (RegexValidator('a'), 'A', ValidationError),
(RegexValidator('a', flags=re.IGNORECASE), 'A', None), (RegexValidator('a', flags=re.IGNORECASE), 'A', None),
) ]
def create_path(filename):
return os.path.abspath(os.path.join(os.path.dirname(upath(__file__)), filename))
# Add valid and invalid URL tests.
# This only tests the validator without extended schemes.
with io.open(create_path('valid_urls.txt'), encoding='utf8') as f:
for url in f:
TEST_DATA.append((URLValidator(), url.strip(), None))
with io.open(create_path('invalid_urls.txt'), encoding='utf8') as f:
for url in f:
TEST_DATA.append((URLValidator(), url.strip(), ValidationError))
def create_simple_test_method(validator, expected, value, num): def create_simple_test_method(validator, expected, value, num):
......
http://www.djangoproject.com/
HTTP://WWW.DJANGOPROJECT.COM/
http://localhost/
http://example.com/
http://www.example.com/
http://www.example.com:8000/test
http://valid-with-hyphens.com/
http://subdomain.example.com/
http://200.8.9.10/
http://200.8.9.10:8000/test
http://su--b.valid-----hyphens.com/
http://example.com?something=value
http://example.com/index.php?something=value&another=value2
https://example.com/
ftp://example.com/
ftps://example.com/
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment