diff options
-rwxr-xr-x | cps-rest/docs/api/swagger/cpsAdmin.yml | 2 | ||||
-rwxr-xr-x | cps-rest/docs/api/swagger/cpsData.yml | 3 | ||||
-rwxr-xr-x | cps-rest/docs/api/swagger/openapi.yml | 5 | ||||
-rwxr-xr-x[-rw-r--r--] | cps-rest/src/test/groovy/org/onap/cps/rest/controller/DataRestControllerSpec.groovy | 22 |
4 files changed, 21 insertions, 11 deletions
diff --git a/cps-rest/docs/api/swagger/cpsAdmin.yml b/cps-rest/docs/api/swagger/cpsAdmin.yml index f1bac8dda5..5040e2cf8d 100755 --- a/cps-rest/docs/api/swagger/cpsAdmin.yml +++ b/cps-rest/docs/api/swagger/cpsAdmin.yml @@ -1,4 +1,4 @@ -dataspace: +dataspaces: post: description: Create a new dataspace tags: diff --git a/cps-rest/docs/api/swagger/cpsData.yml b/cps-rest/docs/api/swagger/cpsData.yml index eabed28365..24644899a4 100755 --- a/cps-rest/docs/api/swagger/cpsData.yml +++ b/cps-rest/docs/api/swagger/cpsData.yml @@ -1,4 +1,4 @@ -nodesByDataspaceAndAnchor: +nodeByDataspaceAndAnchor: get: description: Get a node with an option to retrieve all the children for a given anchor and dataspace tags: @@ -23,6 +23,7 @@ nodesByDataspaceAndAnchor: $ref: 'components.yml#/components/responses/NotFound' x-codegen-request-body-name: xpath +nodesByDataspaceAndAnchor: post: description: Create a node for a given anchor and dataspace tags: diff --git a/cps-rest/docs/api/swagger/openapi.yml b/cps-rest/docs/api/swagger/openapi.yml index 5b9e5f4b6c..2ead202398 100755 --- a/cps-rest/docs/api/swagger/openapi.yml +++ b/cps-rest/docs/api/swagger/openapi.yml @@ -25,7 +25,7 @@ tags: paths: /v1/dataspaces: - $ref: 'cpsAdmin.yml#/dataspace' + $ref: 'cpsAdmin.yml#/dataspaces' /v1/dataspaces/{dataspace-name}: $ref: 'cpsAdmin.yml#/dataspaceByDataspaceName' @@ -42,6 +42,9 @@ paths: /v1/dataspaces/{dataspace-name}/schema-sets/{schema-set-name}: $ref: 'cpsAdmin.yml#/schemaSetBySchemaSetName' + /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/node: + $ref: 'cpsData.yml#/nodeByDataspaceAndAnchor' + /v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes: $ref: 'cpsData.yml#/nodesByDataspaceAndAnchor' diff --git a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/DataRestControllerSpec.groovy b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/DataRestControllerSpec.groovy index c5fd162030..cca94d1aec 100644..100755 --- a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/DataRestControllerSpec.groovy +++ b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/DataRestControllerSpec.groovy @@ -68,7 +68,7 @@ class DataRestControllerSpec extends Specification { @Value('${rest.api.cps-base-path}') def basePath - def dataNodeEndpoint + def dataNodeBaseEndpoint def dataspaceName = 'my_dataspace' def anchorName = 'my_anchor' @@ -81,15 +81,16 @@ class DataRestControllerSpec extends Specification { .withChildDataNodes([new DataNodeBuilder().withXpath("/parent/child").build()]).build() def setup() { - dataNodeEndpoint = "$basePath/v1/dataspaces/$dataspaceName/anchors/$anchorName/nodes" + dataNodeBaseEndpoint = "$basePath/v1/dataspaces/$dataspaceName" } def 'Create a node.'() { given: 'some json to create a data node' + def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes" def json = 'some json (this is not validated)' when: 'post is invoked with datanode endpoint and json' def response = mvc.perform( - post(dataNodeEndpoint).contentType(MediaType.APPLICATION_JSON).content(json) + post(endpoint).contentType(MediaType.APPLICATION_JSON).content(json) ).andReturn().response then: 'a created response is returned' response.status == HttpStatus.CREATED.value() @@ -101,10 +102,11 @@ class DataRestControllerSpec extends Specification { def 'Get data node with leaves'() { given: 'the service returns data node leaves' def xpath = 'some xPath' + def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/node" mockCpsDataService.getDataNode(dataspaceName, anchorName, xpath, OMIT_DESCENDANTS) >> dataNodeWithLeavesNoChildren when: 'get request is performed through REST API' def response = mvc.perform( - get(dataNodeEndpoint).param('xpath', xpath) + get(endpoint).param('xpath', xpath) ).andReturn().response then: 'a success response is returned' response.status == HttpStatus.OK.value() @@ -118,9 +120,10 @@ class DataRestControllerSpec extends Specification { def 'Get data node with #scenario.'() { given: 'the service returns data node with #scenario' def xpath = 'some xPath' + def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/node" mockCpsDataService.getDataNode(dataspaceName, anchorName, xpath, expectedCpsDataServiceOption) >> dataNode when: 'get request is performed through REST API' - def response = mvc.perform(get(dataNodeEndpoint) + def response = mvc.perform(get(endpoint) .param('xpath', xpath) .param('include-descendants', includeDescendantsOption)) .andReturn().response @@ -138,10 +141,11 @@ class DataRestControllerSpec extends Specification { @Unroll def 'Get data node error scenario: #scenario.'() { given: 'the service throws an exception' + def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/node" mockCpsDataService.getDataNode(dataspaceName, anchorName, xpath, _) >> { throw exception } when: 'get request is performed through REST API' def response = mvc.perform( - get(dataNodeEndpoint).param("xpath", xpath) + get(endpoint).param("xpath", xpath) ).andReturn().response then: 'a success response is returned' response.status == httpStatus.value() @@ -157,9 +161,10 @@ class DataRestControllerSpec extends Specification { def 'Update data node leaves: #scenario.'() { given: 'json data' def jsonData = 'json data' + def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes" when: 'patch request is performed' def response = mvc.perform( - patch(dataNodeEndpoint) + patch(endpoint) .contentType(MediaType.APPLICATION_JSON) .content(jsonData) .param('xpath', xpath) @@ -178,9 +183,10 @@ class DataRestControllerSpec extends Specification { def 'Replace data node tree: #scenario.'() { given: 'json data' def jsonData = 'json data' + def endpoint = "$dataNodeBaseEndpoint/anchors/$anchorName/nodes" when: 'put request is performed' def response = mvc.perform( - put(dataNodeEndpoint) + put(endpoint) .contentType(MediaType.APPLICATION_JSON) .content(jsonData) .param('xpath', xpath) |