50
50
from googleapiclient .discovery import DISCOVERY_URI
51
51
from googleapiclient .discovery import key2param
52
52
from googleapiclient .discovery import MEDIA_BODY_PARAMETER_DEFAULT_VALUE
53
+ from googleapiclient .discovery import MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE
53
54
from googleapiclient .discovery import ResourceMethodParameters
54
55
from googleapiclient .discovery import STACK_QUERY_PARAMETERS
55
56
from googleapiclient .discovery import STACK_QUERY_PARAMETER_DEFAULT_VALUE
61
62
from googleapiclient .errors import ResumableUploadError
62
63
from googleapiclient .errors import UnacceptableMimeTypeError
63
64
from googleapiclient .errors import UnknownApiNameOrVersion
65
+ from googleapiclient .errors import UnknownFileType
64
66
from googleapiclient .http import BatchHttpRequest
65
67
from googleapiclient .http import HttpMock
66
68
from googleapiclient .http import HttpMockSequence
@@ -212,14 +214,16 @@ def test_fix_up_media_upload_no_initial_invalid(self):
212
214
213
215
def test_fix_up_media_upload_no_initial_valid_minimal (self ):
214
216
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 }
216
219
self ._base_fix_up_method_description_test (
217
220
valid_method_desc , {}, final_parameters , [], 0 ,
218
221
'http://root/upload/fake/fake-path/' )
219
222
220
223
def test_fix_up_media_upload_no_initial_valid_full (self ):
221
224
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 }
223
227
ten_gb = 10 * 2 ** 30
224
228
self ._base_fix_up_method_description_test (
225
229
valid_method_desc , {}, final_parameters , ['*/*' ],
@@ -236,7 +240,8 @@ def test_fix_up_media_upload_with_initial_valid_minimal(self):
236
240
valid_method_desc = {'mediaUpload' : {'accept' : []}}
237
241
initial_parameters = {'body' : {}}
238
242
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 }
240
245
self ._base_fix_up_method_description_test (
241
246
valid_method_desc , initial_parameters , final_parameters , [], 0 ,
242
247
'http://root/upload/fake/fake-path/' )
@@ -245,7 +250,8 @@ def test_fix_up_media_upload_with_initial_valid_full(self):
245
250
valid_method_desc = {'mediaUpload' : {'accept' : ['*/*' ], 'maxSize' : '10GB' }}
246
251
initial_parameters = {'body' : {}}
247
252
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 }
249
255
ten_gb = 10 * 2 ** 30
250
256
self ._base_fix_up_method_description_test (
251
257
valid_method_desc , initial_parameters , final_parameters , ['*/*' ],
@@ -775,6 +781,24 @@ def test_simple_media_good_upload(self):
775
781
'https://www.googleapis.com/upload/zoo/v1/animals?uploadType=media&alt=json' ,
776
782
request .uri )
777
783
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
+
778
802
def test_multipart_media_raise_correct_exceptions (self ):
779
803
self .http = HttpMock (datafile ('zoo.json' ), {'status' : '200' })
780
804
zoo = build ('zoo' , 'v1' , http = self .http )
0 commit comments