summaryrefslogtreecommitdiff
path: root/tests/validators
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2016-03-26 22:09:08 +0200
committerTim Graham <timograham@gmail.com>2016-06-30 09:08:50 -0400
commit12b4280444b58c94197255655e284e4103fe00a9 (patch)
tree26640543f44e65800ae0fbb59004e9e7907bdf73 /tests/validators
parentc9d0a0f7f47c8496a9d8b0cfda94e2ef118d9ab3 (diff)
downloaddjango-12b4280444b58c94197255655e284e4103fe00a9.tar.gz
Fixed #21548 -- Added FileExtensionValidator and validate_image_file_extension.
Diffstat (limited to 'tests/validators')
-rw-r--r--tests/validators/tests.py51
1 files changed, 47 insertions, 4 deletions
diff --git a/tests/validators/tests.py b/tests/validators/tests.py
index 56ebbe4cce..56dea8804f 100644
--- a/tests/validators/tests.py
+++ b/tests/validators/tests.py
@@ -9,11 +9,13 @@ from datetime import datetime, timedelta
from unittest import TestCase
from django.core.exceptions import ValidationError
+from django.core.files.base import ContentFile
from django.core.validators import (
- BaseValidator, DecimalValidator, EmailValidator, MaxLengthValidator,
- MaxValueValidator, MinLengthValidator, MinValueValidator, RegexValidator,
- URLValidator, int_list_validator, validate_comma_separated_integer_list,
- validate_email, validate_integer, validate_ipv4_address,
+ BaseValidator, DecimalValidator, EmailValidator, FileExtensionValidator,
+ MaxLengthValidator, MaxValueValidator, MinLengthValidator,
+ MinValueValidator, RegexValidator, URLValidator, int_list_validator,
+ validate_comma_separated_integer_list, validate_email,
+ validate_image_file_extension, validate_integer, validate_ipv4_address,
validate_ipv6_address, validate_ipv46_address, validate_slug,
validate_unicode_slug,
)
@@ -242,6 +244,17 @@ TEST_DATA = [
(RegexValidator('x', flags=re.IGNORECASE), 'y', ValidationError),
(RegexValidator('a'), 'A', ValidationError),
(RegexValidator('a', flags=re.IGNORECASE), 'A', None),
+
+ (FileExtensionValidator(['txt']), ContentFile('contents', name='fileWithUnsupportedExt.jpg'), ValidationError),
+ (FileExtensionValidator(['txt']), ContentFile('contents', name='fileWithNoExtenstion'), ValidationError),
+ (FileExtensionValidator([]), ContentFile('contents', name='file.txt'), ValidationError),
+ (FileExtensionValidator(['txt']), ContentFile('contents', name='file.txt'), None),
+ (FileExtensionValidator(), ContentFile('contents', name='file.jpg'), None),
+
+ (validate_image_file_extension, ContentFile('contents', name='file.jpg'), None),
+ (validate_image_file_extension, ContentFile('contents', name='file.png'), None),
+ (validate_image_file_extension, ContentFile('contents', name='file.txt'), ValidationError),
+ (validate_image_file_extension, ContentFile('contents', name='file'), ValidationError),
]
@@ -422,3 +435,33 @@ class TestValidatorEquality(TestCase):
DecimalValidator(1, 2),
MinValueValidator(11),
)
+
+ def test_file_extension_equality(self):
+ self.assertEqual(
+ FileExtensionValidator(),
+ FileExtensionValidator()
+ )
+ self.assertEqual(
+ FileExtensionValidator(['txt']),
+ FileExtensionValidator(['txt'])
+ )
+ self.assertEqual(
+ FileExtensionValidator(['txt']),
+ FileExtensionValidator(['txt'], code='invalid_extension')
+ )
+ self.assertNotEqual(
+ FileExtensionValidator(['txt']),
+ FileExtensionValidator(['png'])
+ )
+ self.assertNotEqual(
+ FileExtensionValidator(['txt']),
+ FileExtensionValidator(['png', 'jpg'])
+ )
+ self.assertNotEqual(
+ FileExtensionValidator(['txt']),
+ FileExtensionValidator(['txt'], code='custom_code')
+ )
+ self.assertNotEqual(
+ FileExtensionValidator(['txt']),
+ FileExtensionValidator(['txt'], message='custom error message')
+ )