test(static) before -> connect

This commit is contained in:
coderaiser 2018-08-20 13:16:39 +03:00
parent 46c6ca51cf
commit 3a740330ec
5 changed files with 136 additions and 155 deletions

View file

@ -6,7 +6,7 @@ const pullout = require('pullout');
const request = require('request');
const configFn = require('../server/config');
const before = require('./before');
const {connect} = require('./before');
const warp = (fn, ...a) => (...b) => fn(...b, ...a);
@ -21,105 +21,99 @@ const get = promisify((url, options, fn) => {
fn(null, request(url, options));
});
test('cloudcmd: static', (t) => {
before({}, (port, after) => {
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();
after();
})
.catch((error) => {
console.log(error);
});
});
});
test('cloudcmd: static: not found', (t) => {
before({}, (port, after) => {
const name = Math.random();
get(`http://localhost:${port}/${name}`)
.then((res) => {
res.on('response', (res) => {
t.equal(res.statusCode, 404, 'should return 404');
});
res.on('end', () => {
t.end();
after();
});
})
.catch((error) => {
console.log(error);
});
});
});
test('cloudcmd: prefix: wrong', (t) => {
const prefix = '/hello';
const config = {prefix};
test('cloudcmd: static', async (t) => {
const {port, done} = await connect();
const name = 'package.json';
before({config}, (port, after) => {
const name = Math.random();
get(`http://localhost:${port}/${name}`)
.then((res) => {
res.on('response', ({statusCode}) => {
t.equal(statusCode, 404, 'should return 404');
});
res.on('end', () => {
t.end();
after();
});
})
.catch(console.error);
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: /cloudcmd.js', (t) => {
before({}, (port, after) => {
const name = 'cloudcmd.js';
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);
get(`http://localhost:${port}/${name}`)
.then((res) => {
res.on('response', ({statusCode}) => {
t.equal(statusCode, 200, 'should return OK');
});
res.on('end', () => {
t.end();
after();
});
})
.catch(console.error);
console.log(require('../server/config')('prefix'));
t.equal(statusCode, 404, 'should return 404');
t.end();
});
});
test('cloudcmd: /cloudcmd.js: auth: access denied', (t) => {
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
};
before({config}, (port, after) => {
const name = 'cloudcmd.js';
get(`http://localhost:${port}/${name}`)
.then((res) => {
res.on('response', ({statusCode}) => {
t.equal(statusCode, 401, 'should return auth');
});
res.on('end', () => {
t.end();
after();
});
})
.catch(console.error);
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', (t) => {
test('cloudcmd: /cloudcmd.js: auth: no password', async (t) => {
const name = 'cloudcmd.js';
const config = {
auth: true
};
@ -128,65 +122,52 @@ test('cloudcmd: /cloudcmd.js: auth: no password', (t) => {
username: configFn('username'),
};
before({config}, (port, after) => {
const name = 'cloudcmd.js';
get(`http://localhost:${port}/${name}`, {auth})
.then((res) => {
res.on('response', ({statusCode}) => {
t.equal(statusCode, 401, 'should return auth');
});
res.on('end', () => {
t.end();
after();
});
})
.catch(console.error);
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', (t) => {
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'),
};
before({config}, (port, after) => {
const name = 'cloudcmd.js';
get(`http://localhost:${port}/${name}`, {auth})
.then((res) => {
res.on('response', ({statusCode}) => {
t.equal(statusCode, 401, 'should return auth');
});
res.on('end', () => {
t.end();
after();
});
})
.catch(console.error);
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', (t) => {
before({}, (port, after) => {
const name = 'logout';
get(`http://localhost:${port}/${name}`)
.then((res) => {
res.on('response', ({statusCode}) => {
t.equal(statusCode, 401, 'should return 401');
});
res.on('end', () => {
t.end();
after();
});
})
.catch(console.error);
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();
});
});