diff --git a/src/commands/folders/move.js b/src/commands/folders/move.js index 4b82f617..5202e9a6 100644 --- a/src/commands/folders/move.js +++ b/src/commands/folders/move.js @@ -16,6 +16,12 @@ class FoldersMoveCommand extends BoxCommand { updates.etag = flags.etag; } + if (flags['owned-by']) { + updates.owned_by = { + id: flags['owned-by'], + }; + } + let movedFolder = await this.client.folders.update(args.id, updates); await this.output(movedFolder); } @@ -28,6 +34,7 @@ FoldersMoveCommand._endpoint = 'put_folders_id move'; FoldersMoveCommand.flags = { ...BoxCommand.flags, etag: Flags.string({ description: 'Only move if etag value matches' }), + 'owned-by': Flags.string({ description: 'ID of the user to own the folder' }), }; FoldersMoveCommand.args = { diff --git a/test/commands/folders.test.js b/test/commands/folders.test.js index d104b622..1661539e 100644 --- a/test/commands/folders.test.js +++ b/test/commands/folders.test.js @@ -136,6 +136,7 @@ describe('Folders', () => { describe('folders:move', () => { let folderId = '0', parentFolderId = '987654321', + ownedById = '1234567890', moveFixture = getFixture('folders/put_folders_id'), yamlOutput = getFixture('output/folders_move_yaml.txt'); @@ -143,6 +144,14 @@ describe('Folders', () => { parent: { id: parentFolderId } + }, + moveBodyWithOwnedBy = { + parent: { + id: parentFolderId + }, + owned_by: { + id: ownedById + } }; test @@ -205,6 +214,24 @@ describe('Folders', () => { let msg = 'Unexpected API Response [412 Precondition Failed | 1wne91fxf8871ide] precondition_failed - The resource has been modified. Please retrieve the resource again and retry'; assert.equal(ctx.stderr, `${msg}${os.EOL}`); }); + + test + .nock(TEST_API_ROOT, api => api + .put(`/2.0/folders/${folderId}`, moveBodyWithOwnedBy) + .reply(200, moveFixture) + ) + .stdout() + .command([ + 'folders:move', + folderId, + parentFolderId, + `--owned-by=${ownedById}`, + '--json', + '--token=test' + ]) + .it('should move a folder to a different folder and set the owner', ctx => { + assert.equal(ctx.stdout, moveFixture); + }); }); describe('folders:delete', () => {