diff options
author | JosephKeenan <joseph.keenan@est.tech> | 2022-01-28 11:22:22 +0000 |
---|---|---|
committer | JosephKeenan <joseph.keenan@est.tech> | 2022-02-02 12:06:23 +0000 |
commit | e0873dde9816543a34818c1509b1aaa1c195a875 (patch) | |
tree | 3d4628a9482f1c0ab9413841d4d035bcf96f1a97 /cps-ncmp-rest/src | |
parent | 63132cec2c18363a8224646039cc23b6144d8e6c (diff) |
[TECHDEBT] Align CPS NCMP REST API Specification
- Updated ncmp.yml to align implementation with specification
- Added new Exception classes to differentiate between server NCMP
issues and client based NCMP issues
- Added 500 error to specification
- To be merged after https://gerrit.onap.org/r/c/cps/+/126848
- Added excpetion handlers for SerNcmpException & DmiRequestException
Issue-ID: CPS-823
Signed-off-by: JosephKeenan <joseph.keenan@est.tech>
Change-Id: If1c9c6c29c6ea2daa07753d7f766ef15c1ba4ca0
Diffstat (limited to 'cps-ncmp-rest/src')
2 files changed, 21 insertions, 11 deletions
diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/exceptions/NetworkCmProxyRestExceptionHandler.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/exceptions/NetworkCmProxyRestExceptionHandler.java index ce9dd5a027..8c6f9f1d70 100755 --- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/exceptions/NetworkCmProxyRestExceptionHandler.java +++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/exceptions/NetworkCmProxyRestExceptionHandler.java @@ -21,7 +21,9 @@ package org.onap.cps.ncmp.rest.exceptions; import lombok.extern.slf4j.Slf4j; +import org.onap.cps.ncmp.api.impl.exception.DmiRequestException; import org.onap.cps.ncmp.api.impl.exception.NcmpException; +import org.onap.cps.ncmp.api.impl.exception.ServerNcmpException; import org.onap.cps.ncmp.rest.controller.NetworkCmProxyController; import org.onap.cps.ncmp.rest.model.ErrorMessage; import org.onap.cps.spi.exceptions.CpsException; @@ -56,11 +58,16 @@ public class NetworkCmProxyRestExceptionHandler { return buildErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR, exception); } - @ExceptionHandler({NcmpException.class}) - public static ResponseEntity<Object> handleNcmpExceptions(final NcmpException exception) { + @ExceptionHandler({ServerNcmpException.class}) + public static ResponseEntity<Object> handleServerNcmpExceptions(final ServerNcmpException exception) { return buildErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR, exception); } + @ExceptionHandler({DmiRequestException.class}) + public static ResponseEntity<Object> handleDmiRequestExceptions(final DmiRequestException exception) { + return buildErrorResponse(HttpStatus.BAD_REQUEST, exception); + } + private static ResponseEntity<Object> buildErrorResponse(final HttpStatus status, final Exception exception) { if (exception.getCause() != null || !(exception instanceof CpsException)) { log.error("Exception occurred", exception); diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/exceptions/NetworkCmProxyRestExceptionHandlerSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/exceptions/NetworkCmProxyRestExceptionHandlerSpec.groovy index 7b3cd89145..1b72b8c084 100644 --- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/exceptions/NetworkCmProxyRestExceptionHandlerSpec.groovy +++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/exceptions/NetworkCmProxyRestExceptionHandlerSpec.groovy @@ -23,7 +23,8 @@ package org.onap.cps.ncmp.rest.exceptions import groovy.json.JsonSlurper import org.modelmapper.ModelMapper import org.onap.cps.ncmp.api.NetworkCmProxyDataService -import org.onap.cps.ncmp.api.impl.exception.NcmpException +import org.onap.cps.ncmp.api.impl.exception.DmiRequestException +import org.onap.cps.ncmp.api.impl.exception.ServerNcmpException import org.onap.cps.spi.exceptions.CpsException import org.onap.cps.utils.JsonObjectMapper import org.spockframework.spring.SpringBean @@ -34,6 +35,7 @@ import org.springframework.test.web.servlet.MockMvc import spock.lang.Shared import spock.lang.Specification +import static org.springframework.http.HttpStatus.BAD_REQUEST import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get @@ -66,17 +68,18 @@ class NetworkCmProxyRestExceptionHandlerSpec extends Specification { dataNodeBaseEndpoint = "$basePath/v1" } - def 'Get request with generic #scenario exception returns HTTP Status Internal Server Error.'() { - when: 'generic CPS exception is thrown by the service' + def 'Get request with generic #scenario exception returns correct HTTP Status.'() { + when: 'an exception is thrown by the service' setupTestException(exception) def response = performTestRequest() - then: 'an HTTP Internal Server Error response is returned with correct message and details' - assertTestResponse(response, INTERNAL_SERVER_ERROR, errorMessage, expectedErrorDetails) + then: 'an HTTP response is returned with correct message and details' + assertTestResponse(response, expectedErrorCode, errorMessage, expectedErrorDetails) where: - scenario | exception || expectedErrorDetails - 'CPS' | new CpsException(errorMessage, errorDetails) || errorDetails - 'NCMP' | new NcmpException(errorMessage, errorDetails) || null - 'other' | new IllegalStateException(errorMessage) || null + scenario | exception || expectedErrorDetails | expectedErrorCode + 'CPS' | new CpsException(errorMessage, errorDetails) || errorDetails | INTERNAL_SERVER_ERROR + 'NCMP-server' | new ServerNcmpException(errorMessage, errorDetails) || null | INTERNAL_SERVER_ERROR + 'NCMP-client' | new DmiRequestException(errorMessage, errorDetails) || null | BAD_REQUEST + 'other' | new IllegalStateException(errorMessage) || null | INTERNAL_SERVER_ERROR } def setupTestException(exception){ |