From b66c131f643069a74ae7b18064c0cf7ca9655155 Mon Sep 17 00:00:00 2001 From: "rajesh.kumar" Date: Wed, 12 Oct 2022 12:11:00 +0000 Subject: HTTP error code 500 changed to 400 for invalid JSON payload Issue-ID: CPS-1289 Change-ID: I73f97f986a817d423f93a8d922dcd9647b1012aa Signed-off-by: rajesh.kumar --- .../onap/cps/rest/exceptions/CpsRestExceptionHandler.java | 4 +++- .../cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'cps-rest/src') diff --git a/cps-rest/src/main/java/org/onap/cps/rest/exceptions/CpsRestExceptionHandler.java b/cps-rest/src/main/java/org/onap/cps/rest/exceptions/CpsRestExceptionHandler.java index 93233d9c47..0c6edd5b4e 100755 --- a/cps-rest/src/main/java/org/onap/cps/rest/exceptions/CpsRestExceptionHandler.java +++ b/cps-rest/src/main/java/org/onap/cps/rest/exceptions/CpsRestExceptionHandler.java @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2020 Pantheon.tech * Modifications Copyright (C) 2021-2022 Nordix Foundation + * Modifications Copyright (C) 2022 TechMahindra Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -43,6 +44,7 @@ import org.onap.cps.spi.exceptions.NotFoundInDataspaceException; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; @@ -64,7 +66,7 @@ public class CpsRestExceptionHandler { } @ExceptionHandler({ModelValidationException.class, DataValidationException.class, CpsAdminException.class, - CpsPathException.class, ValidationException.class}) + CpsPathException.class, ValidationException.class, HttpMessageNotReadableException.class}) public static ResponseEntity handleBadRequestExceptions(final Exception exception) { return buildErrorResponse(HttpStatus.BAD_REQUEST, exception); } diff --git a/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy b/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy index e9d0e3e12a..ece3507f2d 100644 --- a/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy +++ b/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy @@ -3,6 +3,7 @@ * Copyright (C) 2020 Pantheon.tech * Modifications Copyright (C) 2021-2022 Nordix Foundation * Modifications Copyright (C) 2021 Bell Canada. + * Modifications Copyright (C) 2022 TechMahindra Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -180,6 +181,18 @@ class CpsRestExceptionHandlerSpec extends Specification { exceptionThrown << [new DataNodeNotFoundException('', ''), new NotFoundInDataspaceException('', '')] } + def 'Post request with invalid JSON payload returns HTTP Status Bad Request.'() { + when: 'data post request is performed' + def response = mvc.perform( + post("$basePath/v1/dataspaces/dataspace-name/anchors/anchor-name/nodes") + .contentType(MediaType.APPLICATION_JSON) + .param('xpath', 'parent node xpath') + .content('{') + ).andReturn().response + then: 'response code indicates bad input parameters' + response.status == BAD_REQUEST.value() + } + /* * NB. The test uses 'get anchors' endpoint and associated service method invocation * to test the exception handling. The endpoint chosen is not a subject of test. -- cgit 1.2.3-korg