From 53f07ac2f4b3699b685b8d009c8949e81fa154a6 Mon Sep 17 00:00:00 2001 From: niamhcore Date: Fri, 19 Feb 2021 13:14:40 +0000 Subject: Rest & Java API layer - Query Datanodes using cpsPath that contains contains a leaf name and a leaf value Issue-ID: CPS-231 Signed-off-by: niamhcore Change-Id: I3bf2a9946746ad06ddb4bc832206a36b78ff2175 --- .../rest/controller/AdminRestControllerSpec.groovy | 5 ++ .../rest/controller/DataRestControllerSpec.groovy | 4 ++ .../rest/controller/QueryRestControllerSpec.groovy | 84 ++++++++++++++++++++++ .../exceptions/CpsRestExceptionHandlerSpec.groovy | 5 ++ 4 files changed, 98 insertions(+) create mode 100644 cps-rest/src/test/groovy/org/onap/cps/rest/controller/QueryRestControllerSpec.groovy (limited to 'cps-rest/src/test/groovy') 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 926021e81..ca99743ca 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 @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2020 Pantheon.tech * Modifications Copyright (C) 2020 Bell Canada. All rights reserved. + * Copyright (C) 2021 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,6 +28,7 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post import org.modelmapper.ModelMapper +import org.onap.cps.api.CpsQueryService import org.onap.cps.api.CpsAdminService import org.onap.cps.api.CpsDataService import org.onap.cps.api.CpsModuleService @@ -59,6 +61,9 @@ class AdminRestControllerSpec extends Specification { @SpringBean CpsDataService mockCpsDataService = Mock() + @SpringBean + CpsQueryService mockCpsQueryService = Mock() + @SpringBean ModelMapper modelMapper = Mock() 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 cca94d1ae..b9b680d35 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 @@ -28,6 +28,7 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put import org.modelmapper.ModelMapper +import org.onap.cps.api.CpsQueryService import org.onap.cps.api.CpsAdminService import org.onap.cps.api.CpsDataService import org.onap.cps.api.CpsModuleService @@ -59,6 +60,9 @@ class DataRestControllerSpec extends Specification { @SpringBean CpsAdminService mockCpsAdminService = Mock() + @SpringBean + CpsQueryService mockCpsQueryService = Mock() + @SpringBean ModelMapper modelMapper = Mock() 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 new file mode 100644 index 000000000..4d9a558ef --- /dev/null +++ b/cps-rest/src/test/groovy/org/onap/cps/rest/controller/QueryRestControllerSpec.groovy @@ -0,0 +1,84 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.rest.controller + +import com.google.common.collect.ImmutableMap +import com.google.gson.Gson +import org.modelmapper.ModelMapper +import org.onap.cps.api.CpsAdminService +import org.onap.cps.api.CpsDataService +import org.onap.cps.api.CpsModuleService +import org.onap.cps.api.CpsQueryService +import org.onap.cps.spi.model.DataNode +import org.onap.cps.spi.model.DataNodeBuilder +import org.spockframework.spring.SpringBean +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.beans.factory.annotation.Value +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest +import org.springframework.http.HttpStatus +import org.springframework.test.web.servlet.MockMvc +import spock.lang.Shared +import spock.lang.Specification + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get + +@WebMvcTest +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 + + @Value('${rest.api.cps-base-path}') + def basePath + + def 'Query data node by cps path for the given dataspace and anchor.'() { + given: 'service method returns a list containing a data node' + def dataspaceName = 'my_dataspace' + def anchorName = 'my_anchor' + def cpsPath = '/xpath/leaves[@leaf=\'value\']' + def dataNode = new DataNodeBuilder().withXpath("/xpath") + .withLeaves(ImmutableMap.of("leaf", "value")).build() + ArrayList dataNodeList = new ArrayList(); + dataNodeList.add(dataNode) + mockCpsQueryService.queryDataNodes(dataspaceName, anchorName, cpsPath) >> dataNodeList + and: 'the query endpoint' + def dataNodeEndpoint = "$basePath/v1/dataspaces/$dataspaceName/anchors/$anchorName/nodes/query" + when: 'query data nodes API is invoked' + def response = mvc.perform(get(dataNodeEndpoint).param('cps-path', cpsPath)).andReturn().response + then: 'the response contains the the datanode in json format' + response.status == HttpStatus.OK.value() + response.getContentAsString().contains(new Gson().toJson(dataNode)) + } +} \ No newline at end of file diff --git a/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy b/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy index 8b02d73e8..4e10e2c14 100644 --- a/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy +++ b/cps-rest/src/test/groovy/org/onap/cps/rest/exceptions/CpsRestExceptionHandlerSpec.groovy @@ -1,6 +1,7 @@ /* * ============LICENSE_START======================================================= * Copyright (C) 2020 Pantheon.tech + * Copyright (C) 2021 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +25,7 @@ import org.modelmapper.ModelMapper import org.onap.cps.api.CpsAdminService import org.onap.cps.api.CpsDataService import org.onap.cps.api.CpsModuleService +import org.onap.cps.api.CpsQueryService import org.onap.cps.spi.exceptions.AnchorAlreadyDefinedException import org.onap.cps.spi.exceptions.CpsException import org.onap.cps.spi.exceptions.DataInUseException @@ -59,6 +61,9 @@ class CpsRestExceptionHandlerSpec extends Specification { @SpringBean CpsDataService mockCpsDataService = Mock() + @SpringBean + CpsQueryService mockCpsQueryService = Mock() + @SpringBean ModelMapper modelMapper = Mock() -- cgit 1.2.3-korg