From ea01d09861289ff162dff318713d1c24eba89259 Mon Sep 17 00:00:00 2001 From: sourabh_sourabh Date: Mon, 28 Mar 2022 13:21:55 +0100 Subject: Async: NCMP Rest impl. including Request ID generation - Restructured code and moved some of them at controller and service layer. - Unit is fixed and organized to it's belonging classes. Issue-ID: CPS-828 Signed-off-by: sourabh_sourabh Change-Id: I0919218e35b1d11cb579d707f376b76de80409da --- .../impl/NetworkCmProxyDataServiceImplSpec.groovy | 82 +++------------------- 1 file changed, 10 insertions(+), 72 deletions(-) (limited to 'cps-ncmp-service/src/test') 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 489c71c0e9..2d01dba522 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 @@ -23,7 +23,6 @@ package org.onap.cps.ncmp.api.impl import org.onap.cps.ncmp.api.impl.exception.HttpClientRequestException -import org.onap.cps.ncmp.api.impl.exception.InvalidTopicException import org.onap.cps.ncmp.api.impl.operations.YangModelCmHandleRetriever import org.onap.cps.ncmp.api.impl.yangmodels.YangModelCmHandle import spock.lang.Shared @@ -119,7 +118,8 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { def response = objectUnderTest.getResourceDataOperationalForCmHandle('testCmHandle', 'testResourceId', OPTIONS_PARAM, - NO_TOPIC) + NO_TOPIC, + NO_REQUEST_ID) then: 'DMI returns a json response' response == 'dmi-response' } @@ -137,7 +137,8 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { objectUnderTest.getResourceDataOperationalForCmHandle('testCmHandle', 'testResourceId', OPTIONS_PARAM, - NO_TOPIC) + NO_TOPIC, + NO_REQUEST_ID) then: 'exception is thrown with the expected response code and details' def exceptionThrown = thrown(HttpClientRequestException.class) exceptionThrown.details.contains('NOK-json') @@ -160,7 +161,8 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { objectUnderTest.getResourceDataOperationalForCmHandle('testCmHandle', 'testResourceId', OPTIONS_PARAM, - NO_TOPIC) + NO_TOPIC, + NO_REQUEST_ID) then: 'exception is thrown' def exceptionThrown = thrown(HttpClientRequestException.class) and: 'details contain the original response' @@ -183,7 +185,8 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { def response = objectUnderTest.getResourceDataPassThroughRunningForCmHandle('testCmHandle', 'testResourceId', OPTIONS_PARAM, - NO_TOPIC) + NO_TOPIC, + NO_REQUEST_ID) then: 'get resource data returns expected response' response == '{dmi-response}' } @@ -204,7 +207,8 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { objectUnderTest.getResourceDataPassThroughRunningForCmHandle('testCmHandle', 'testResourceId', OPTIONS_PARAM, - NO_TOPIC) + NO_TOPIC, + NO_REQUEST_ID) then: 'exception is thrown' def exceptionThrown = thrown(HttpClientRequestException.class) and: 'details contain the original response' @@ -212,72 +216,6 @@ class NetworkCmProxyDataServiceImplSpec extends Specification { exceptionThrown.httpStatus == HttpStatus.NOT_FOUND.value() } - def 'DMI Operational data request with #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 data operational with blank topic' - def responseData = objectUnderTest.getResourceDataOperationalForCmHandle('', '', - '', emptyTopic) - then: 'a invalid topic exception is thrown' - thrown(InvalidTopicException) - where: 'the following parameters are used' - scenario | emptyTopic - 'no topic value in url' | '' - 'empty topic value in url' | '\"\"' - 'blank topic value in url' | ' ' - 'invalid non-empty topic value in url' | '1_5_*_#' - } - - 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 'DMI pass through running data request with #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: 'a invalid topic exception is thrown' - thrown(InvalidTopicException) - where: 'the following parameters are used' - scenario | emptyTopic - 'no topic value in url' | '' - 'empty topic value in url' | '\"\"' - 'blank topic value in url' | ' ' - 'invalid non-empty topic value in url' | '1_5_*_#' - } - def 'Getting Yang Resources.'() { when: 'yang resources is called' objectUnderTest.getYangResourcesModuleReferences('some-cm-handle') -- cgit 1.2.3-korg