cloudcmd/test/rest/mv.js
2018-11-09 14:53:20 +02:00

105 lines
2.2 KiB
JavaScript

'use strict';
const fs = require('fs');
const tryToTape = require('try-to-tape');
const test = tryToTape(require('tape'));
const {Volume} = require('memfs');
const {ufs} = require('unionfs');
const mockRequire = require('mock-require');
const {reRequire} = mockRequire;
const serveOnce = require('serve-once');
const root = '../../';
const dir = root + 'server/';
const cloudcmdPath = root;
const restPath = dir + 'rest';
test('cloudcmd: rest: mv', async (t) => {
const volume = {
'/fixture/mv.txt': 'hello',
'/fixture/tmp/a.txt': 'a',
};
const vol = Volume.fromJSON(volume, '/');
const unionFS = ufs
.use(vol)
.use(fs);
mockRequire('fs', unionFS);
reRequire('@cloudcmd/rename-files');
reRequire('@cloudcmd/move-files');
reRequire(restPath);
const cloudcmd = reRequire(cloudcmdPath);
const {request} = serveOnce(cloudcmd, {
config: {
root: '/'
}
});
const files = {
from: '/fixture/',
to: '/fixture/tmp/',
names: [
'mv.txt'
]
};
const {body} = await request.put(`/api/v1/mv`, {
body: files
});
mockRequire.stop('fs');
t.equal(body, 'move: ok("["mv.txt"]")', 'should move');
t.end();
});
test('cloudcmd: rest: mv: rename', async (t) => {
const volume = {
'/fixture/mv.txt': 'hello',
'/fixture/tmp/a.txt': 'a',
};
const vol = Volume.fromJSON(volume, '/');
const unionFS = ufs
.use(vol)
.use(fs);
mockRequire('fs', unionFS);
reRequire('@cloudcmd/rename-files');
reRequire('@cloudcmd/move-files');
reRequire(restPath);
const cloudcmd = reRequire(cloudcmdPath);
const {request} = serveOnce(cloudcmd, {
config: {
root: '/'
}
});
const files = {
from: '/fixture/mv.txt',
to: '/fixture/tmp/mv.txt',
};
const {body} = await request.put(`/api/v1/mv`, {
body: files
});
mockRequire.stop('fs');
const expected = 'move: ok("{"from":"/fixture/mv.txt","to":"/fixture/tmp/mv.txt"}")';
t.equal(body, expected, 'should move');
t.end();
});