Enable/Disable Data Sync for Cm Handle
[cps.git] / cps-ncmp-rest / src / test / groovy / org / onap / cps / ncmp / rest / controller / NetworkCmProxyControllerSpec.groovy
index 93d8358..fde3087 100644 (file)
@@ -26,12 +26,13 @@ package org.onap.cps.ncmp.rest.controller
 import org.mapstruct.factory.Mappers
 import org.onap.cps.ncmp.api.inventory.CmHandleState
 import org.onap.cps.ncmp.api.inventory.CompositeState
-import org.onap.cps.ncmp.api.inventory.SyncState
 import org.onap.cps.ncmp.api.inventory.LockReasonCategory
+import org.onap.cps.ncmp.api.inventory.DataStoreSyncState
 import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle
 import org.onap.cps.ncmp.rest.mapper.CmHandleStateMapper
 import org.onap.cps.ncmp.rest.executor.CpsNcmpTaskExecutor
 import org.onap.cps.ncmp.rest.util.DeprecationHelper
+import org.onap.cps.spi.model.ModuleDefinition
 import spock.lang.Shared
 
 import java.time.OffsetDateTime
@@ -408,16 +409,44 @@ class NetworkCmProxyControllerSpec extends Specification {
             ':passthrough-running'     | 'passthrough-running'
     }
 
+    def 'Get module definitions based on cmHandleId.' () {
+        when: 'get module definition request is performed'
+            def response = mvc.perform(get("$ncmpBasePathV1/ch/some-cmhandle/modules/definitions"))
+                    .andReturn().response
+        then: 'ncmp service method to get module definitions is called'
+            mockNetworkCmProxyDataService.getModuleDefinitionsByCmHandleId('some-cmhandle')
+                    >> [new ModuleDefinition('sampleModuleName', '2021-10-03',
+                    'module sampleModuleName{ sample module content }')]
+        and: 'response contains an array with the module name, revision and content'
+            response.getContentAsString() == '[{"moduleName":"sampleModuleName","revision":"2021-10-03","content":"module sampleModuleName{ sample module content }"}]'
+        and: 'response returns an OK http code'
+            response.status == HttpStatus.OK.value()
+    }
+
+    def 'Set the data sync enabled based on the cm handle id and the data sync flag is #scenario' () {
+        when: 'the set data sync enabled request is invoked'
+            def response = mvc.perform(put("$ncmpBasePathV1/ch/some-cm-handle-id/data-sync?dataSyncEnabled=" + dataSyncEnabledFlag))
+                    .andReturn().response
+        then: 'method to set data sync enabled is called'
+            1 * mockNetworkCmProxyDataService.setDataSyncEnabled('some-cm-handle-id', dataSyncEnabledFlag)
+        and: 'the response returns an OK http code'
+            response.status == HttpStatus.OK.value()
+        where: 'the following parameters are used'
+        scenario     |  dataSyncEnabledFlag
+        'enabled'    |  true
+        'disabled'   |  false
+    }
+
     def dataStores() {
         DataStores.builder()
             .operationalDataStore(Operational.builder()
-                .syncState(SyncState.NONE_REQUESTED)
+                .dataStoreSyncState(DataStoreSyncState.NONE_REQUESTED)
                 .lastSyncTime(formattedDateAndTime.toString()).build()).build()
     }
 
     def compositeStateTestObject() {
         new CompositeState(cmHandleState: CmHandleState.ADVISED,
-            lockReason: CompositeState.LockReason.builder().lockReasonCategory(LockReasonCategory.LOCKED_MISBEHAVING).details("lock misbehaving details").build(),
+            lockReason: CompositeState.LockReason.builder().lockReasonCategory(LockReasonCategory.LOCKED_MODULE_SYNC_FAILED).details("lock details").build(),
             lastUpdateTime: formattedDateAndTime.toString(),
             dataSyncEnabled: false,
             dataStores: dataStores())
@@ -433,7 +462,7 @@ class NetworkCmProxyControllerSpec extends Specification {
             '"state":',
             '"cmHandleState":"ADVISED"',
             '"reason":"LOCKED_MISBEHAVING"',
-            '"details":"lock misbehaving details"',
+            '"details":"lock details"',
             '"lastUpdateTime":"2022-12-31T20:30:40.000+0000"',
             '"dataSyncEnabled":false',
             '"dataSyncState":',