cloudcmd/test/server/modulas.js
2018-08-20 13:16:52 +03:00

85 lines
1.9 KiB
JavaScript

'use strict';
const path = require('path');
const test = require('tape');
const diff = require('sinon-called-with-diff');
const sinon = diff(require('sinon'));
const {promisify} = require('es6-promisify');
const pullout = require('pullout');
const request = require('request');
const dir = path.join(__dirname, '..', '..');
const modulesPath = path.join(dir, 'json', 'modules.json');
const localModules = require(modulesPath);
const modulas = require(`${dir}/server/modulas`);
const warp = (fn, ...a) => (...b) => fn(...b, ...a);
const _pullout = promisify(pullout);
const get = promisify((url, fn) => {
fn(null, request(url));
});
const getJSON = (url) => {
return get(url)
.then(warp(_pullout, 'string'))
.then(JSON.parse);
};
const {connect} = require('../before');
test('cloudcmd: modules', async (t) => {
const modules = {
data: {
FilePicker: {
key: 'hello'
}
}
};
const expected = {
...localModules,
...modules,
};
const {port, done} = await connect({modules});
const result = await getJSON(`http://localhost:${port}/json/modules.json`);
t.deepEqual(result, expected, 'should equal');
t.end();
await done();
});
test('cloudcmd: modules: wrong route', async (t) => {
const modules = {
hello: 'world'
};
const expected = {
...localModules,
...modules,
};
const {port, done} = await connect({modules});
const result = await getJSON(`http://localhost:${port}/package.json`);
t.notDeepEqual(result, expected, 'should not be equal');
t.end();
await done();
});
test('cloudcmd: modules: no', (t) => {
const fn = modulas();
const url = '/json/modules.json';
const send = sinon.stub();
fn({url}, {send});
t.ok(send.calledWith(localModules), 'should have been called with modules');
t.end();
});