strapi/test/context/onerror.js
2015-10-16 15:47:17 +02:00

118 lines
2.7 KiB
JavaScript
Executable File

'use strict';
const request = require('supertest');
const Koa = require('../..').server;
describe('ctx.onerror(err)', function () {
it('should respond', function (done) {
const app = new Koa();
app.use(function * () {
this.body = 'something else';
this.throw(418, 'boom');
});
const server = app.listen();
request(server)
.get('/')
.expect(418)
.expect('Content-Type', 'text/plain; charset=utf-8')
.expect('Content-Length', '4')
.end(done);
});
it('should unset all headers', function (done) {
const app = new Koa();
app.use(function * () {
this.set('Vary', 'Accept-Encoding');
this.set('X-CSRF-Token', 'asdf');
this.body = 'response';
this.throw(418, 'boom');
});
const server = app.listen();
request(server)
.get('/')
.expect(418)
.expect('Content-Type', 'text/plain; charset=utf-8')
.expect('Content-Length', '4')
.end(function (err, res) {
if (err) {
return done(err);
}
res.headers.should.not.have.property('vary');
res.headers.should.not.have.property('x-csrf-token');
done();
});
});
describe('when invalid err.status', function () {
describe('not number', function () {
it('should respond 500', function (done) {
const app = new Koa();
app.use(function * () {
this.body = 'something else';
const err = new Error('some error');
err.status = 'notnumber';
throw err;
});
const server = app.listen();
request(server)
.get('/')
.expect(500)
.expect('Content-Type', 'text/plain; charset=utf-8')
.expect('Internal Server Error', done);
});
});
describe('not http status code', function () {
it('should respond 500', function (done) {
const app = new Koa();
app.use(function * () {
this.body = 'something else';
const err = new Error('some error');
err.status = 9999;
throw err;
});
const server = app.listen();
request(server)
.get('/')
.expect(500)
.expect('Content-Type', 'text/plain; charset=utf-8')
.expect('Internal Server Error', done);
});
});
});
describe('when non-error thrown', function () {
it('should response non-error thrown message', function (done) {
const app = new Koa();
app.use(function * () {
throw 'string error';
});
const server = app.listen();
request(server)
.get('/')
.expect(500)
.expect('Content-Type', 'text/plain; charset=utf-8')
.expect('Internal Server Error', done);
});
});
});