5050from googleapiclient .discovery import DISCOVERY_URI
5151from googleapiclient .discovery import key2param
5252from googleapiclient .discovery import MEDIA_BODY_PARAMETER_DEFAULT_VALUE
53+ from googleapiclient .discovery import MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE
5354from googleapiclient .discovery import ResourceMethodParameters
5455from googleapiclient .discovery import STACK_QUERY_PARAMETERS
5556from googleapiclient .discovery import STACK_QUERY_PARAMETER_DEFAULT_VALUE
6162from googleapiclient .errors import ResumableUploadError
6263from googleapiclient .errors import UnacceptableMimeTypeError
6364from googleapiclient .errors import UnknownApiNameOrVersion
65+ from googleapiclient .errors import UnknownFileType
6466from googleapiclient .http import BatchHttpRequest
6567from googleapiclient .http import HttpMock
6668from googleapiclient .http import HttpMockSequence
@@ -212,14 +214,16 @@ def test_fix_up_media_upload_no_initial_invalid(self):
212214
213215 def test_fix_up_media_upload_no_initial_valid_minimal (self ):
214216 valid_method_desc = {'mediaUpload' : {'accept' : []}}
215- final_parameters = {'media_body' : MEDIA_BODY_PARAMETER_DEFAULT_VALUE }
217+ final_parameters = {'media_body' : MEDIA_BODY_PARAMETER_DEFAULT_VALUE ,
218+ 'media_mime_type' : MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE }
216219 self ._base_fix_up_method_description_test (
217220 valid_method_desc , {}, final_parameters , [], 0 ,
218221 'http://root/upload/fake/fake-path/' )
219222
220223 def test_fix_up_media_upload_no_initial_valid_full (self ):
221224 valid_method_desc = {'mediaUpload' : {'accept' : ['*/*' ], 'maxSize' : '10GB' }}
222- final_parameters = {'media_body' : MEDIA_BODY_PARAMETER_DEFAULT_VALUE }
225+ final_parameters = {'media_body' : MEDIA_BODY_PARAMETER_DEFAULT_VALUE ,
226+ 'media_mime_type' : MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE }
223227 ten_gb = 10 * 2 ** 30
224228 self ._base_fix_up_method_description_test (
225229 valid_method_desc , {}, final_parameters , ['*/*' ],
@@ -236,7 +240,8 @@ def test_fix_up_media_upload_with_initial_valid_minimal(self):
236240 valid_method_desc = {'mediaUpload' : {'accept' : []}}
237241 initial_parameters = {'body' : {}}
238242 final_parameters = {'body' : {'required' : False },
239- 'media_body' : MEDIA_BODY_PARAMETER_DEFAULT_VALUE }
243+ 'media_body' : MEDIA_BODY_PARAMETER_DEFAULT_VALUE ,
244+ 'media_mime_type' : MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE }
240245 self ._base_fix_up_method_description_test (
241246 valid_method_desc , initial_parameters , final_parameters , [], 0 ,
242247 'http://root/upload/fake/fake-path/' )
@@ -245,7 +250,8 @@ def test_fix_up_media_upload_with_initial_valid_full(self):
245250 valid_method_desc = {'mediaUpload' : {'accept' : ['*/*' ], 'maxSize' : '10GB' }}
246251 initial_parameters = {'body' : {}}
247252 final_parameters = {'body' : {'required' : False },
248- 'media_body' : MEDIA_BODY_PARAMETER_DEFAULT_VALUE }
253+ 'media_body' : MEDIA_BODY_PARAMETER_DEFAULT_VALUE ,
254+ 'media_mime_type' : MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE }
249255 ten_gb = 10 * 2 ** 30
250256 self ._base_fix_up_method_description_test (
251257 valid_method_desc , initial_parameters , final_parameters , ['*/*' ],
@@ -775,6 +781,24 @@ def test_simple_media_good_upload(self):
775781 'https://www.googleapis.com/upload/zoo/v1/animals?uploadType=media&alt=json' ,
776782 request .uri )
777783
784+ def test_simple_media_unknown_mimetype (self ):
785+ self .http = HttpMock (datafile ('zoo.json' ), {'status' : '200' })
786+ zoo = build ('zoo' , 'v1' , http = self .http )
787+
788+ try :
789+ zoo .animals ().insert (media_body = datafile ('small-png' ))
790+ self .fail ("should throw exception if mimetype is unknown." )
791+ except UnknownFileType :
792+ pass
793+
794+ request = zoo .animals ().insert (media_body = datafile ('small-png' ),
795+ media_mime_type = 'image/png' )
796+ self .assertEquals ('image/png' , request .headers ['content-type' ])
797+ self .assertEquals (b'PNG' , request .body [1 :4 ])
798+ assertUrisEqual (self ,
799+ 'https://www.googleapis.com/upload/zoo/v1/animals?uploadType=media&alt=json' ,
800+ request .uri )
801+
778802 def test_multipart_media_raise_correct_exceptions (self ):
779803 self .http = HttpMock (datafile ('zoo.json' ), {'status' : '200' })
780804 zoo = build ('zoo' , 'v1' , http = self .http )
0 commit comments