MCPcopy
hub / github.com/rclone/rclone / TestServerSideCopyMove

Method TestServerSideCopyMove

backend/onedrive/onedrive_internal_test.go:278–319  ·  view source on GitHub ↗

TestServerSideCopyMove tests server-side Copy and Move

(t *testing.T, r *fstest.Run)

Source from the content-addressed store, hash-verified

276
277// TestServerSideCopyMove tests server-side Copy and Move
278func (f *Fs) TestServerSideCopyMove(t *testing.T, r *fstest.Run) {
279 // setup
280 ctx, ci := fs.AddConfig(ctx)
281 ci.Metadata = true
282 _ = f.opt.MetadataPermissions.Set("read,write")
283 file1 := r.WriteFile(randomFilename(), content, t2)
284
285 // add a permission with "read" role
286 permissions := defaultPermissions(f.driveType)
287 permissions[0].Roles[0] = api.ReadRole
288 expectedMeta, actualMeta := f.putWithMeta(ctx, t, &file1, permissions)
289 f.compareMeta(t, expectedMeta, actualMeta, false)
290
291 comparePerms := func(expectedMeta, actualMeta fs.Metadata) (newExpectedMeta, newActualMeta fs.Metadata) {
292 expectedP, actualP := unmarshalPerms(t, expectedMeta["permissions"]), unmarshalPerms(t, actualMeta["permissions"])
293 normalize(expectedP)
294 normalize(actualP)
295 expectedMeta.Set("permissions", marshalPerms(t, expectedP))
296 actualMeta.Set("permissions", marshalPerms(t, actualP))
297 assert.JSONEq(t, expectedMeta["permissions"], actualMeta["permissions"])
298 return expectedMeta, actualMeta
299 }
300
301 // Copy
302 obj1, err := f.NewObject(ctx, file1.Path)
303 assert.NoError(t, err)
304 originalMeta := actualMeta
305 obj2, err := f.Copy(ctx, obj1, randomFilename())
306 assert.NoError(t, err)
307 actualMeta, err = fs.GetMetadata(ctx, obj2)
308 assert.NoError(t, err)
309 expectedMeta, actualMeta = comparePerms(originalMeta, actualMeta)
310 f.compareMeta(t, expectedMeta, actualMeta, true)
311
312 // Move
313 obj3, err := f.Move(ctx, obj1, randomFilename())
314 assert.NoError(t, err)
315 actualMeta, err = fs.GetMetadata(ctx, obj3)
316 assert.NoError(t, err)
317 expectedMeta, actualMeta = comparePerms(originalMeta, actualMeta)
318 f.compareMeta(t, expectedMeta, actualMeta, true)
319}
320
321// TestMetadataMapper tests adding permissions with the --metadata-mapper
322func (f *Fs) TestMetadataMapper(t *testing.T, r *fstest.Run) {

Callers 1

InternalTestMethod · 0.80

Calls 14

putWithMetaMethod · 0.95
compareMetaMethod · 0.95
NewObjectMethod · 0.95
CopyMethod · 0.95
MoveMethod · 0.95
AddConfigFunction · 0.92
GetMetadataFunction · 0.92
randomFilenameFunction · 0.85
defaultPermissionsFunction · 0.85
unmarshalPermsFunction · 0.85
normalizeFunction · 0.85
marshalPermsFunction · 0.85

Tested by

no test coverage detected