Skip to content

Commit

Permalink
Merge pull request #48 from tomasmatulis0/master
Browse files Browse the repository at this point in the history
Fixed errors = null case and for 500 error, do not return error_descr…
  • Loading branch information
aurimas4 committed Aug 18, 2020
2 parents c3f4afd + 740cd74 commit 82d484a
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 2 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## 2.0.2
### Fixed
- `resolveByResponseErrors` handled `{ errors: null }` case
- `resolveHttpErrorMessage` now for `500` instead of `error_description` it returns a default translated message
### Added
- `resolveErrorResponseDescription` a function to resolve error description, for `500` returns null

## 2.0.1
### Fixed
- `resolveCorrelationId` additionally checks if error is network error and if yes it returns null
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@paysera/error-message-resolver",
"version": "2.0.1",
"version": "2.0.2",
"description": "Library that helps resolve error messages",
"main": "dist/main.js",
"module": "es/index.js",
Expand Down
11 changes: 11 additions & 0 deletions src/__tests__/resolveHttpErrorMessage.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,17 @@ describe('resolveHttpErrorMessage', () => {
);

test.each([
[
{
status: 500,
data: {
error: 'internal_server_error',
errors: null,
error_description: 'Internal error',
},
},
'Internal server error',
],
[
{
status: 400,
Expand Down
8 changes: 8 additions & 0 deletions src/condition/resolveErrorResponseDescription.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import get from 'lodash/get';

export const resolveErrorResponseDescription = (errorResponse) => {
if (errorResponse.getStatus() === 500) {
return null;
}
return get(errorResponse.getData(), 'error_description', null);
};
5 changes: 5 additions & 0 deletions src/messageResolver/__tests__/resolveByResponseErrors.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ describe('resolveByResponseStatus', () => {
(new ErrorResponse()).setData({ errors: ['error1', 'error2'] }),
null,
],
[
'Response data errors is array of strings',
(new ErrorResponse()).setData({ errors: null }),
null,
],
[
'Resolves first message from response data errors',
(new ErrorResponse()).setData({
Expand Down
4 changes: 4 additions & 0 deletions src/messageResolver/resolveByResponseErrors.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ import isUndefined from 'lodash/isUndefined';
export default (errorResponse) => {
const { errors = [] } = errorResponse.getData() || {};

if (errors === null) {
return null;
}

const firstErrorMessage = errors.find(error => (
isObject(error)
&& !isUndefined(error.message)
Expand Down
3 changes: 2 additions & 1 deletion src/resolveHttpErrorMessage.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import responseErrorCondition from './condition/responseErrorCondition';
import responseStatusErrorCondition from './condition/responseStatusErrorCondition';
import tooManyRequestsErrorCondition from './condition/tooManyRequestsErrorCondition';
import maintenanceCondition from './condition/maintenanceCondition';
import { resolveErrorResponseDescription } from './condition/resolveErrorResponseDescription';

/**
* @param {*} error
Expand All @@ -37,7 +38,7 @@ export default async (error, message) => {
() => tooManyRequestsErrorCondition(errorResponse, message.getTooManyRequests()),
() => responseStatusErrorCondition(errorResponse, message.getStatus()),
() => resolveByResponseErrors(errorResponse),
() => get(errorResponse.getData(), 'error_description', null),
() => resolveErrorResponseDescription(errorResponse),
() => defaultErrorMessageCondition(errorResponse),
];

Expand Down

0 comments on commit 82d484a

Please sign in to comment.