From 4f4178c7af4ca5571a0813a5c79f35b11c825d35 Mon Sep 17 00:00:00 2001 From: DylanB95EST Date: Fri, 2 Jul 2021 13:30:42 +0100 Subject: Implement DMI Registration (NCMP-Side) Implementing registration of CM-Handles to NCMP from DMI CM Handles are Written to fragment tables Moved NetworkCmProxyDataServiceImplSpec.groovy as it was not in the same package as the class it was testing. Meaning it didn't cover this when it came to code coverage Have included Json structure validation also within open api Deprecating old API's along with old API Methods Issue-ID: CPS-442 Change-Id: I819b9bf65280b1d968d3b75ca5ef2f9eb5617579 Signed-off-by: DylanB95EST --- .../impl/NetworkCmProxyDataServiceImplSpec.groovy | 106 -------------------- .../impl/NetworkCmProxyDataServiceImplSpec.groovy | 111 +++++++++++++++++++++ 2 files changed, 111 insertions(+), 106 deletions(-) delete mode 100644 cps-ncmp-service/src/test/groovy/org/onap/cps/api/impl/NetworkCmProxyDataServiceImplSpec.groovy create mode 100644 cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy (limited to 'cps-ncmp-service/src/test/groovy') diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/api/impl/NetworkCmProxyDataServiceImplSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/api/impl/NetworkCmProxyDataServiceImplSpec.groovy deleted file mode 100644 index ee435cc38..000000000 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/api/impl/NetworkCmProxyDataServiceImplSpec.groovy +++ /dev/null @@ -1,106 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation - * Modifications Copyright (C) 2021 Pantheon.tech - * ================================================================================ - * 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.api.impl - -import org.onap.cps.api.CpsDataService -import org.onap.cps.api.CpsQueryService -import org.onap.cps.ncmp.api.impl.NetworkCmProxyDataServiceImpl -import org.onap.cps.spi.FetchDescendantsOption -import spock.lang.Specification - -class NetworkCmProxyDataServiceImplSpec extends Specification { - def objectUnderTest = new NetworkCmProxyDataServiceImpl() - def mockcpsDataService = Mock(CpsDataService) - def mockcpsQueryService = Mock(CpsQueryService) - - def setup() { - objectUnderTest.cpsDataService = mockcpsDataService - objectUnderTest.cpsQueryService = mockcpsQueryService - } - - def cmHandle = 'some handle' - def expectedDataspaceName = 'NFP-Operational' - - def 'Query data nodes by cps path with #fetchDescendantsOption.'() { - given: 'a cm Handle and a cps path' - def cpsPath = '/cps-path' - when: 'queryDataNodes is invoked' - objectUnderTest.queryDataNodes(cmHandle, cpsPath, fetchDescendantsOption) - then: 'the persistence service is called once with the correct parameters' - 1 * mockcpsQueryService.queryDataNodes(expectedDataspaceName, cmHandle, cpsPath, fetchDescendantsOption) - where: 'all fetch descendants options are supported' - fetchDescendantsOption << FetchDescendantsOption.values() - } - - def 'Create full data node: #scenario.'() { - given: 'a cm handle and root xpath' - def jsonData = 'some json' - when: 'createDataNode is invoked' - objectUnderTest.createDataNode(cmHandle, xpath, jsonData) - then: 'the CPS service method is invoked once with the expected parameters' - 1 * mockcpsDataService.saveData(expectedDataspaceName, cmHandle, jsonData) - where: 'following parameters were used' - scenario | xpath - 'no xpath' | '' - 'root level xpath' | '/' - } - - def 'Create child data node.'() { - given: 'a cm handle and parent node xpath' - def jsonData = 'some json' - def xpath = '/test-node' - when: 'createDataNode is invoked' - objectUnderTest.createDataNode(cmHandle, xpath, jsonData) - then: 'the CPS service method is invoked once with the expected parameters' - 1 * mockcpsDataService.saveData(expectedDataspaceName, cmHandle, xpath, jsonData) - } - - def 'Add list-node elements.'() { - given: 'a cm handle and parent node xpath' - def jsonData = 'some json' - def xpath = '/test-node' - when: 'addListNodeElements is invoked' - objectUnderTest.addListNodeElements(cmHandle, xpath, jsonData) - then: 'the CPS service method is invoked once with the expected parameters' - 1 * mockcpsDataService.saveListNodeData(expectedDataspaceName, cmHandle, xpath, jsonData) - } - - def 'Update data node leaves.'() { - given: 'a cm Handle and a cps path' - def xpath = '/xpath' - def jsonData = 'some json' - when: 'updateNodeLeaves is invoked' - objectUnderTest.updateNodeLeaves(cmHandle, xpath, jsonData) - then: 'the persistence service is called once with the correct parameters' - 1 * mockcpsDataService.updateNodeLeaves(expectedDataspaceName, cmHandle, xpath, jsonData) - } - - def 'Replace data node tree.'() { - given: 'a cm Handle and a cps path' - def xpath = '/xpath' - def jsonData = 'some json' - when: 'replaceNodeTree is invoked' - objectUnderTest.replaceNodeTree(cmHandle, xpath, jsonData) - then: 'the persistence service is called once with the correct parameters' - 1 * mockcpsDataService.replaceNodeTree(expectedDataspaceName, cmHandle, xpath, jsonData) - } -} diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy new file mode 100644 index 000000000..d3c67cd20 --- /dev/null +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy @@ -0,0 +1,111 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation + * Modifications Copyright (C) 2021 Pantheon.tech + * ================================================================================ + * 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.ncmp.api.impl + +import com.fasterxml.jackson.databind.ObjectMapper +import org.onap.cps.api.CpsDataService +import org.onap.cps.api.CpsQueryService +import org.onap.cps.ncmp.api.models.CmHandle +import org.onap.cps.ncmp.api.models.DmiPluginRegistration +import org.onap.cps.spi.FetchDescendantsOption +import spock.lang.Specification + +class NetworkCmProxyDataServiceImplSpec extends Specification { + + def mockCpsDataService = Mock(CpsDataService) + def mockCpsQueryService = Mock(CpsQueryService) + def objectUnderTest = new NetworkCmProxyDataServiceImpl(mockCpsDataService, mockCpsQueryService, new ObjectMapper()) + + def cmHandle = 'some handle' + def expectedDataspaceName = 'NFP-Operational' + def 'Query data nodes by cps path with #fetchDescendantsOption.'() { + given: 'a cm Handle and a cps path' + def cpsPath = '/cps-path' + when: 'queryDataNodes is invoked' + objectUnderTest.queryDataNodes(cmHandle, cpsPath, fetchDescendantsOption) + then: 'the persistence service is called once with the correct parameters' + 1 * mockCpsQueryService.queryDataNodes(expectedDataspaceName, cmHandle, cpsPath, fetchDescendantsOption) + where: 'all fetch descendants options are supported' + fetchDescendantsOption << FetchDescendantsOption.values() + } + def 'Create full data node: #scenario.'() { + given: 'a cm handle and root xpath' + def jsonData = 'some json' + when: 'createDataNode is invoked' + objectUnderTest.createDataNode(cmHandle, xpath, jsonData) + then: 'the CPS service method is invoked once with the expected parameters' + 1 * mockCpsDataService.saveData(expectedDataspaceName, cmHandle, jsonData) + where: 'following parameters were used' + scenario | xpath + 'no xpath' | '' + 'root level xpath' | '/' + } + def 'Create child data node.'() { + given: 'a cm handle and parent node xpath' + def jsonData = 'some json' + def xpath = '/test-node' + when: 'createDataNode is invoked' + objectUnderTest.createDataNode(cmHandle, xpath, jsonData) + then: 'the CPS service method is invoked once with the expected parameters' + 1 * mockCpsDataService.saveData(expectedDataspaceName, cmHandle, xpath, jsonData) + } + def 'Add list-node elements.'() { + given: 'a cm handle and parent node xpath' + def jsonData = 'some json' + def xpath = '/test-node' + when: 'addListNodeElements is invoked' + objectUnderTest.addListNodeElements(cmHandle, xpath, jsonData) + then: 'the CPS service method is invoked once with the expected parameters' + 1 * mockCpsDataService.saveListNodeData(expectedDataspaceName, cmHandle, xpath, jsonData) + } + def 'Update data node leaves.'() { + given: 'a cm Handle and a cps path' + def xpath = '/xpath' + def jsonData = 'some json' + when: 'updateNodeLeaves is invoked' + objectUnderTest.updateNodeLeaves(cmHandle, xpath, jsonData) + then: 'the persistence service is called once with the correct parameters' + 1 * mockCpsDataService.updateNodeLeaves(expectedDataspaceName, cmHandle, xpath, jsonData) + } + def 'Replace data node tree.'() { + given: 'a cm Handle and a cps path' + def xpath = '/xpath' + def jsonData = 'some json' + when: 'replaceNodeTree is invoked' + objectUnderTest.replaceNodeTree(cmHandle, xpath, jsonData) + then: 'the persistence service is called once with the correct parameters' + 1 * mockCpsDataService.replaceNodeTree(expectedDataspaceName, cmHandle, xpath, jsonData) + } + def 'Register CM Handle Event.'() { + given: 'a registration ' + def dmiPluginRegistration = new DmiPluginRegistration() + dmiPluginRegistration.dmiPlugin = 'my-server' + def cmHandle = new CmHandle() + cmHandle.cmHandle = '123' + cmHandle.cmHandleProperties = [ name1: 'value1', name2: 'value2'] + dmiPluginRegistration.createdCmHandles = [ cmHandle ] + def expectedJsonData = '{"cm-handles":[{"id":"123","dmi-service-name":"my-server","additional-properties":[{"name":"name1","value":"value1"},{"name":"name2","value":"value2"}]}]}' + when: 'registration is updated' + objectUnderTest.updateDmiPluginRegistration(dmiPluginRegistration) + then: 'the CPS service method is invoked once with the expected parameters' + 1 * mockCpsDataService.saveListNodeData('NCMP-Admin', 'ncmp-dmi-registry', '/dmi-registry', expectedJsonData) + } +} -- cgit 1.2.3-korg