@@ -233,6 +233,42 @@ func TestMergeWithRequestMetadata(t *testing.T) {
233233 assert .NotNil (t , mergedMeta )
234234 assert .False (t , mergedMeta .EncodeBase64 )
235235 })
236+
237+ t .Run ("Has merged contentType metadata" , func (t * testing.T ) {
238+ m := bindings.Metadata {}
239+ m .Properties = map [string ]string {
240+ "bucket" : "my_bucket" ,
241+ "projectID" : "my_project_id" ,
242+ "contentType" : "text/plain" ,
243+ }
244+ gs := GCPStorage {logger : logger .NewLogger ("test" )}
245+ meta , err := gs .parseMetadata (m )
246+ require .NoError (t , err )
247+ assert .Equal (t , "text/plain" , meta .ContentType )
248+
249+ // Empty request doesn't override
250+ request := bindings.InvokeRequest {}
251+ request .Metadata = map [string ]string {}
252+ mergedMeta , err := meta .mergeWithRequestMetadata (& request )
253+ require .NoError (t , err )
254+ assert .Equal (t , "text/plain" , mergedMeta .ContentType )
255+
256+ // Request overrides component
257+ request .Metadata = map [string ]string {
258+ "contentType" : "text/csv" ,
259+ }
260+ mergedMeta , err = meta .mergeWithRequestMetadata (& request )
261+ require .NoError (t , err )
262+ assert .Equal (t , "text/csv" , mergedMeta .ContentType )
263+
264+ // Empty string doesn't override
265+ request .Metadata = map [string ]string {
266+ "contentType" : "" ,
267+ }
268+ mergedMeta , err = meta .mergeWithRequestMetadata (& request )
269+ require .NoError (t , err )
270+ assert .Equal (t , "text/plain" , mergedMeta .ContentType )
271+ })
236272}
237273
238274func TestInit (t * testing.T ) {
0 commit comments