diff --git a/spiffworkflow-frontend/src/services/HttpService.test.tsx b/spiffworkflow-frontend/src/services/HttpService.test.tsx new file mode 100644 index 000000000..91f001b2e --- /dev/null +++ b/spiffworkflow-frontend/src/services/HttpService.test.tsx @@ -0,0 +1,13 @@ +import HttpService from './HttpService'; + +test('it can use given http status message in messageForHttpError', () => { + expect(HttpService.messageForHttpError(400, 'Bad Request')).toEqual( + 'HTTP Error 400: Bad Request' + ); +}); + +test('it can figure out http status message if not given in messageForHttpError', () => { + expect(HttpService.messageForHttpError(400, '')).toEqual( + 'HTTP Error 400: Bad Request' + ); +}); diff --git a/spiffworkflow-frontend/src/services/HttpService.ts b/spiffworkflow-frontend/src/services/HttpService.ts index da17fb7ed..e262857cc 100644 --- a/spiffworkflow-frontend/src/services/HttpService.ts +++ b/spiffworkflow-frontend/src/services/HttpService.ts @@ -49,25 +49,38 @@ const messageForHttpError = (statusCode: number, statusText: string) => { if (statusText) { errorMessage += `: ${statusText}`; } else { + let httpTextForCode = ''; switch (statusCode) { case 400: - errorMessage += ': Bad Request'; + httpTextForCode = 'Bad Request'; break; case 401: - errorMessage += ': Unauthorized'; + httpTextForCode = 'Unauthorized'; break; case 403: - errorMessage += ': Forbidden'; + httpTextForCode = 'Forbidden'; break; case 404: - errorMessage += ': Not Found'; + httpTextForCode = 'Not Found'; break; case 413: - errorMessage += ': Payload Too Large'; + httpTextForCode = 'Payload Too Large'; + break; + case 500: + httpTextForCode = 'Internal Server Error'; + break; + case 502: + httpTextForCode = 'Bad Gateway'; + break; + case 503: + httpTextForCode = 'Service Unavailable'; break; default: break; } + if (httpTextForCode) { + errorMessage += `: ${httpTextForCode}`; + } } return errorMessage; }; @@ -128,11 +141,11 @@ backendCallProps) => { result.response.status, result.response.statusText ); - const baseMessage = `Received unexpected response from server. Status: ${httpStatusMesage}.`; + const baseMessage = `Received unexpected response from server. ${httpStatusMesage}.`; + console.error(`${baseMessage} Body: ${result.text}`); if (error instanceof SyntaxError) { throw new UnexpectedResponseError(baseMessage); } - console.error(`${baseMessage} Body: ${result.text}`); throw error; } if (result.response.status === 403) { @@ -180,6 +193,7 @@ backendCallProps) => { const HttpService = { HttpMethods, makeCallToBackend, + messageForHttpError, }; export default HttpService;