diff options
Diffstat (limited to 'cps-rest')
3 files changed, 42 insertions, 0 deletions
diff --git a/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java b/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java index bad66dd4e8..5c79472a4c 100755 --- a/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java +++ b/cps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java @@ -96,6 +96,13 @@ public class DataRestController implements CpsDataApi { return new ResponseEntity<>(HttpStatus.OK); } + @Override + public ResponseEntity<Void> deleteListNodeElements(final String dataspaceName, final String anchorName, + final String listNodeXpath) { + cpsDataService.deleteListNodeData(dataspaceName, anchorName, listNodeXpath); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + private static boolean isRootXpath(final String xpath) { return ROOT_XPATH.equals(xpath); } diff --git a/cps-rest/src/main/resources/static/cpsData.yml b/cps-rest/src/main/resources/static/cpsData.yml index 7e9f71d62b..9c4f3334e1 100644 --- a/cps-rest/src/main/resources/static/cpsData.yml +++ b/cps-rest/src/main/resources/static/cpsData.yml @@ -97,6 +97,26 @@ listNodeByDataspaceAndAnchor: '403': $ref: 'components.yml#/components/responses/Forbidden' + delete: + description: Delete list-node child elements under existing node for a given anchor and dataspace + tags: + - cps-data + summary: Delete list-node child element(s) under existing parent node + operationId: deleteListNodeElements + parameters: + - $ref: 'components.yml#/components/parameters/dataspaceNameInPath' + - $ref: 'components.yml#/components/parameters/anchorNameInPath' + - $ref: 'components.yml#/components/parameters/requiredXpathInQuery' + responses: + '204': + $ref: 'components.yml#/components/responses/NoContent' + '400': + $ref: 'components.yml#/components/responses/BadRequest' + '401': + $ref: 'components.yml#/components/responses/Unauthorized' + '403': + $ref: 'components.yml#/components/responses/Forbidden' + nodesByDataspaceAndAnchor: post: description: Create a node for a given anchor and dataspace 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 8675f42a51..d3d42e3065 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 @@ -24,6 +24,7 @@ package org.onap.cps.rest.controller import static org.onap.cps.spi.FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS import static org.onap.cps.spi.FetchDescendantsOption.OMIT_DESCENDANTS +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post @@ -235,4 +236,18 @@ class DataRestControllerSpec extends Specification { then: 'the java API was called with the correct parameters' 1 * mockCpsDataService.replaceListNodeData(dataspaceName, anchorName, parentNodeXpath, jsonData) } + + def 'Delete list node child elements.'() { + given: 'list node xpath' + def listNodeXpath = 'list node xpath' + when: 'delete is invoked list-node endpoint' + def response = mvc.perform( + delete("$dataNodeBaseEndpoint/anchors/$anchorName/list-node") + .param('xpath', listNodeXpath) + ).andReturn().response + then: 'a success response is returned' + response.status == HttpStatus.NO_CONTENT.value() + then: 'the java API was called with the correct parameters' + 1 * mockCpsDataService.deleteListNodeData(dataspaceName, anchorName, listNodeXpath) + } } |