14
14
15
15
import rest_framework
16
16
from rest_framework import compat , serializers
17
- from rest_framework .fields import is_simple_callable
17
+ from rest_framework .fields import DjangoImageField , is_simple_callable
18
18
19
19
try :
20
20
import pytz
@@ -1714,15 +1714,24 @@ class TestFieldFieldWithName(FieldValues):
1714
1714
field = serializers .FileField (use_url = False )
1715
1715
1716
1716
1717
+ def ext_validator (value ):
1718
+ if not value .name .endswith ('.png' ):
1719
+ raise serializers .ValidationError ('File extension is not allowed. Allowed extensions is png.' )
1720
+
1721
+
1717
1722
# Stub out mock Django `forms.ImageField` class so we don't *actually*
1718
1723
# call into it's regular validation, or require PIL for testing.
1719
- class FailImageValidation (object ):
1724
+ class PassImageValidation (DjangoImageField ):
1725
+ default_validators = [ext_validator ]
1726
+
1720
1727
def to_python (self , value ):
1721
- raise serializers . ValidationError ( self . error_messages [ 'invalid_image' ])
1728
+ return value
1722
1729
1723
1730
1724
- class PassImageValidation ( object ):
1731
+ class FailImageValidation ( PassImageValidation ):
1725
1732
def to_python (self , value ):
1733
+ if value .name == 'badimage.png' :
1734
+ raise serializers .ValidationError (self .error_messages ['invalid_image' ])
1726
1735
return value
1727
1736
1728
1737
@@ -1732,7 +1741,8 @@ class TestInvalidImageField(FieldValues):
1732
1741
"""
1733
1742
valid_inputs = {}
1734
1743
invalid_inputs = [
1735
- (MockFile (name = 'example.txt' , size = 10 ), ['Upload a valid image. The file you uploaded was either not an image or a corrupted image.' ])
1744
+ (MockFile (name = 'badimage.png' , size = 10 ), ['Upload a valid image. The file you uploaded was either not an image or a corrupted image.' ]),
1745
+ (MockFile (name = 'goodimage.html' , size = 10 ), ['File extension is not allowed. Allowed extensions is png.' ])
1736
1746
]
1737
1747
outputs = {}
1738
1748
field = serializers .ImageField (_DjangoImageField = FailImageValidation )
@@ -1743,7 +1753,7 @@ class TestValidImageField(FieldValues):
1743
1753
Values for an valid `ImageField`.
1744
1754
"""
1745
1755
valid_inputs = [
1746
- (MockFile (name = 'example.txt ' , size = 10 ), MockFile (name = 'example.txt ' , size = 10 ))
1756
+ (MockFile (name = 'example.png ' , size = 10 ), MockFile (name = 'example.png ' , size = 10 ))
1747
1757
]
1748
1758
invalid_inputs = {}
1749
1759
outputs = {}
0 commit comments