e8f79d43f9
closes #517 add index test for Application add app.toJSON test add test for app.inspect() add tests for app.use() add tests for app.onerror() add tests for app.respond() add tests for app.context() add tests for app.request() add tests for app.response refactor for non-existence of test/app...js no need for *.js use helpers/ dir for non-tests
211 lines
4.5 KiB
JavaScript
211 lines
4.5 KiB
JavaScript
|
|
'use strict';
|
|
|
|
const context = require('../helpers/context');
|
|
const assert = require('assert');
|
|
|
|
describe('ctx.throw(msg)', function(){
|
|
it('should set .status to 500', function(done){
|
|
const ctx = context();
|
|
|
|
try {
|
|
ctx.throw('boom');
|
|
} catch (err) {
|
|
assert(500 == err.status);
|
|
assert(!err.expose);
|
|
done();
|
|
}
|
|
})
|
|
})
|
|
|
|
describe('ctx.throw(err)', function(){
|
|
it('should set .status to 500', function(done){
|
|
const ctx = context();
|
|
const err = new Error('test');
|
|
|
|
try {
|
|
ctx.throw(err);
|
|
} catch (err) {
|
|
assert(500 == err.status);
|
|
assert('test' == err.message);
|
|
assert(!err.expose);
|
|
done();
|
|
}
|
|
})
|
|
})
|
|
|
|
describe('ctx.throw(err, status)', function(){
|
|
it('should throw the error and set .status', function(done){
|
|
const ctx = context();
|
|
const error = new Error('test');
|
|
|
|
try {
|
|
ctx.throw(error, 422);
|
|
} catch (err) {
|
|
assert(422 == err.status);
|
|
assert('test' == err.message);
|
|
assert(true === err.expose);
|
|
done();
|
|
}
|
|
})
|
|
})
|
|
|
|
describe('ctx.throw(status, err)', function(){
|
|
it('should throw the error and set .status', function(done){
|
|
const ctx = context();
|
|
const error = new Error('test');
|
|
|
|
try {
|
|
ctx.throw(422, error);
|
|
} catch (err) {
|
|
assert(422 == err.status);
|
|
assert('test' == err.message);
|
|
assert(true === err.expose);
|
|
done();
|
|
}
|
|
})
|
|
})
|
|
|
|
describe('ctx.throw(msg, status)', function(){
|
|
it('should throw an error', function(done){
|
|
const ctx = context();
|
|
|
|
try {
|
|
ctx.throw('name required', 400);
|
|
} catch (err) {
|
|
assert('name required' == err.message);
|
|
assert(400 == err.status);
|
|
assert(true === err.expose);
|
|
done();
|
|
}
|
|
})
|
|
})
|
|
|
|
describe('ctx.throw(status, msg)', function(){
|
|
it('should throw an error', function(done){
|
|
const ctx = context();
|
|
|
|
try {
|
|
ctx.throw(400, 'name required');
|
|
} catch (err) {
|
|
assert('name required' == err.message);
|
|
assert(400 == err.status);
|
|
assert(true === err.expose);
|
|
done();
|
|
}
|
|
})
|
|
})
|
|
|
|
describe('ctx.throw(status)', function(){
|
|
it('should throw an error', function(done){
|
|
const ctx = context();
|
|
|
|
try {
|
|
ctx.throw(400);
|
|
} catch (err) {
|
|
assert('Bad Request' == err.message);
|
|
assert(400 == err.status);
|
|
assert(true === err.expose);
|
|
done();
|
|
}
|
|
})
|
|
|
|
describe('when not valid status', function(){
|
|
it('should not expose', function(done){
|
|
const ctx = context();
|
|
|
|
try {
|
|
const err = new Error('some error');
|
|
err.status = -1;
|
|
ctx.throw(err);
|
|
} catch(err) {
|
|
assert('some error' == err.message);
|
|
assert(!err.expose);
|
|
done();
|
|
}
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('ctx.throw(status, msg, props)', function(){
|
|
it('should mixin props', function(done){
|
|
const ctx = context();
|
|
|
|
try {
|
|
ctx.throw(400, 'msg', { prop: true });
|
|
} catch (err) {
|
|
assert('msg' == err.message);
|
|
assert(400 == err.status);
|
|
assert(true === err.expose);
|
|
assert(true === err.prop);
|
|
done();
|
|
}
|
|
})
|
|
|
|
describe('when props include status', function(){
|
|
it('should be ignored', function(done){
|
|
const ctx = context();
|
|
|
|
try {
|
|
ctx.throw(400, 'msg', {
|
|
prop: true,
|
|
status: -1
|
|
});
|
|
} catch (err) {
|
|
assert('msg' == err.message);
|
|
assert(400 == err.status);
|
|
assert(true === err.expose);
|
|
assert(true === err.prop);
|
|
done();
|
|
}
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('ctx.throw(msg, props)', function(){
|
|
it('should mixin props', function(done){
|
|
const ctx = context();
|
|
|
|
try {
|
|
ctx.throw('msg', { prop: true });
|
|
} catch (err) {
|
|
assert('msg' == err.message);
|
|
assert(500 == err.status);
|
|
assert(false === err.expose);
|
|
assert(true === err.prop);
|
|
done();
|
|
}
|
|
})
|
|
})
|
|
|
|
describe('ctx.throw(status, props)', function(){
|
|
it('should mixin props', function(done){
|
|
const ctx = context();
|
|
|
|
try {
|
|
ctx.throw(400, { prop: true });
|
|
} catch (err) {
|
|
assert('Bad Request' == err.message);
|
|
assert(400 == err.status);
|
|
assert(true === err.expose);
|
|
assert(true === err.prop);
|
|
done();
|
|
}
|
|
})
|
|
})
|
|
|
|
describe('ctx.throw(err, props)', function(){
|
|
it('should mixin props', function(done){
|
|
const ctx = context();
|
|
|
|
try {
|
|
ctx.throw(new Error('test'), { prop: true });
|
|
} catch (err) {
|
|
assert('test' == err.message);
|
|
assert(500 == err.status);
|
|
assert(false === err.expose);
|
|
assert(true === err.prop);
|
|
done();
|
|
}
|
|
})
|
|
})
|