1- from email .mime .multipart import MIMEMultipart
2- from email .mime .nonmultipart import MIMENonMultipart
3-
41import pytest
52
3+ from six import b , u
4+
65from openapi_core .deserializing .exceptions import DeserializeError
76from openapi_core .deserializing .media_types .factories import (
87 MediaTypeDeserializersFactory ,
98)
109from openapi_core .schema .media_types .models import MediaType
1110
1211
13- class MIMEFormdata (MIMENonMultipart ):
14- def __init__ (self , keyname , * args , ** kwargs ):
15- super (MIMEFormdata , self ).__init__ (* args , ** kwargs )
16- self .add_header (
17- "Content-Disposition" , "form-data; name=\" %s\" " % keyname )
18-
19-
20- def encode_multipart_formdata (fields ):
21- m = MIMEMultipart ("form-data" )
22-
23- for field , value in fields .items ():
24- data = MIMEFormdata (field , "text" , "plain" )
25- data .set_payload (value )
26- m .attach (data )
27-
28- return m
29-
30-
3112class TestMediaTypeDeserializer (object ):
3213
3314 @pytest .fixture
@@ -68,7 +49,7 @@ def test_urlencoded_form_simple(self, deserializer_factory):
6849
6950 assert result == {'param1' : 'test' }
7051
71- @pytest .mark .parametrize ('value' , [b'' , '' ])
52+ @pytest .mark .parametrize ('value' , [b ( '' ), u ( '' ) ])
7253 def test_data_form_empty (self , deserializer_factory , value ):
7354 media_type = MediaType ('multipart/form-data' )
7455
@@ -78,12 +59,19 @@ def test_data_form_empty(self, deserializer_factory, value):
7859
7960 def test_data_form_simple (self , deserializer_factory ):
8061 media_type = MediaType ('multipart/form-data' )
81- formdata = encode_multipart_formdata ({'param1' : 'test' })
82- value = str (formdata )
62+ value = b (
63+ 'Content-Type: multipart/form-data; boundary="'
64+ '===============2872712225071193122=="\n '
65+ 'MIME-Version: 1.0\n \n '
66+ '--===============2872712225071193122==\n '
67+ 'Content-Type: text/plain\n MIME-Version: 1.0\n '
68+ 'Content-Disposition: form-data; name="param1"\n \n test\n '
69+ '--===============2872712225071193122==--\n '
70+ )
8371
8472 result = deserializer_factory (media_type )(value )
8573
86- assert result == {'param1' : b'test' }
74+ assert result == {'param1' : b ( 'test' ) }
8775
8876 def test_custom_simple (self , deserializer_factory ):
8977 custom_mimetype = 'application/custom'
0 commit comments