1414
1515import rest_framework
1616from rest_framework import compat , serializers
17- from rest_framework .fields import is_simple_callable
17+ from rest_framework .fields import DjangoImageField , is_simple_callable
1818
1919try :
2020 import pytz
@@ -1714,15 +1714,24 @@ class TestFieldFieldWithName(FieldValues):
17141714 field = serializers .FileField (use_url = False )
17151715
17161716
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+
17171722# Stub out mock Django `forms.ImageField` class so we don't *actually*
17181723# 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+
17201727 def to_python (self , value ):
1721- raise serializers . ValidationError ( self . error_messages [ 'invalid_image' ])
1728+ return value
17221729
17231730
1724- class PassImageValidation ( object ):
1731+ class FailImageValidation ( PassImageValidation ):
17251732 def to_python (self , value ):
1733+ if value .name == 'badimage.png' :
1734+ raise serializers .ValidationError (self .error_messages ['invalid_image' ])
17261735 return value
17271736
17281737
@@ -1732,7 +1741,8 @@ class TestInvalidImageField(FieldValues):
17321741 """
17331742 valid_inputs = {}
17341743 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.' ])
17361746 ]
17371747 outputs = {}
17381748 field = serializers .ImageField (_DjangoImageField = FailImageValidation )
@@ -1743,7 +1753,7 @@ class TestValidImageField(FieldValues):
17431753 Values for an valid `ImageField`.
17441754 """
17451755 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 ))
17471757 ]
17481758 invalid_inputs = {}
17491759 outputs = {}
0 commit comments