56 lines
1.8 KiB
JavaScript
56 lines
1.8 KiB
JavaScript
// Copyright IBM Corp. 2017,2019. All Rights Reserved.
|
|
// Node module: loopback-connector-mysql
|
|
// This file is licensed under the MIT License.
|
|
// License text available at https://opensource.org/licenses/MIT
|
|
|
|
'use strict';
|
|
|
|
const setHttpCode = require('../lib/set-http-code');
|
|
const should = require('./init.js');
|
|
|
|
describe('setHttpCode', function() {
|
|
describe('should set statusCode', function() {
|
|
testErrorCode('404 on db not found', 'ER_DB_DROP_EXISTS: Nope', 404);
|
|
testErrorCode('404 on table not found', 'ER_BAD_TABLE_ERROR: Nope', 404);
|
|
|
|
testErrorCode('422 on duplicates', 'ER_DUP_ENTRY: Duplicate entry', 422);
|
|
testErrorCode('422 on cannot create db', 'ER_CANT_CREATE_DB: Oops', 422);
|
|
testErrorCode('422 on db already exists', 'ER_DB_CREATE_EXISTS: Oops', 422);
|
|
testErrorCode('422 on db not found', 'ER_TABLE_EXISTS_ERROR: Nope', 422);
|
|
|
|
testErrorCode('500 on unknown errors', 'FATAL: Sadness happened', 500);
|
|
|
|
function testErrorCode(name, msg, expected) {
|
|
it(name, function() {
|
|
let err = new Error(msg);
|
|
err = setHttpCode(err);
|
|
should.exist(err.statusCode);
|
|
should.equal(err.statusCode, expected);
|
|
});
|
|
}
|
|
});
|
|
|
|
it('should set statusCode from code', function() {
|
|
let err = {
|
|
message: 'Duplicate entry \'value\' for key \'key_name\'',
|
|
code: 'ER_DUP_ENTRY',
|
|
};
|
|
err = setHttpCode(err);
|
|
should.exist(err.statusCode);
|
|
should(err instanceof Error);
|
|
should.equal(err.statusCode, 422);
|
|
});
|
|
|
|
it('should do nothing without error', function() {
|
|
should.doesNotThrow(setHttpCode);
|
|
});
|
|
|
|
it('should convert strings to errors', function() {
|
|
let err = 'REALLY_BAD: Something truly awful occurred.';
|
|
err = setHttpCode(err);
|
|
should.exist(err.statusCode);
|
|
should(err instanceof Error);
|
|
should.equal(err.statusCode, 500);
|
|
});
|
|
});
|