Skip to content

Commit

Permalink
feat(httpResponse): pass httpResponse from codemaster
Browse files Browse the repository at this point in the history
  • Loading branch information
afontainec committed Aug 15, 2020
1 parent fd1920e commit c6a1eb6
Show file tree
Hide file tree
Showing 4 changed files with 129 additions and 0 deletions.
2 changes: 2 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const Access = require('./models/access');
const ErrorHandler = require('./models/ErrorHandler');
const ChinchayError = require('./models/chinchayError');
const ForbiddenError = require('./models/ForbiddenError');
const httpResponse = require('./models/httpResponse');

let access;
let thewall;
Expand Down Expand Up @@ -41,4 +42,5 @@ module.exports = {
ForbiddenError,
ChinchayError,
Middleware,
httpResponse,
};
25 changes: 25 additions & 0 deletions models/httpResponse.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

exports.success = (text, keys, values) => {
const json = {
message: text,
};

if (Object.prototype.toString.call(keys) === '[object Array]') {
for (let i = 0; i < keys.length; i++) {
json[keys[i]] = values[i];
}
} else {
json[keys] = values;
}
return json;
};

exports.error = function buildErrorJSON(error, fullMessage, code) {
if (code === 500) error = 'Internal Server Error';
const json = { error };
const environment = process.env.NODE_ENV || 'development';
if (environment !== 'production') {
json.fullError = fullMessage;
}
return json;
};
55 changes: 55 additions & 0 deletions test/models/httpResponse/error.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
// During the test the env variable is set to test
process.env.NODE_ENV = 'test';

// Require the dev-dependencies
const chai = require('chai');
const { httpResponse } = require('../../../');

const { assert } = chai;


// Our parent block
describe('Http Response: Error', () => { // eslint-disable-line


it('code is 500, not include err', (done) => { // eslint-disable-line
const result = httpResponse.error('test', 'full msg', 500);
const expected = {
error: 'Internal Server Error',
fullError: 'full msg',
};
assert.deepEqual(result, expected);
done();
});

it('code is not 500, include err', (done) => { // eslint-disable-line
const result = httpResponse.error('test', 'full msg');
const expected = {
error: 'test',
fullError: 'full msg',
};
assert.deepEqual(result, expected);
done();
});

it('in production do not include full error', (done) => { // eslint-disable-line
process.env.NODE_ENV = 'production';
const result = httpResponse.error('test', 'full msg');
const expected = {
error: 'test',
};
assert.deepEqual(result, expected);
done();
});

it('NODE_ENV not specified', (done) => { // eslint-disable-line
delete process.env.NODE_ENV;
const result = httpResponse.error('test', 'full msg');
const expected = {
error: 'test',
fullError: 'full msg',
};
assert.deepEqual(result, expected);
done();
});
});
47 changes: 47 additions & 0 deletions test/models/httpResponse/success.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// During the test the env variable is set to test
process.env.NODE_ENV = 'test';

// Require the dev-dependencies
const chai = require('chai');
const { httpResponse } = require('../../..');

const { assert } = chai;


// Our parent block
describe('Http Response: Success', () => { // eslint-disable-line


it('keys is null', (done) => { // eslint-disable-line
const result = httpResponse.success('test', null, '500');
const expected = {
message: 'test',
null: '500',
};
assert.deepEqual(result, expected);
done();
});

it('keys is array', (done) => { // eslint-disable-line
const result = httpResponse.success('test', ['k1', 'k2', 'k3'], ['v1', 'v2', 'v3']);
const expected = {
message: 'test',
k1: 'v1',
k2: 'v2',
k3: 'v3',
};
assert.deepEqual(result, expected);
done();
});

it('keys is not array', (done) => { // eslint-disable-line
process.env.NODE_ENV = 'production';
const result = httpResponse.success('test', 'k', 'v');
const expected = {
message: 'test',
k: 'v',
};
assert.deepEqual(result, expected);
done();
});
});

0 comments on commit c6a1eb6

Please sign in to comment.