mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 10:45:47 +00:00
173 lines
4.2 KiB
JavaScript
173 lines
4.2 KiB
JavaScript
'use strict';
|
|
|
|
const test = require('tape');
|
|
const {promisify} = require('es6-promisify');
|
|
const pullout = require('pullout');
|
|
const request = require('request');
|
|
|
|
const configFn = require('../server/config');
|
|
const {connect} = require('./before');
|
|
|
|
const warp = (fn, ...a) => (...b) => fn(...b, ...a);
|
|
|
|
const _pullout = promisify(pullout);
|
|
|
|
const get = promisify((url, options, fn) => {
|
|
if (!fn) {
|
|
fn = options;
|
|
options = {};
|
|
}
|
|
|
|
fn(null, request(url, options));
|
|
});
|
|
|
|
test('cloudcmd: static', async (t) => {
|
|
const {port, done} = await connect();
|
|
const name = 'package.json';
|
|
|
|
get(`http://localhost:${port}/${name}`)
|
|
.then(warp(_pullout, 'string'))
|
|
.then(JSON.parse)
|
|
.then((json) => {
|
|
t.equal(json.name, 'cloudcmd', 'should download file');
|
|
t.end();
|
|
})
|
|
.catch(console.error)
|
|
.then(done);
|
|
});
|
|
|
|
test('cloudcmd: static: not found', async (t) => {
|
|
const name = Math.random();
|
|
|
|
const {port, done} = await connect({});
|
|
const res = await get(`http://localhost:${port}/${name}`);
|
|
|
|
res.on('response', (res) => {
|
|
t.equal(res.statusCode, 404, 'should return 404');
|
|
});
|
|
|
|
res.on('error', console.error);
|
|
res.on('end', async () => {
|
|
await done();
|
|
t.end();
|
|
});
|
|
});
|
|
|
|
test('cloudcmd: prefix: wrong', async (t) => {
|
|
const originalPrefix = configFn('prefix');
|
|
|
|
const {port, done} = await connect({
|
|
config: {
|
|
prefix: '/hello'
|
|
}
|
|
});
|
|
|
|
const name = Math.random();
|
|
const res = await get(`http://localhost:${port}/${name}`);
|
|
|
|
res.on('response', async ({statusCode}) => {
|
|
await done();
|
|
configFn('prefix', originalPrefix);
|
|
|
|
console.log(require('../server/config')('prefix'));
|
|
|
|
t.equal(statusCode, 404, 'should return 404');
|
|
t.end();
|
|
});
|
|
});
|
|
|
|
test('cloudcmd: /cloudcmd.js', async (t) => {
|
|
const name = 'cloudcmd.js';
|
|
|
|
const {port, done} = await connect();
|
|
const res = await get(`http://localhost:${port}/${name}`);
|
|
|
|
res.on('response', ({statusCode}) => {
|
|
t.equal(statusCode, 200, 'should return OK');
|
|
});
|
|
|
|
res.on('end', async () => {
|
|
await done();
|
|
t.end();
|
|
});
|
|
});
|
|
|
|
test('cloudcmd: /cloudcmd.js: auth: access denied', async (t) => {
|
|
const name = 'cloudcmd.js';
|
|
const config = {
|
|
auth: true
|
|
};
|
|
|
|
const {port, done} = await connect({config});
|
|
const res = await get(`http://localhost:${port}/${name}`);
|
|
|
|
res.on('response', ({statusCode}) => {
|
|
t.equal(statusCode, 401, 'should return auth');
|
|
});
|
|
|
|
res.on('end', async () => {
|
|
await done();
|
|
t.end();
|
|
});
|
|
});
|
|
|
|
test('cloudcmd: /cloudcmd.js: auth: no password', async (t) => {
|
|
const name = 'cloudcmd.js';
|
|
|
|
const config = {
|
|
auth: true
|
|
};
|
|
|
|
const auth = {
|
|
username: configFn('username'),
|
|
};
|
|
|
|
const {port, done} = await connect({config});
|
|
const res = await get(`http://localhost:${port}/${name}`, {auth});
|
|
|
|
res.on('response', ({statusCode}) => {
|
|
t.equal(statusCode, 401, 'should return auth');
|
|
});
|
|
res.on('end', async () => {
|
|
await done();
|
|
t.end();
|
|
});
|
|
});
|
|
|
|
test('cloudcmd: /cloudcmd.js: auth: access granted', async (t) => {
|
|
const name = 'cloudcmd.js';
|
|
const config = {
|
|
auth: true
|
|
};
|
|
const auth = {
|
|
username: configFn('username'),
|
|
password: configFn('password'),
|
|
};
|
|
|
|
const {port, done} = await connect({config});
|
|
const res = await get(`http://localhost:${port}/${name}`, {auth});
|
|
|
|
res.on('response', ({statusCode}) => {
|
|
t.equal(statusCode, 401, 'should return auth');
|
|
});
|
|
|
|
res.on('end', async () => {
|
|
await done();
|
|
t.end();
|
|
});
|
|
});
|
|
|
|
test('cloudcmd: /logout', async (t) => {
|
|
const name = 'logout';
|
|
const {port, done} = await connect();
|
|
const res = await get(`http://localhost:${port}/${name}`);
|
|
|
|
res.on('response', ({statusCode}) => {
|
|
t.equal(statusCode, 401, 'should return 401');
|
|
});
|
|
res.on('end', async () => {
|
|
await done();
|
|
t.end();
|
|
});
|
|
});
|
|
|