Delete list-node p2 rest layer
Issue-ID: CPS-361
Signed-off-by: lukegleeson <luke.gleeson@est.tech>
Change-Id: I5fb8d202fc0a65679d10377cc2959a7f8f854ca7
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 bad66dd..5c79472 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 @@
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 7e9f71d..9c4f333 100644
--- a/cps-rest/src/main/resources/static/cpsData.yml
+++ b/cps-rest/src/main/resources/static/cpsData.yml
@@ -97,6 +97,26 @@
'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 8675f42..d3d42e3 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 @@
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 @@
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)
+ }
}