summaryrefslogtreecommitdiffstats
path: root/cps-ncmp-service/src/test/groovy/org
diff options
context:
space:
mode:
authorPriyank Maheshwari <priyank.maheshwari@est.tech>2023-04-03 15:22:28 +0000
committerGerrit Code Review <gerrit@onap.org>2023-04-03 15:22:28 +0000
commit0497e296afb24523d94ce78e9202a4e28a41d7fc (patch)
treedc361526dab3febc17ac0089904528f859ffdebc /cps-ncmp-service/src/test/groovy/org
parent120686f7b5ff0ff873335905593b1e58be0133da (diff)
parent5201f5172ae24eee7d1b743efa18bf56e5319f71 (diff)
Merge "Persist SubscriptionEvent"
Diffstat (limited to 'cps-ncmp-service/src/test/groovy/org')
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumerSpec.groovy36
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/notifications/avc/SubscriptionEventMapperSpec.groovy63
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/subscriptions/SubscriptionPersistenceSpec.groovy65
3 files changed, 155 insertions, 9 deletions
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumerSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumerSpec.groovy
index 7a9dadebc5..248eb8bbe2 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumerSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/event/avc/SubscriptionEventConsumerSpec.groovy
@@ -21,6 +21,8 @@
package org.onap.cps.ncmp.api.impl.event.avc
import com.fasterxml.jackson.databind.ObjectMapper
+import org.onap.cps.ncmp.api.impl.subscriptions.SubscriptionPersistence
+import org.onap.cps.ncmp.api.impl.yangmodels.YangModelSubscriptionEvent
import org.onap.cps.ncmp.api.kafka.MessagingBaseSpec
import org.onap.cps.ncmp.event.model.SubscriptionEvent
import org.onap.cps.ncmp.utils.TestUtils
@@ -32,13 +34,17 @@ import org.springframework.boot.test.context.SpringBootTest
@SpringBootTest(classes = [ObjectMapper, JsonObjectMapper])
class SubscriptionEventConsumerSpec extends MessagingBaseSpec {
- def subscriptionEventForwarder = Mock(SubscriptionEventForwarder)
- def objectUnderTest = new SubscriptionEventConsumer(subscriptionEventForwarder)
+ def mockSubscriptionEventForwarder = Mock(SubscriptionEventForwarder)
+ def mockSubscriptionEventMapper = Mock(SubscriptionEventMapper)
+ def mockSubscriptionPersistence = Mock(SubscriptionPersistence)
+ def objectUnderTest = new SubscriptionEventConsumer(mockSubscriptionEventForwarder, mockSubscriptionEventMapper, mockSubscriptionPersistence)
+
+ def yangModelSubscriptionEvent = new YangModelSubscriptionEvent()
@Autowired
JsonObjectMapper jsonObjectMapper
- def 'Consume and forward valid CM create message'() {
+ def 'Consume, persist and forward valid CM create message'() {
given: 'an event with data category CM'
def jsonData = TestUtils.getResourceFileContent('avcSubscriptionCreationEvent.json')
def testEventSent = jsonObjectMapper.convertJsonString(jsonData, SubscriptionEvent.class)
@@ -46,11 +52,15 @@ class SubscriptionEventConsumerSpec extends MessagingBaseSpec {
objectUnderTest.notificationFeatureEnabled = true
when: 'the valid event is consumed'
objectUnderTest.consumeSubscriptionEvent(testEventSent)
- then: 'the event is forwarded'
- 1 * subscriptionEventForwarder.forwardCreateSubscriptionEvent(testEventSent)
+ then: 'the event is mapped to a yangModelSubscription'
+ 1 * mockSubscriptionEventMapper.toYangModelSubscriptionEvent(testEventSent) >> yangModelSubscriptionEvent
+ and: 'the event is persisted'
+ 1 * mockSubscriptionPersistence.saveSubscriptionEvent(yangModelSubscriptionEvent)
+ and: 'the event is forwarded'
+ 1 * mockSubscriptionEventForwarder.forwardCreateSubscriptionEvent(testEventSent)
}
- def 'Consume valid CM create message where notifications are disabled'() {
+ def 'Consume and persist valid CM create message where notifications are disabled'() {
given: 'an event with data category CM'
def jsonData = TestUtils.getResourceFileContent('avcSubscriptionCreationEvent.json')
def testEventSent = jsonObjectMapper.convertJsonString(jsonData, SubscriptionEvent.class)
@@ -58,8 +68,12 @@ class SubscriptionEventConsumerSpec extends MessagingBaseSpec {
objectUnderTest.notificationFeatureEnabled = false
when: 'the valid event is consumed'
objectUnderTest.consumeSubscriptionEvent(testEventSent)
- then: 'the event is forwarded'
- 0 * subscriptionEventForwarder.forwardCreateSubscriptionEvent(testEventSent)
+ then: 'the event is mapped to a yangModelSubscription'
+ 1 * mockSubscriptionEventMapper.toYangModelSubscriptionEvent(testEventSent) >> yangModelSubscriptionEvent
+ and: 'the event is persisted'
+ 1 * mockSubscriptionPersistence.saveSubscriptionEvent(yangModelSubscriptionEvent)
+ and: 'the event is not forwarded'
+ 0 * mockSubscriptionEventForwarder.forwardCreateSubscriptionEvent(*_)
}
def 'Consume valid FM message'() {
@@ -72,8 +86,12 @@ class SubscriptionEventConsumerSpec extends MessagingBaseSpec {
objectUnderTest.consumeSubscriptionEvent(testEventSent)
then: 'no exception is thrown'
noExceptionThrown()
+ and: 'the event is not mapped to a yangModelSubscription'
+ 0 * mockSubscriptionEventMapper.toYangModelSubscriptionEvent(testEventSent) >> yangModelSubscriptionEvent
+ and: 'the event is not persisted'
+ 0 * mockSubscriptionPersistence.saveSubscriptionEvent(yangModelSubscriptionEvent)
and: 'No event is forwarded'
- 0 * subscriptionEventForwarder.forwardCreateSubscriptionEvent(*_)
+ 0 * mockSubscriptionEventForwarder.forwardCreateSubscriptionEvent(*_)
}
def 'Consume event with wrong datastore causes an exception'() {
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/notifications/avc/SubscriptionEventMapperSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/notifications/avc/SubscriptionEventMapperSpec.groovy
new file mode 100644
index 0000000000..93346303a8
--- /dev/null
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/notifications/avc/SubscriptionEventMapperSpec.groovy
@@ -0,0 +1,63 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (c) 2023 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.notifications.avc
+
+import com.fasterxml.jackson.databind.ObjectMapper
+import org.mapstruct.factory.Mappers
+import org.onap.cps.ncmp.api.impl.event.avc.SubscriptionEventMapper
+import org.onap.cps.ncmp.api.impl.subscriptions.SubscriptionStatus
+import org.onap.cps.ncmp.event.model.SubscriptionEvent
+import org.onap.cps.ncmp.utils.TestUtils
+import org.onap.cps.utils.JsonObjectMapper
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.context.SpringBootTest
+import spock.lang.Specification
+
+
+@SpringBootTest(classes = [JsonObjectMapper, ObjectMapper])
+class SubscriptionEventMapperSpec extends Specification {
+
+ SubscriptionEventMapper objectUnderTest = Mappers.getMapper(SubscriptionEventMapper)
+
+ @Autowired
+ JsonObjectMapper jsonObjectMapper
+
+ def 'Map subscription event to yang model subscription event where #scenario'() {
+ given: 'a Subscription Event'
+ def jsonData = TestUtils.getResourceFileContent('avcSubscriptionCreationEvent.json')
+ def testEventToMap = jsonObjectMapper.convertJsonString(jsonData, SubscriptionEvent.class)
+ when: 'the event is mapped to a yang model subscription'
+ def result = objectUnderTest.toYangModelSubscriptionEvent(testEventToMap)
+ then: 'the resulting yang model subscription event contains the correct clientId'
+ assert result.clientId == "SCO-9989752"
+ and: 'client name'
+ assert result.subscriptionName == "cm-subscription-001"
+ and: 'is tagged value is false'
+ assert !result.isTagged
+ and: 'predicate targets '
+ assert result.predicates.targetCmHandles.cmHandleId == ["CMHandle1", "CMHandle2", "CMHandle3"]
+ and: 'the status for these targets is set to pending'
+ assert result.predicates.targetCmHandles.status == [SubscriptionStatus.PENDING, SubscriptionStatus.PENDING, SubscriptionStatus.PENDING]
+ and: 'the topic is null'
+ assert result.topic == null
+ }
+
+} \ No newline at end of file
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/subscriptions/SubscriptionPersistenceSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/subscriptions/SubscriptionPersistenceSpec.groovy
new file mode 100644
index 0000000000..dbc8104767
--- /dev/null
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/subscriptions/SubscriptionPersistenceSpec.groovy
@@ -0,0 +1,65 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2023 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.subscriptions
+
+import com.fasterxml.jackson.databind.ObjectMapper
+import org.onap.cps.api.CpsDataService
+import org.onap.cps.ncmp.api.impl.yangmodels.YangModelSubscriptionEvent
+import org.onap.cps.utils.JsonObjectMapper
+import spock.lang.Specification
+
+import static org.onap.cps.ncmp.api.impl.constants.DmiRegistryConstants.NO_TIMESTAMP
+
+class SubscriptionPersistenceSpec extends Specification {
+
+ private static final String SUBSCRIPTION_DATASPACE_NAME = "NCMP-Admin";
+ private static final String SUBSCRIPTION_ANCHOR_NAME = "AVC-Subscriptions";
+ private static final String SUBSCRIPTION_REGISTRY_PARENT = "/subscription-registry";
+
+ def jsonObjectMapper = new JsonObjectMapper(new ObjectMapper())
+
+ def mockCpsDataService = Mock(CpsDataService)
+
+ def objectUnderTest = new SubscriptionPersistenceImpl(jsonObjectMapper, mockCpsDataService)
+
+ def 'save a subscription event' () {
+ given: 'a yang model subscription event'
+ def yangModelSubscriptionEvent = new YangModelSubscriptionEvent();
+ yangModelSubscriptionEvent.setClientId('some-client-id')
+ yangModelSubscriptionEvent.setSubscriptionName('some-subscription-name')
+ yangModelSubscriptionEvent.setTagged(true)
+ yangModelSubscriptionEvent.setTopic('some-topic')
+ def predicates = new YangModelSubscriptionEvent.Predicates(datastore: 'some-datastore',
+ targetCmHandles: [new YangModelSubscriptionEvent.TargetCmHandle('cmhandle1'), new YangModelSubscriptionEvent.TargetCmHandle('cmhandle2')])
+ yangModelSubscriptionEvent.setPredicates(predicates)
+ when: 'the yangModelSubscriptionEvent is saved'
+ objectUnderTest.saveSubscriptionEvent(yangModelSubscriptionEvent)
+ then: 'the cpsDataService is called with the correct data'
+ 1 * mockCpsDataService.saveListElements(SUBSCRIPTION_DATASPACE_NAME, SUBSCRIPTION_ANCHOR_NAME,
+ SUBSCRIPTION_REGISTRY_PARENT,
+ '{"subscription":[{' +
+ '"topic":"some-topic",' +
+ '"predicates":{"datastore":"some-datastore","targetCmHandles":[{"cmHandleId":"cmhandle1","status":"PENDING"},{"cmHandleId":"cmhandle2","status":"PENDING"}]},' +
+ '"clientID":"some-client-id","subscriptionName":"some-subscription-name","isTagged":true}]}',
+ NO_TIMESTAMP)
+ }
+
+}