diff options
author | mpriyank <priyank.maheshwari@est.tech> | 2022-06-10 12:09:20 +0100 |
---|---|---|
committer | mpriyank <priyank.maheshwari@est.tech> | 2022-06-15 10:17:40 +0100 |
commit | f174640d9aebe8b962de651d954243f434cc5eab (patch) | |
tree | b24d1d7f9393211e25efc5d0ea317a4e5be7a6b0 /cps-ncmp-service/src/test/groovy/org | |
parent | 708d2b566a8b8cdf48e1dfe337369c946cec0e02 (diff) |
NcmpEvent creation and Mapping
- Mapping class to create header and event payload based on type of
operation i.e CREATE, UPDATE and DELETE.
- Service class to get CmHandle public properties, create event and
delegate request to event publisher.
- Modification in NcmpEvent schema json to mark field as String instead
of URI
- Test scenarios
- UPCOMING: Call the service method from relevant code to actually
publish the event.
Issue-ID: CPS-1037
Change-Id: I6bb7de4b27e602c4d8ee6a5528a866e5f7e8799a
Signed-off-by: mpriyank <priyank.maheshwari@est.tech>
Diffstat (limited to 'cps-ncmp-service/src/test/groovy/org')
2 files changed, 121 insertions, 0 deletions
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/NcmpEventsCreatorSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/NcmpEventsCreatorSpec.groovy new file mode 100644 index 0000000000..04eb0bf2bb --- /dev/null +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/NcmpEventsCreatorSpec.groovy @@ -0,0 +1,57 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2022 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.ncmp.api.impl.event + +import org.onap.cps.ncmp.api.inventory.CmHandleState +import org.onap.cps.ncmp.api.inventory.CompositeStateBuilder +import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle +import spock.lang.Specification + +import static org.onap.ncmp.cmhandle.lcm.event.Event.Operation.CREATE +import static org.onap.ncmp.cmhandle.lcm.event.Event.Operation.DELETE +import static org.onap.ncmp.cmhandle.lcm.event.Event.Operation.UPDATE + +class NcmpEventsCreatorSpec extends Specification { + + def objectUnderTest = new NcmpEventsCreator() + def cmHandleId = 'test-cm-handle' + + def 'Map the NcmpEvent for operation #operation'() { + given: 'NCMP cm handle details' + def ncmpServiceCmHandle = new NcmpServiceCmHandle(cmHandleId: cmHandleId, compositeState: new CompositeStateBuilder().withCmHandleState(CmHandleState.READY).build(), + publicProperties: ['publicProperty1': 'value1', 'publicProperty2': 'value2']) + when: 'the event is populated' + def result = objectUnderTest.populateNcmpEvent(cmHandleId, operation, ncmpServiceCmHandle) + then: 'event header is mapped correctly' + assert result.eventSource == 'org.onap.ncmp' + assert result.eventCorrelationId == cmHandleId + and: 'event payload is mapped correctly' + assert result.event.operation == operation + assert result.event.cmhandleProperties.size() == cmHandlePropertiesListSize + assert result.event.cmhandleProperties[0] == cmHandleProperties + where: 'the following operations are used' + operation | cmHandlePropertiesListSize | cmHandleProperties + CREATE | 1 | ['publicProperty1': 'value1', 'publicProperty2': 'value2'] + UPDATE | 1 | ['publicProperty1': 'value1', 'publicProperty2': 'value2'] + DELETE | 0 | null + + } +} diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/NcmpEventsServiceSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/NcmpEventsServiceSpec.groovy new file mode 100644 index 0000000000..9774235561 --- /dev/null +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/NcmpEventsServiceSpec.groovy @@ -0,0 +1,64 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2022 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.ncmp.api.impl.event + +import org.onap.cps.ncmp.api.impl.utils.YangDataConverter +import org.onap.cps.ncmp.api.impl.yangmodels.YangModelCmHandle +import org.onap.cps.ncmp.api.inventory.InventoryPersistence +import org.onap.ncmp.cmhandle.lcm.event.NcmpEvent +import spock.lang.Specification + +import static org.onap.ncmp.cmhandle.lcm.event.Event.Operation.CREATE +import static org.onap.ncmp.cmhandle.lcm.event.Event.Operation.DELETE +import static org.onap.ncmp.cmhandle.lcm.event.Event.Operation.UPDATE + +class NcmpEventsServiceSpec extends Specification { + + def mockInventoryPersistence = Mock(InventoryPersistence) + def mockNcmpEventsPublisher = Mock(NcmpEventsPublisher) + def mockNcmpEventsMapper = Mock(NcmpEventsCreator) + + def objectUnderTest = new NcmpEventsService(mockInventoryPersistence, mockNcmpEventsPublisher, mockNcmpEventsMapper) + + def 'Create and Publish event for #operation'() { + given: 'a cm handle id and operation and responses are mocked' + mockResponses('test-cm-handle-id', operation, 'test-topic') + when: 'service is called to publish ncmp event' + objectUnderTest.publishNcmpEvent('test-cm-handle-id', operation) + then: 'no exception is thrown' + noExceptionThrown() + where: 'for following operations' + operation << [CREATE, UPDATE, DELETE] + } + + def mockResponses(cmHandleId, operation, topicName) { + + def yangModelCmHandle = new YangModelCmHandle(id: cmHandleId, publicProperties: [new YangModelCmHandle.Property('publicProperty1', 'value1')], dmiProperties: []) + def ncmpEvent = new NcmpEvent(eventId: UUID.randomUUID().toString(), eventCorrelationId: cmHandleId) + def ncmpServiceCmhandle = YangDataConverter.convertYangModelCmHandleToNcmpServiceCmHandle(yangModelCmHandle) + + mockInventoryPersistence.getYangModelCmHandle(cmHandleId) >> yangModelCmHandle + mockNcmpEventsMapper.populateNcmpEvent(cmHandleId, operation, ncmpServiceCmhandle) >> ncmpEvent + mockNcmpEventsPublisher.publishEvent(topicName, cmHandleId, ncmpEvent) >> {} + } + + +} |