summaryrefslogtreecommitdiffstats
path: root/cps-rest
diff options
context:
space:
mode:
Diffstat (limited to 'cps-rest')
-rwxr-xr-xcps-rest/pom.xml4
-rwxr-xr-xcps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java12
-rwxr-xr-xcps-rest/src/main/java/org/onap/cps/rest/controller/DataRestController.java22
-rw-r--r--cps-rest/src/main/java/org/onap/cps/rest/controller/QueryRestController.java10
-rwxr-xr-xcps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy8
-rwxr-xr-xcps-rest/src/test/groovy/org/onap/cps/rest/controller/DataRestControllerSpec.groovy14
-rw-r--r--cps-rest/src/test/groovy/org/onap/cps/rest/controller/QueryRestControllerSpec.groovy23
7 files changed, 37 insertions, 56 deletions
diff --git a/cps-rest/pom.xml b/cps-rest/pom.xml
index 9a131176d..9e29074f7 100755
--- a/cps-rest/pom.xml
+++ b/cps-rest/pom.xml
@@ -71,10 +71,6 @@
<artifactId>springfox-boot-starter</artifactId>
</dependency>
<dependency>
- <groupId>io.swagger</groupId>
- <artifactId>swagger-annotations</artifactId>
- </dependency>
- <dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.5.9</version>
diff --git a/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java b/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java
index 879d5dc6e..a1287b2bd 100755
--- a/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java
+++ b/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java
@@ -28,6 +28,8 @@ import static org.onap.cps.spi.CascadeDeleteAllowed.CASCADE_DELETE_PROHIBITED;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
import org.modelmapper.ModelMapper;
import org.onap.cps.api.CpsAdminService;
import org.onap.cps.api.CpsModuleService;
@@ -63,7 +65,7 @@ public class AdminRestController implements CpsAdminApi {
* @return a {@Link ResponseEntity} of created dataspace name & {@link HttpStatus} CREATED
*/
@Override
- public ResponseEntity<String> createDataspace(final String dataspaceName) {
+ public ResponseEntity<String> createDataspace(@NotNull @Valid final String dataspaceName) {
cpsAdminService.createDataspace(dataspaceName);
return new ResponseEntity<>(dataspaceName, HttpStatus.CREATED);
}
@@ -88,8 +90,8 @@ public class AdminRestController implements CpsAdminApi {
* @return a {@Link ResponseEntity} of created schemaset name & {@link HttpStatus} CREATED
*/
@Override
- public ResponseEntity<String> createSchemaSet(final MultipartFile multipartFile,
- final String schemaSetName, final String dataspaceName) {
+ public ResponseEntity<String> createSchemaSet(@NotNull @Valid final String schemaSetName,
+ final String dataspaceName, @Valid final MultipartFile multipartFile) {
cpsModuleService.createSchemaSet(dataspaceName, schemaSetName, extractYangResourcesMap(multipartFile));
return new ResponseEntity<>(schemaSetName, HttpStatus.CREATED);
}
@@ -130,8 +132,8 @@ public class AdminRestController implements CpsAdminApi {
* @return a ResponseEntity with the anchor name & {@link HttpStatus} CREATED
*/
@Override
- public ResponseEntity<String> createAnchor(final String dataspaceName, final String schemaSetName,
- final String anchorName) {
+ public ResponseEntity<String> createAnchor(final String dataspaceName, @NotNull @Valid final String schemaSetName,
+ @NotNull @Valid final String anchorName) {
cpsAdminService.createAnchor(dataspaceName, schemaSetName, anchorName);
return new ResponseEntity<>(anchorName, HttpStatus.CREATED);
}
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 64b441829..bad66dd4e 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
@@ -21,6 +21,8 @@
package org.onap.cps.rest.controller;
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
import org.onap.cps.api.CpsDataService;
import org.onap.cps.rest.api.CpsDataApi;
import org.onap.cps.spi.FetchDescendantsOption;
@@ -41,8 +43,8 @@ public class DataRestController implements CpsDataApi {
private CpsDataService cpsDataService;
@Override
- public ResponseEntity<String> createNode(final String jsonData, final String dataspaceName, final String anchorName,
- final String parentNodeXpath) {
+ public ResponseEntity<String> createNode(final String dataspaceName, final String anchorName,
+ final String jsonData, final String parentNodeXpath) {
if (isRootXpath(parentNodeXpath)) {
cpsDataService.saveData(dataspaceName, anchorName, jsonData);
} else {
@@ -52,8 +54,8 @@ public class DataRestController implements CpsDataApi {
}
@Override
- public ResponseEntity<String> addListNodeElements(final String jsonData, final String parentNodeXpath,
- final String dataspaceName, final String anchorName) {
+ public ResponseEntity<String> addListNodeElements(final String parentNodeXpath,
+ final String dataspaceName, final String anchorName, final String jsonData) {
cpsDataService.saveListNodeData(dataspaceName, anchorName, parentNodeXpath, jsonData);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@@ -74,22 +76,22 @@ public class DataRestController implements CpsDataApi {
}
@Override
- public ResponseEntity<Object> updateNodeLeaves(final String jsonData, final String dataspaceName,
- final String anchorName, final String parentNodeXpath) {
+ public ResponseEntity<Object> updateNodeLeaves(final String dataspaceName,
+ final String anchorName, final String jsonData, final String parentNodeXpath) {
cpsDataService.updateNodeLeaves(dataspaceName, anchorName, parentNodeXpath, jsonData);
return new ResponseEntity<>(HttpStatus.OK);
}
@Override
- public ResponseEntity<Object> replaceNode(final String jsonData, final String dataspaceName,
- final String anchorName, final String parentNodeXpath) {
+ public ResponseEntity<Object> replaceNode(final String dataspaceName,
+ final String anchorName, @Valid final String jsonData, @Valid final String parentNodeXpath) {
cpsDataService.replaceNodeTree(dataspaceName, anchorName, parentNodeXpath, jsonData);
return new ResponseEntity<>(HttpStatus.OK);
}
@Override
- public ResponseEntity<String> replaceListNodeElements(final String jsonData, final String parentNodeXpath,
- final String dataspaceName, final String anchorName) {
+ public ResponseEntity<String> replaceListNodeElements(@NotNull @Valid final String parentNodeXpath,
+ final String dataspaceName, final String anchorName, @Valid final String jsonData) {
cpsDataService.replaceListNodeData(dataspaceName, anchorName, parentNodeXpath, jsonData);
return new ResponseEntity<>(HttpStatus.OK);
}
diff --git a/cps-rest/src/main/java/org/onap/cps/rest/controller/QueryRestController.java b/cps-rest/src/main/java/org/onap/cps/rest/controller/QueryRestController.java
index b7fc9f795..8aa65a005 100644
--- a/cps-rest/src/main/java/org/onap/cps/rest/controller/QueryRestController.java
+++ b/cps-rest/src/main/java/org/onap/cps/rest/controller/QueryRestController.java
@@ -21,12 +21,16 @@
package org.onap.cps.rest.controller;
import com.google.gson.Gson;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
+import java.util.Map;
import javax.validation.Valid;
import org.onap.cps.api.CpsQueryService;
import org.onap.cps.rest.api.CpsQueryApi;
import org.onap.cps.spi.FetchDescendantsOption;
import org.onap.cps.spi.model.DataNode;
+import org.onap.cps.utils.DataMapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@@ -47,6 +51,10 @@ public class QueryRestController implements CpsQueryApi {
? FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS : FetchDescendantsOption.OMIT_DESCENDANTS;
final Collection<DataNode> dataNodes =
cpsQueryService.queryDataNodes(dataspaceName, anchorName, cpsPath, fetchDescendantsOption);
- return new ResponseEntity<>(new Gson().toJson(dataNodes), HttpStatus.OK);
+ final List<Map<String, Object>> dataNodeList = new ArrayList<>();
+ for (final DataNode dataNode : dataNodes) {
+ dataNodeList.add(DataMapUtils.toDataMap(dataNode));
+ }
+ return new ResponseEntity<>(new Gson().toJson(dataNodeList), HttpStatus.OK);
}
}
diff --git a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy
index 2f97a31dc..84da2db5d 100755
--- a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy
+++ b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/AdminRestControllerSpec.groovy
@@ -49,7 +49,7 @@ import org.springframework.util.LinkedMultiValueMap
import org.springframework.util.MultiValueMap
import spock.lang.Specification
-@WebMvcTest
+@WebMvcTest(AdminRestController)
class AdminRestControllerSpec extends Specification {
@SpringBean
@@ -59,12 +59,6 @@ class AdminRestControllerSpec extends Specification {
CpsAdminService mockCpsAdminService = Mock()
@SpringBean
- CpsDataService mockCpsDataService = Mock()
-
- @SpringBean
- CpsQueryService mockCpsQueryService = Mock()
-
- @SpringBean
ModelMapper modelMapper = Spy()
@Autowired
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 ec31c7fe0..8675f42a5 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
@@ -46,24 +46,12 @@ import org.springframework.test.web.servlet.MockMvc
import spock.lang.Shared
import spock.lang.Specification
-@WebMvcTest
+@WebMvcTest(DataRestController)
class DataRestControllerSpec extends Specification {
@SpringBean
CpsDataService mockCpsDataService = Mock()
- @SpringBean
- CpsModuleService mockCpsModuleService = Mock()
-
- @SpringBean
- CpsAdminService mockCpsAdminService = Mock()
-
- @SpringBean
- CpsQueryService mockCpsQueryService = Mock()
-
- @SpringBean
- ModelMapper modelMapper = Mock()
-
@Autowired
MockMvc mvc
diff --git a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/QueryRestControllerSpec.groovy b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/QueryRestControllerSpec.groovy
index 6b6bdeeeb..550dec972 100644
--- a/cps-rest/src/test/groovy/org/onap/cps/rest/controller/QueryRestControllerSpec.groovy
+++ b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/QueryRestControllerSpec.groovy
@@ -22,6 +22,8 @@
package org.onap.cps.rest.controller
+import org.onap.cps.spi.model.DataNode
+
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.get
@@ -41,24 +43,12 @@ import org.springframework.http.HttpStatus
import org.springframework.test.web.servlet.MockMvc
import spock.lang.Specification
-@WebMvcTest
+@WebMvcTest(QueryRestController)
class QueryRestControllerSpec extends Specification {
@SpringBean
- CpsDataService mockCpsDataService = Mock()
-
- @SpringBean
- CpsModuleService mockCpsModuleService = Mock()
-
- @SpringBean
- CpsAdminService mockCpsAdminService = Mock()
-
- @SpringBean
CpsQueryService mockCpsQueryService = Mock()
- @SpringBean
- ModelMapper modelMapper = Mock()
-
@Autowired
MockMvc mvc
@@ -67,11 +57,12 @@ class QueryRestControllerSpec extends Specification {
def 'Query data node by cps path for the given dataspace and anchor with #scenario.'() {
given: 'service method returns a list containing a data node'
- def dataNode = new DataNodeBuilder().withXpath('/xpath').build()
+ def dataNode1 = new DataNodeBuilder().withXpath('/xpath')
+ .withLeaves([leaf: 'value', leafList: ['leaveListElement1', 'leaveListElement2']]).build()
def dataspaceName = 'my_dataspace'
def anchorName = 'my_anchor'
def cpsPath = 'some cps-path'
- mockCpsQueryService.queryDataNodes(dataspaceName, anchorName, cpsPath, expectedCpsDataServiceOption) >> [dataNode]
+ mockCpsQueryService.queryDataNodes(dataspaceName, anchorName, cpsPath, expectedCpsDataServiceOption) >> [dataNode1, dataNode1]
and: 'the query endpoint'
def dataNodeEndpoint = "$basePath/v1/dataspaces/$dataspaceName/anchors/$anchorName/nodes/query"
when: 'query data nodes API is invoked'
@@ -83,7 +74,7 @@ class QueryRestControllerSpec extends Specification {
.andReturn().response
then: 'the response contains the the datanode in json format'
response.status == HttpStatus.OK.value()
- response.getContentAsString().contains(new Gson().toJson(dataNode))
+ response.getContentAsString() == '[{"leaf":"value","leafList":["leaveListElement1","leaveListElement2"]},{"leaf":"value","leafList":["leaveListElement1","leaveListElement2"]}]'
where: 'the following options for include descendants are provided in the request'
scenario | includeDescendantsOption || expectedCpsDataServiceOption
'no descendants by default' | '' || OMIT_DESCENDANTS