summaryrefslogtreecommitdiffstats
path: root/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/SyncUtilsSpec.groovy
diff options
context:
space:
mode:
Diffstat (limited to 'cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/SyncUtilsSpec.groovy')
-rw-r--r--cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/SyncUtilsSpec.groovy48
1 files changed, 45 insertions, 3 deletions
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/SyncUtilsSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/SyncUtilsSpec.groovy
index 15d1efe06..14f201575 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/SyncUtilsSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/sync/SyncUtilsSpec.groovy
@@ -21,11 +21,19 @@
package org.onap.cps.ncmp.api.inventory.sync
+import com.fasterxml.jackson.databind.JsonNode
+import com.fasterxml.jackson.databind.ObjectMapper
+import org.onap.cps.ncmp.api.impl.operations.DmiDataOperations
+import org.onap.cps.ncmp.api.impl.operations.DmiOperations
import org.onap.cps.ncmp.api.inventory.CmHandleState
import org.onap.cps.ncmp.api.inventory.CompositeState
import org.onap.cps.ncmp.api.inventory.InventoryPersistence
import org.onap.cps.ncmp.api.inventory.LockReasonCategory
+import org.onap.cps.ncmp.api.inventory.SyncState
import org.onap.cps.spi.model.DataNode
+import org.onap.cps.utils.JsonObjectMapper
+import org.springframework.http.HttpStatus
+import org.springframework.http.ResponseEntity
import spock.lang.Shared
import spock.lang.Specification
@@ -33,7 +41,11 @@ class SyncUtilsSpec extends Specification{
def mockInventoryPersistence = Mock(InventoryPersistence)
- def objectUnderTest = new SyncUtils(mockInventoryPersistence)
+ def mockDmiDataOperations = Mock(DmiDataOperations)
+
+ def jsonObjectMapper = new JsonObjectMapper(new ObjectMapper())
+
+ def objectUnderTest = new SyncUtils(mockInventoryPersistence, mockDmiDataOperations, jsonObjectMapper)
@Shared
def dataNode = new DataNode(leaves: ['id': 'cm-handle-123'])
@@ -67,15 +79,45 @@ class SyncUtilsSpec extends Specification{
'does not exist' | null || 'Attempt #1 failed: new error message'
'exists' | CompositeState.LockReason.builder().details("Attempt #2 failed: some error message").build() || 'Attempt #3 failed: new error message'
}
+
def 'Get all locked Cm-Handle where Lock Reason is LOCKED_MISBEHAVING cm handle #scenario'() {
given: 'the cps (persistence service) returns a collection of data nodes'
- mockInventoryPersistence.getCmHandlesByCpsPath(
+ mockInventoryPersistence.getCmHandleDataNodesByCpsPath(
'//lock-reason[@reason="LOCKED_MISBEHAVING"]/ancestor::cm-handles') >> [dataNode ]
when: 'get locked Misbehaving cm handle is called'
- def result = objectUnderTest.getLockedMisbehavingCmHandles()
+ def result = objectUnderTest.getLockedMisbehavingYangModelCmHandles()
then: 'the returned cm handle collection is the correct size'
result.size() == 1
and: 'the correct cm handle is returned'
result[0].id == 'cm-handle-123'
}
+
+ def 'Get a Cm-Handle where Operational Sync state is UnSynchronized and Cm-handle state is READY and #scenario'() {
+ given: 'the inventory persistence service returns a collection of data nodes'
+ mockInventoryPersistence.getCmHandlesByOperationalSyncState(SyncState.UNSYNCHRONIZED) >> unSynchronizedDataNodes
+ mockInventoryPersistence.getCmHandlesByIdAndState("cm-handle-123", CmHandleState.READY) >> readyDataNodes
+ when: 'get advised cm handle is called'
+ objectUnderTest.getAnUnSynchronizedReadyCmHandle()
+ then: 'the returned data node collection is the correct size'
+ readyDataNodes.size() == expectedDataNodeSize
+ and: 'get yang model cm handles is invoked the correct number of times'
+ expectedCallsToGetYangModelCmHandle * mockInventoryPersistence.getYangModelCmHandle('cm-handle-123')
+ where: 'the following scenarios are used'
+ scenario | unSynchronizedDataNodes | readyDataNodes || expectedCallsToGetYangModelCmHandle | expectedDataNodeSize
+ 'exists' | [dataNode] | [dataNode] || 1 | 1
+ 'unsynchronized exist but not ready' | [dataNode] | [] || 0 | 0
+ 'does not exist' | [] | [] || 0 | 0
+ }
+
+ def 'Get resource data through DMI Operations #scenario'() {
+ given: 'the inventory persistence service returns a collection of data nodes'
+ def jsonString = '{"stores:bookstore":{"categories":[{"code":"01"}]}}'
+ JsonNode jsonNode = jsonObjectMapper.convertToJsonNode(jsonString);
+ def responseEntity = new ResponseEntity<>(jsonNode, HttpStatus.OK)
+ mockDmiDataOperations.getResourceDataFromDmi('cm-handle-123', DmiOperations.DataStoreEnum.PASSTHROUGH_OPERATIONAL, _) >> responseEntity
+ when: 'get resource data is called'
+ def result = objectUnderTest.getResourceData('cm-handle-123')
+ then: 'the returned data is correct'
+ result == jsonString
+ }
}