cloudcmd/test/rest/move.mjs
2024-03-22 18:24:17 +02:00

87 lines
2 KiB
JavaScript

import wait from '@iocmd/wait';
import {EventEmitter} from 'node:events';
import {test, stub} from 'supertape';
import serveOnce from 'serve-once';
import cloudcmd from '../../server/cloudcmd.mjs';
test('cloudcmd: rest: move', async (t) => {
const move = new EventEmitter();
const moveFiles = stub().returns(move);
const {createConfigManager} = cloudcmd;
cloudcmd.depStore('moveFiles', moveFiles);
const configManager = createConfigManager();
configManager('auth', false);
configManager('root', '/');
const {request} = serveOnce(cloudcmd, {
configManager,
});
const files = {
from: '/fixture/',
to: '/fixture/tmp/',
names: ['move.txt'],
};
const emit = move.emit.bind(move);
const [{body}] = await Promise.all([
request.put(`/api/v1/move`, {
body: files,
}),
wait(1000, emit, 'end'),
]);
t.equal(body, 'move: ok("["move.txt"]")', 'should move');
t.end();
});
test('cloudcmd: rest: move: no from', async (t) => {
const {createConfigManager} = cloudcmd;
const configManager = createConfigManager();
configManager('auth', false);
configManager('root', '/');
const {request} = serveOnce(cloudcmd, {
configManager,
});
const files = {};
const {body} = await request.put(`/api/v1/move`, {
body: files,
});
const expected = '"from" should be filled';
t.equal(body, expected);
t.end();
});
test('cloudcmd: rest: move: no to', async (t) => {
const {createConfigManager} = cloudcmd;
const configManager = createConfigManager();
configManager('auth', false);
configManager('root', '/');
const {request} = serveOnce(cloudcmd, {
configManager,
});
const files = {
from: '/',
};
const {body} = await request.put(`/api/v1/move`, {
body: files,
});
const expected = '"to" should be filled';
t.equal(body, expected);
t.end();
});