From 37d72855721caa646144ad323fe51ae78af15507 Mon Sep 17 00:00:00 2001 From: leventecsanyi Date: Wed, 26 Oct 2022 10:44:08 +0200 Subject: Filter on private properties of CM Handles - Moved cm handle query validation to cps-ncmp-service (where it belongs!) - Added new enum type for private/public field types - Created new methods for private and public queries - Added new REST endpoint - Created service methods for filtering on different types of properties - Refactored getPublicPropertyPairs and queryCmHandleAnyProperties - Added unit test for the controller layer - Fixed refactoring suggestions - Imporved code coverage with unit tests - Refactoring - Added new functionality to NcmpRestInputMapper - Updated version number to 3.2.1-SNAPSHOT and updated release-notes.rst Issue-ID: CPS-1236 Change-Id: I0ddf6866473f7c3c6b8507d222d441bf97ca6bdc Signed-off-by: leventecsanyi --- .../rest/controller/NcmpRestInputMapperSpec.groovy | 21 ++++++++++++++++ .../NetworkCmProxyInventoryControllerSpec.groovy | 29 +++++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) (limited to 'cps-ncmp-rest/src/test') diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NcmpRestInputMapperSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NcmpRestInputMapperSpec.groovy index cd3770eb8..dfe7bf385 100644 --- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NcmpRestInputMapperSpec.groovy +++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NcmpRestInputMapperSpec.groovy @@ -22,10 +22,13 @@ package org.onap.cps.ncmp.rest.controller import org.mapstruct.factory.Mappers import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle +import org.onap.cps.ncmp.rest.model.CmHandleQueryParameters +import org.onap.cps.ncmp.rest.model.ConditionProperties import org.onap.cps.ncmp.rest.model.RestDmiPluginRegistration import org.onap.cps.ncmp.rest.model.RestInputCmHandle import org.onap.cps.ncmp.rest.model.RestModuleDefinition import org.onap.cps.ncmp.rest.model.RestModuleReference +import org.onap.cps.ncmp.api.models.CmHandleQueryServiceParameters import org.onap.cps.spi.model.ModuleDefinition import org.onap.cps.spi.model.ModuleReference import spock.lang.Specification @@ -104,4 +107,22 @@ class NcmpRestInputMapperSpec extends Specification { ' content: content\n' + '}' } + + def 'Convert a CmHandle REST query to CmHandle query service parameters.'() { + given: 'a CmHandle REST query with two conditions' + def conditionParameter1 = new ConditionProperties(conditionName: 'some condition', conditionParameters: [[p1:1]] ) + def conditionParameter2 = new ConditionProperties(conditionName: 'other condition', conditionParameters: [[p2:2]] ) + def cmHandleQuery = new CmHandleQueryParameters() + cmHandleQuery.cmHandleQueryParameters = [conditionParameter1, conditionParameter2] + when: 'it is converted into CmHandle query service parameters' + def result = objectUnderTest.toCmHandleQueryServiceParameters(cmHandleQuery) + then: 'the result is of the correct class' + assert result instanceof CmHandleQueryServiceParameters + and: 'the result has the same conditions' + assert result.cmHandleQueryParameters.size() == 2 + assert result.cmHandleQueryParameters[0].conditionName == 'some condition' + assert result.cmHandleQueryParameters[0].conditionParameters == [[p1:1]] + assert result.cmHandleQueryParameters[1].conditionName == 'other condition' + assert result.cmHandleQueryParameters[1].conditionParameters == [[p2:2]] + } } diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyInventoryControllerSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyInventoryControllerSpec.groovy index b5a089bba..88f496a18 100644 --- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyInventoryControllerSpec.groovy +++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyInventoryControllerSpec.groovy @@ -27,10 +27,11 @@ import org.onap.cps.ncmp.api.NetworkCmProxyDataService import org.onap.cps.ncmp.api.models.CmHandleRegistrationResponse import org.onap.cps.ncmp.api.models.DmiPluginRegistration import org.onap.cps.ncmp.api.models.DmiPluginRegistrationResponse -import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle +import org.onap.cps.ncmp.rest.model.CmHandleQueryParameters import org.onap.cps.ncmp.rest.model.CmHandlerRegistrationErrorResponse import org.onap.cps.ncmp.rest.model.DmiPluginRegistrationErrorResponse import org.onap.cps.ncmp.rest.model.RestDmiPluginRegistration +import org.onap.cps.ncmp.api.models.CmHandleQueryServiceParameters import org.onap.cps.utils.JsonObjectMapper import org.spockframework.spring.SpringBean import org.springframework.beans.factory.annotation.Autowired @@ -60,6 +61,9 @@ class NetworkCmProxyInventoryControllerSpec extends Specification { DmiPluginRegistration mockDmiPluginRegistration = Mock() + CmHandleQueryServiceParameters cmHandleQueryServiceParameters = Mock() + + @SpringBean JsonObjectMapper jsonObjectMapper = new JsonObjectMapper(new ObjectMapper()) @Value('${rest.api.ncmp-inventory-base-path}/v1') @@ -102,6 +106,29 @@ class NetworkCmProxyInventoryControllerSpec extends Specification { response.status == HttpStatus.BAD_REQUEST.value() } + def 'CmHandle search endpoint test #scenario.'() { + given: 'a query object' + def cmHandleQueryParameters = jsonObjectMapper.asJsonString(new CmHandleQueryParameters()) + and: 'the mapper service returns a converted object' + ncmpRestInputMapper.toCmHandleQueryServiceParameters(_) >> cmHandleQueryServiceParameters + and: 'the service returns the desired results' + mockNetworkCmProxyDataService.executeCmHandleIdSearchForInventory(cmHandleQueryServiceParameters) >> serviceMockResponse + when: 'post request is performed & search is called with the given request parameters' + def response = mvc.perform( + post("$ncmpBasePathV1/ch/searches") + .contentType(MediaType.APPLICATION_JSON) + .content(cmHandleQueryParameters) + ).andReturn().response + then: 'response status is OK' + assert response.status == HttpStatus.OK.value() + and: 'the response data matches the service response.' + jsonObjectMapper.convertJsonString(response.getContentAsString(), List) == serviceMockResponse + where: 'the service respond with' + scenario | serviceMockResponse + 'empty response' | [] + 'populates response' | ['cmHandle1', 'cmHandle2'] + } + def 'DMI Registration: All cm-handles operations processed successfully.'() { given: 'a dmi plugin registration' def dmiRegistrationRequest = '{}' -- cgit 1.2.3-korg