diff options
author | Toine Siebelink <toine.siebelink@est.tech> | 2021-10-04 16:13:48 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2021-10-04 16:13:48 +0000 |
commit | b95f49172c6909a6b0dddc31ac99dd22d5189de0 (patch) | |
tree | 89a78d9cbb37c73e8aa20c8a16e301342daa15d3 | |
parent | 3c849ba983dd02a252e94b87eafdfaaeda8eab9b (diff) | |
parent | 2fb3f66a3da8f7daa8dba9023de56b2227c59e7a (diff) |
Merge "Changing resource identifier to a query param"
-rw-r--r-- | docs/openapi/components.yml | 5 | ||||
-rw-r--r-- | docs/openapi/openapi.yml | 10 | ||||
-rw-r--r-- | pom.xml | 2 | ||||
-rw-r--r-- | src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java | 16 | ||||
-rw-r--r-- | src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy | 23 |
5 files changed, 33 insertions, 23 deletions
diff --git a/docs/openapi/components.yml b/docs/openapi/components.yml index 9cce52de..736639d8 100644 --- a/docs/openapi/components.yml +++ b/docs/openapi/components.yml @@ -157,11 +157,12 @@ components: schema: type: string - resourceIdentifierInPath: + resourceIdentifierInQuery: name: resourceIdentifier - in: path + in: query description: Resource identifier to get/set the resource data required: true + allowReserved: true schema: type: string diff --git a/docs/openapi/openapi.yml b/docs/openapi/openapi.yml index f66897a2..1e7b38c9 100644 --- a/docs/openapi/openapi.yml +++ b/docs/openapi/openapi.yml @@ -128,7 +128,7 @@ paths: '403': $ref: 'components.yml#/components/responses/Forbidden' - /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-operational/{resourceIdentifier}: + /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-operational: put: tags: - dmi-plugin @@ -137,7 +137,7 @@ paths: operationId: getResourceDataOperationalForCmHandle parameters: - $ref: 'components.yml#/components/parameters/cmHandleInPath' - - $ref: 'components.yml#/components/parameters/resourceIdentifierInPath' + - $ref: 'components.yml#/components/parameters/resourceIdentifierInQuery' - $ref: 'components.yml#/components/parameters/acceptParamInHeader' - $ref: 'components.yml#/components/parameters/fieldsParamInQuery' - $ref: 'components.yml#/components/parameters/depthParamInQuery' @@ -157,7 +157,7 @@ paths: '403': $ref: 'components.yml#/components/responses/Forbidden' - /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-running/{resourceIdentifier}: + /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-running: put: tags: - dmi-plugin @@ -166,7 +166,7 @@ paths: operationId: getResourceDataPassthroughRunningForCmHandle parameters: - $ref: 'components.yml#/components/parameters/cmHandleInPath' - - $ref: 'components.yml#/components/parameters/resourceIdentifierInPath' + - $ref: 'components.yml#/components/parameters/resourceIdentifierInQuery' - $ref: 'components.yml#/components/parameters/acceptParamInHeader' - $ref: 'components.yml#/components/parameters/fieldsParamInQuery' - $ref: 'components.yml#/components/parameters/depthParamInQuery' @@ -194,7 +194,7 @@ paths: operationId: writeDataByPassthroughRunningForCmHandle parameters: - $ref: 'components.yml#/components/parameters/cmHandleInPath' - - $ref: 'components.yml#/components/parameters/resourceIdentifierInPath' + - $ref: 'components.yml#/components/parameters/resourceIdentifierInQuery' requestBody: required: true content: @@ -494,7 +494,7 @@ <plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> - <version>2.8.0</version> + <version>3.1.4</version> <configuration> <container> <mainClass>${app}</mainClass> diff --git a/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java b/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java index ff3cefcd..72e81709 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java @@ -80,14 +80,14 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi { * Write data using passthrough for the given cmHandle. * * @param dataAccessWriteRequest pass through request - * @param cmHandle cmHandle * @param resourceIdentifier resource identifier + * @param cmHandle cmHandle * @return (@ code ResponseEntity) response entity */ @Override public ResponseEntity<String> writeDataByPassthroughRunningForCmHandle( final DataAccessWriteRequest dataAccessWriteRequest, - final String cmHandle, final String resourceIdentifier) { + final String resourceIdentifier, final String cmHandle) { final String response = dmiService.writeResourceDataPassthroughForCmHandle(cmHandle, resourceIdentifier, MediaType.APPLICATION_JSON_VALUE, @@ -114,8 +114,8 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi { * This method fetches the resource for given cm handle using pass through operational. It filters the response on * the basis of depth and field query parameters and returns response. * - * @param cmHandle cm handle identifier * @param resourceIdentifier resource identifier to fetch data + * @param cmHandle cm handle identifier * @param dataAccessReadRequest data Access Read Request * @param accept accept header parameter * @param fields fields to filter the response data @@ -123,8 +123,8 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi { * @return {@code ResponseEntity} response entity */ @Override - public ResponseEntity<Object> getResourceDataOperationalForCmHandle(final String cmHandle, - final String resourceIdentifier, + public ResponseEntity<Object> getResourceDataOperationalForCmHandle(final String resourceIdentifier, + final String cmHandle, final @Valid DataAccessReadRequest dataAccessReadRequest, final String accept, final @Valid String fields, @@ -142,8 +142,8 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi { * This method fetches the resource for given cm handle using pass through running. It filters the response on the * basis of depth and field query parameters and returns response. * - * @param cmHandle cm handle identifier * @param resourceIdentifier resource identifier to fetch data + * @param cmHandle cm handle identifier * @param dataAccessReadRequest data Access Read Request * @param accept accept header parameter * @param fields fields to filter the response data @@ -151,8 +151,8 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi { * @return {@code ResponseEntity} response entity */ @Override - public ResponseEntity<Object> getResourceDataPassthroughRunningForCmHandle(final String cmHandle, - final String resourceIdentifier, + public ResponseEntity<Object> getResourceDataPassthroughRunningForCmHandle(final String resourceIdentifier, + final String cmHandle, final @Valid DataAccessReadRequest dataAccessReadRequest, final String accept, final @Valid String fields, diff --git a/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy b/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy index 9c27dc1b..c818eccb 100644 --- a/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy +++ b/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy @@ -20,7 +20,6 @@ package org.onap.cps.ncmp.dmi.rest.controller - import com.fasterxml.jackson.databind.ObjectMapper import org.onap.cps.ncmp.dmi.TestUtils import org.onap.cps.ncmp.dmi.exception.DmiException @@ -187,7 +186,7 @@ class DmiRestControllerSpec extends Specification { def 'Get resource data for pass-through operational from cm handle.'() { given: 'Get resource data url' def getResourceDataForCmHandleUrl = "${basePathV1}/ch/some-cmHandle/data/ds/ncmp-datastore:passthrough-operational" + - "/resourceIdentifier?fields=myfields&depth=5" + "?resourceIdentifier=abc/xyz&fields=myfields&depth=5" def json = '{"cmHandleProperties" : { "prop1" : "value1", "prop2" : "value2"}}' when: 'get resource data PUT api is invoked' def response = mvc.perform( @@ -198,7 +197,7 @@ class DmiRestControllerSpec extends Specification { response.status == HttpStatus.OK.value() and: 'dmi service called with get resource data for cm handle' 1 * mockDmiService.getResourceDataOperationalForCmHandle('some-cmHandle', - 'resourceIdentifier', + 'abc/xyz', 'application/json', 'myfields', 5, @@ -207,7 +206,8 @@ class DmiRestControllerSpec extends Specification { def 'Write data using passthrough running for a cm handle using #scenario.'() { given: 'write data for cmHandle url and jsonData' - def writeDataforCmHandlePassthroughRunning = "${basePathV1}/ch/some-cmHandle/data/ds/ncmp-datastore:passthrough-running/some-resourceIdentifier" + def writeDataforCmHandlePassthroughRunning = "${basePathV1}/ch/some-cmHandle/data/ds/ncmp-datastore:passthrough-running" + + "?resourceIdentifier=some-resourceIdentifier" def jsonData = TestUtils.getResourceFileContent(requestBodyFile) and: 'dmi service is called' mockDmiService.writeResourceDataPassthroughForCmHandle('some-cmHandle', @@ -228,10 +228,10 @@ class DmiRestControllerSpec extends Specification { 'data with special chars' | 'dataWithSpecialChar.json'|| 'data with quote \" and new line \n' } - def 'Get resource data for pass-through running from cm handle.'() { + def 'Get resource data for pass-through running from cm handle with #scenario value in resource identifier param.'() { given: 'Get resource data url' def getResourceDataForCmHandleUrl = "${basePathV1}/ch/some-cmHandle/data/ds/ncmp-datastore:passthrough-running" + - "/testResourceIdentifier?fields=testFields&depth=5" + "?resourceIdentifier="+resourceIdentifier+"&fields=testFields&depth=5" def json = '{"cmHandleProperties" : { "prop1" : "value1", "prop2" : "value2"}}' when: 'get resource data PUT api is invoked' def response = mvc.perform( @@ -242,10 +242,19 @@ class DmiRestControllerSpec extends Specification { response.status == HttpStatus.OK.value() and: 'dmi service called with get resource data for cm handle' 1 * mockDmiService.getResourceDataPassThroughRunningForCmHandle('some-cmHandle', - 'testResourceIdentifier', + resourceIdentifier, 'application/json', 'testFields', 5, ['prop1':'value1', 'prop2':'value2']) + where: 'tokens are used in the resource identifier parameter' + scenario | resourceIdentifier + '/' | 'id/with/slashes' + '?' | 'idWith?' + ',' | 'idWith,' + '=' | 'idWith=' + '[]' | 'idWith[]' + '? needs to be encoded as %3F' | 'idWith%3F' + } }
\ No newline at end of file |