diff options
Diffstat (limited to 'cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy')
-rw-r--r-- | cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplSpec.groovy | 159 |
1 files changed, 121 insertions, 38 deletions
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 index b2a3d77cac..e6d18d9156 100644 --- 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 @@ -24,6 +24,7 @@ package org.onap.cps.ncmp.api.impl import org.onap.cps.ncmp.api.impl.operations.YangModelCmHandleRetriever import org.onap.cps.ncmp.api.impl.yangmodels.YangModelCmHandle +import spock.lang.Shared import static org.onap.cps.ncmp.api.impl.operations.DmiOperations.DataStoreEnum.PASSTHROUGH_OPERATIONAL import static org.onap.cps.ncmp.api.impl.operations.DmiOperations.DataStoreEnum.PASSTHROUGH_RUNNING @@ -56,6 +57,10 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { def mockDmiDataOperations = Mock(DmiDataOperations) def nullNetworkCmProxyDataServicePropertyHandler = null def mockYangModelCmHandleRetriever = Mock(YangModelCmHandleRetriever) + def NO_TOPIC = null + def NO_REQUEST_ID = null + @Shared + def OPTIONS_PARAM = '(a=1,b=2)' def objectUnderTest = new NetworkCmProxyDataServiceImpl(mockCpsDataService, spiedJsonObjectMapper, mockDmiDataOperations, mockDmiModelOperations, mockCpsModuleService, mockCpsAdminService, nullNetworkCmProxyDataServicePropertyHandler, mockYangModelCmHandleRetriever) @@ -64,7 +69,6 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { def dataNode = new DataNode(leaves: ['dmi-service-name': 'testDmiService']) - def 'Write resource data for pass-through running from DMI using POST #scenario cm handle properties.'() { given: 'cpsDataService returns valid datanode' mockCpsDataService.getDataNode('NCMP-Admin', 'ncmp-dmi-registry', @@ -104,18 +108,21 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { cmHandleXPath, FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS) >> dataNode and: 'get resource data from DMI is called' mockDmiDataOperations.getResourceDataFromDmi( - 'testCmHandle', - 'testResourceId', - '(a=1,b=2)', - 'testAcceptParam' , - PASSTHROUGH_OPERATIONAL) >> new ResponseEntity<>('result-json', HttpStatus.OK) + 'testCmHandle', + 'testResourceId', + OPTIONS_PARAM, + 'testAcceptParam', + PASSTHROUGH_OPERATIONAL, + NO_REQUEST_ID, + NO_TOPIC) >> new ResponseEntity<>('dmi-response', HttpStatus.OK) when: 'get resource data operational for cm-handle is called' def response = objectUnderTest.getResourceDataOperationalForCmHandle('testCmHandle', - 'testResourceId', - 'testAcceptParam', - '(a=1,b=2)') + 'testResourceId', + 'testAcceptParam', + OPTIONS_PARAM, + NO_TOPIC) then: 'DMI returns a json response' - response == 'result-json' + response == 'dmi-response' } def 'Get resource data for pass-through operational from DMI with Json Processing Exception.'() { @@ -129,9 +136,10 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { >> new ResponseEntity<>('NOK-json', HttpStatus.NOT_FOUND) when: 'get resource data is called' objectUnderTest.getResourceDataOperationalForCmHandle('testCmHandle', - 'testResourceId', - 'testAcceptParam', - '(a=1,b=2)') + 'testResourceId', + 'testAcceptParam', + OPTIONS_PARAM, + NO_TOPIC) then: 'exception is thrown with the expected details' def exceptionThrown = thrown(ServerNcmpException.class) exceptionThrown.details == 'DMI status code: 404, DMI response body: NOK-json' @@ -143,16 +151,19 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { cmHandleXPath, FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS) >> dataNode and: 'DMI returns NOK response' mockDmiDataOperations.getResourceDataFromDmi('testCmHandle', - 'testResourceId', - '(a=1,b=2)', - 'testAcceptParam', - PASSTHROUGH_OPERATIONAL) - >> new ResponseEntity<>('NOK-json', HttpStatus.NOT_FOUND) + 'testResourceId', + OPTIONS_PARAM, + 'testAcceptParam', + PASSTHROUGH_OPERATIONAL, + NO_REQUEST_ID, + NO_TOPIC) + >> new ResponseEntity<>('NOK-json', HttpStatus.NOT_FOUND) when: 'get resource data is called' objectUnderTest.getResourceDataOperationalForCmHandle('testCmHandle', - 'testResourceId', - 'testAcceptParam', - '(a=1,b=2)') + 'testResourceId', + 'testAcceptParam', + OPTIONS_PARAM, + NO_TOPIC) then: 'exception is thrown' def exceptionThrown = thrown(ServerNcmpException.class) and: 'details contains the original response' @@ -165,17 +176,20 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { cmHandleXPath, FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS) >> dataNode and: 'DMI returns valid response and data' mockDmiDataOperations.getResourceDataFromDmi('testCmHandle', - 'testResourceId', - '(a=1,b=2)', - 'testAcceptParam', - PASSTHROUGH_RUNNING) >> new ResponseEntity<>('{result-json}', HttpStatus.OK) + 'testResourceId', + OPTIONS_PARAM, + 'testAcceptParam', + PASSTHROUGH_RUNNING, + NO_REQUEST_ID, + NO_TOPIC) >> new ResponseEntity<>('{dmi-response}', HttpStatus.OK) when: 'get resource data is called' def response = objectUnderTest.getResourceDataPassThroughRunningForCmHandle('testCmHandle', - 'testResourceId', - 'testAcceptParam', - '(a=1,b=2)') + 'testResourceId', + 'testAcceptParam', + OPTIONS_PARAM, + NO_TOPIC) then: 'get resource data returns expected response' - response == '{result-json}' + response == '{dmi-response}' } def 'Get resource data for pass-through running from DMI return NOK response.'() { @@ -184,22 +198,91 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { cmHandleXPath, FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS) >> dataNode and: 'DMI returns NOK response' mockDmiDataOperations.getResourceDataFromDmi('testCmHandle', - 'testResourceId', - '(a=1,b=2)', - 'testAcceptParam', - PASSTHROUGH_RUNNING) - >> new ResponseEntity<>('NOK-json', HttpStatus.NOT_FOUND) + 'testResourceId', + OPTIONS_PARAM, + 'testAcceptParam', + PASSTHROUGH_RUNNING, + NO_REQUEST_ID, + NO_TOPIC) + >> new ResponseEntity<>('NOK-json', HttpStatus.NOT_FOUND) when: 'get resource data is called' objectUnderTest.getResourceDataPassThroughRunningForCmHandle('testCmHandle', - 'testResourceId', - 'testAcceptParam', - '(a=1,b=2)') + 'testResourceId', + 'testAcceptParam', + OPTIONS_PARAM, + NO_TOPIC) then: 'exception is thrown' def exceptionThrown = thrown(ServerNcmpException.class) and: 'details contains the original response' exceptionThrown.details.contains('NOK-json') } + def 'Get resource data for operational from DMI with empty topic sync request.'() { + given: 'cps data service returns valid data node' + mockCpsDataService.getDataNode('NCMP-Admin', 'ncmp-dmi-registry', + cmHandleXPath, FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS) >> dataNode + and: 'dmi data operation returns valid response and data' + mockDmiDataOperations.getResourceDataFromDmi(_, _, _, _, _, NO_REQUEST_ID, NO_TOPIC) + >> new ResponseEntity<>('{dmi-response}', HttpStatus.OK) + when: 'get resource data is called data operational with blank topic' + def responseData = objectUnderTest.getResourceDataOperationalForCmHandle('', '', + '', '', emptyTopic) + then: '(synchronous) the dmi response is expected' + assert responseData == '{dmi-response}' + where: 'the following parameters are used' + scenario | emptyTopic + 'No topic in url' | '' + 'Null topic in url' | null + 'Empty topic in url' | '\"\"' + 'Blank topic in url' | ' ' + } + + def 'Get resource data for data operational from DMI with valid topic i.e. async request.'() { + given: 'cps data service returns valid data node' + mockCpsDataService.getDataNode(*_) >> dataNode + and: 'dmi data operation returns valid response and data' + mockDmiDataOperations.getResourceDataFromDmi(_, _, _, _, _, _, 'my-topic-name') + >> new ResponseEntity<>('{dmi-response}', HttpStatus.OK) + when: 'get resource data is called for data operational with valid topic' + def responseData = objectUnderTest.getResourceDataOperationalForCmHandle('', '', '', '', 'my-topic-name') + then: 'non empty request id is generated' + assert responseData.body.requestId.length() > 0 + } + + def 'Get resource data for pass through running from DMI with valid topic async request.'() { + given: 'cps data service returns valid data node' + mockCpsDataService.getDataNode('NCMP-Admin', 'ncmp-dmi-registry', + cmHandleXPath, FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS) >> dataNode + and: 'dmi data operation returns valid response and data' + mockDmiDataOperations.getResourceDataFromDmi(_, _, _, _, _, _, 'my-topic-name') + >> new ResponseEntity<>('{dmi-response}', HttpStatus.OK) + when: 'get resource data is called for data operational with valid topic' + def responseData = objectUnderTest.getResourceDataPassThroughRunningForCmHandle('', + '', '', OPTIONS_PARAM, 'my-topic-name') + then: 'non empty request id is generated' + assert responseData.body.requestId.length() > 0 + } + + def 'Get resource data for pass through running from DMI sync request where #scenario.'() { + given: 'cps data service returns valid data node' + mockCpsDataService.getDataNode('NCMP-Admin', 'ncmp-dmi-registry', + cmHandleXPath, FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS) >> dataNode + and: 'dmi data operation returns valid response and data' + mockDmiDataOperations.getResourceDataFromDmi(_, _, _, _, _, NO_REQUEST_ID, NO_TOPIC) + >> new ResponseEntity<>('{dmi-response}', HttpStatus.OK) + when: 'get resource data is called for data operational with valid topic' + def responseData = objectUnderTest.getResourceDataPassThroughRunningForCmHandle('', + '', '', '', emptyTopic) + then: '(synchronous) the dmi response is expected' + assert responseData == '{dmi-response}' + where: 'the following parameters are used' + scenario | emptyTopic + 'No topic in url' | '' + 'Null topic in url' | null + 'Empty topic in url' | '\"\"' + 'Blank topic in url' | ' ' + } + def 'Getting Yang Resources.'() { when: 'yang resources is called' objectUnderTest.getYangResourcesModuleReferences('some cm handle') @@ -255,7 +338,7 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { givenOperation, '{some-json}', 'application/json') - then: 'an exception is thrown with the expected error message detailsd with correct operation' + then: 'an exception is thrown with the expected error message details with correct operation' def exceptionThrown = thrown(ServerNcmpException.class) exceptionThrown.getMessage().contains(expectedResponseMessage) where: |