Update response code for passthrough-running create use-case 28/124228/2
authorniamhcore <niamh.core@est.tech>
Wed, 15 Sep 2021 12:01:25 +0000 (13:01 +0100)
committerniamhcore <niamh.core@est.tech>
Wed, 15 Sep 2021 15:20:02 +0000 (16:20 +0100)
Issue-ID: CPS-659
Signed-off-by: niamhcore <niamh.core@est.tech>
Change-Id: I4ebc4f68604efe78efb951989c2fb021443c36c9

docs/openapi/openapi.yaml
docs/openapi/openapi.yml
src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java
src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java
src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy
src/test/groovy/org/onap/cps/ncmp/dmi/service/DmiServiceImplSpec.groovy

index 082df22..58a23d9 100644 (file)
@@ -313,12 +313,12 @@ paths:
               $ref: '#/components/schemas/DataAccessWriteRequest'
         required: true
       responses:
-        "200":
-          description: OK
+        "201":
+          description: Created
           content:
-            application/json:
+            text/plain:
               schema:
-                type: object
+                type: string
         "400":
           description: Bad Request
           content:
index 516f7e3..a9accdb 100644 (file)
@@ -192,8 +192,8 @@ paths:
             schema:
               $ref: 'components.yml#/components/schemas/DataAccessWriteRequest'
       responses:
-        '200':
-          $ref: 'components.yml#/components/responses/Ok'
+        '201':
+          $ref: 'components.yml#/components/responses/Created'
         '400':
           $ref: 'components.yml#/components/responses/BadRequest'
         '401':
index 4a18b06..37381fb 100644 (file)
@@ -84,14 +84,14 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi {
      * @return (@ code ResponseEntity) response entity
      */
     @Override
-    public ResponseEntity<Object> writeDataByPassthroughRunningForCmHandle(
+    public ResponseEntity<String> writeDataByPassthroughRunningForCmHandle(
         final DataAccessWriteRequest dataAccessWriteRequest,
         final String cmHandle, final String resourceIdentifier) {
         final String response = dmiService.writeResourceDataPassthroughForCmHandle(cmHandle,
             resourceIdentifier,
             MediaType.APPLICATION_JSON_VALUE,
             dataAccessWriteRequest.getData());
-        return new ResponseEntity<>(response, HttpStatus.OK);
+        return new ResponseEntity<>(response, HttpStatus.CREATED);
     }
 
     /**
index 2512ce2..db115ce 100644 (file)
@@ -223,7 +223,7 @@ public class DmiServiceImpl implements DmiService {
         }
         final ResponseEntity<String> responseEntity =
                 sdncOperations.writeResourceDataPassthroughRunning(cmHandle, resourceIdentifier, dataType, jsonData);
-        if (responseEntity.getStatusCode() == HttpStatus.CREATED) {
+        if (responseEntity.getStatusCode().is2xxSuccessful()) {
             return responseEntity.getBody();
         } else {
             throw new DmiException(cmHandle,
index e08870f..a937c4e 100644 (file)
@@ -218,8 +218,8 @@ class DmiRestControllerSpec extends Specification {
                     post(writeDataforCmHandlePassthroughRunning).contentType(MediaType.APPLICATION_JSON)
                             .content(jsonData)
             ).andReturn().response
-       then: 'response status is ok'
-            response.status == HttpStatus.OK.value()
+       then: 'response status is 201 CREATED'
+            response.status == HttpStatus.CREATED.value()
         and: 'the data in the request body is as expected'
             response.getContentAsString() == '{some-json}'
     }
index 1d2cf7f..a99aa9a 100644 (file)
@@ -248,30 +248,40 @@ class DmiServiceImplSpec extends Specification {
             response == 'response json'
     }
 
-    def 'Write resource data using for passthrough running for the given cm handle.'() {
-        given: 'sdnc returns a created response'
-            mockSdncOperations.writeResourceDataPassthroughRunning(_, _, _, _) >> new ResponseEntity<String>('response json', HttpStatus.CREATED)
-        when: 'write resource data from cm handles service method invoked'
+    def 'Write resource data for passthrough running for the given cm handle with a #scenario from sdnc.'() {
+        given: 'sdnc returns a response'
+            mockSdncOperations.writeResourceDataPassthroughRunning(_, _, _, _) >> new ResponseEntity<String>('response json', httpResponse)
+        when: 'write resource data for cm handle method invoked'
             def response = objectUnderTest.writeResourceDataPassthroughForCmHandle('some-cmHandle',
                     'some-resourceIdentifier', 'some-dataType', '{some-data}')
-        then: 'response have expected json'
+        then: 'the response contains the expected json data from sdnc'
             response == 'response json'
+        where: 'the following values are used'
+            scenario               | httpResponse
+            '200 OK response'      | HttpStatus.OK
+            '201 CREATED response' | HttpStatus.CREATED
+    }
+
+    def 'Write resource data for passthrough running with a 500 response from sdnc.'() {
+        given: 'sdnc returns a 500 response for the write operation'
+            mockSdncOperations.writeResourceDataPassthroughRunning(_, _, _, _) >> new ResponseEntity<String>('response json', HttpStatus.INTERNAL_SERVER_ERROR)
+        when: 'write resource data for pass through method is invoked'
+            objectUnderTest.writeResourceDataPassthroughForCmHandle('some-cmHandle',
+                    'some-resourceIdentifier', 'some-dataType', new Object())
+        then: 'a dmi exception is thrown'
+            thrown(DmiException.class)
     }
 
-    def 'Write resource data for passthrough running with a #scenario.'() {
-        given: 'sdnc returns a response for the write operation'
-            mockSdncOperations.writeResourceDataPassthroughRunning(_, _, _, _) >> new ResponseEntity<String>('response json', httpStatus)
-        and: 'the data provided in the request body is written as a string'
+    def 'Write resource data for passthrough running with a json processing exception.'() {
+        given: 'sdnc returns a 200 response for the write operation'
+            mockSdncOperations.writeResourceDataPassthroughRunning(_, _, _, _) >> new ResponseEntity<String>('response json', HttpStatus.OK)
+        and: 'a json processing exception is thrown'
             objectUnderTest.objectMapper = mockObjectMapper
-            mockObjectMapper.writeValueAsString(_) >> jsonString
+            mockObjectMapper.writeValueAsString(_) >> { throw new JsonProcessingException('some-exception') }
         when: 'write resource data for pass through method is invoked'
             objectUnderTest.writeResourceDataPassthroughForCmHandle('some-cmHandle',
                     'some-resourceIdentifier', 'some-dataType', new Object())
         then: 'a dmi exception is thrown'
             thrown(DmiException.class)
-        where: 'the following combinations are tested'
-            scenario                     | httpStatus                       | jsonString
-            '500 response from sdnc'     | HttpStatus.INTERNAL_SERVER_ERROR | '{some-json-data}'
-            'json processing exception ' | HttpStatus.OK                    | { throw new JsonProcessingException('some error.') }
     }
 }
\ No newline at end of file