'use strict'; const fs = require('fs'); const test = require('tape'); const {promisify} = require('es6-promisify'); const pullout = require('pullout'); const request = require('request'); const before = require('./before'); const warp = (fn, ...a) => (...b) => fn(...b, ...a); const _pullout = promisify(pullout); const get = promisify((url, fn) => { fn(null, request(url)); }); test('cloudcmd: plugins', (t) => { const plugins = []; before({plugins}, (port, after) => { get(`http://localhost:${port}/plugins.js`) .then(warp(_pullout, 'string')) .then((content) => { t.equal(content, '', 'should content be empty'); t.end(); after(); }) .catch((error) => { console.log(error); }); }); }); test('cloudcmd: plugins', (t) => { const plugins = [ __filename ]; before({plugins}, (port, after) => { get(`http://localhost:${port}/plugins.js`) .then(warp(_pullout, 'string')) .then((content) => { const file = fs.readFileSync(__filename, 'utf8'); t.equal(content, file, 'should return file plugin content'); t.end(); after(); }) .catch((error) => { console.log(error); }); }); }); test('cloudcmd: plugins: load error', (t) => { const noEntry = __filename + Math.random(); const plugins = [ __filename, noEntry ]; const msg = `ENOENT: no such file or directory, open '${noEntry}'`; before({plugins}, (port, after) => { get(`http://localhost:${port}/plugins.js`) .then(warp(_pullout, 'string')) .then((content) => { const file = fs.readFileSync(__filename, 'utf8') + msg; t.equal(content, file, 'should return file plugin content'); t.end(); after(); }) .catch((error) => { console.log(error); }); }); });