diff options
author | 2021-09-30 16:53:42 +0100 | |
---|---|---|
committer | 2021-10-01 08:42:00 +0100 | |
commit | 4cbd60b974fa68cab8501e9f3e9edef134eac09b (patch) | |
tree | 2eb45ddbf569afd841d012a43ebbeaab0eb4a358 /src | |
parent | 7e148f8eda2c5741d5c08ae37c6fd36f8d861659 (diff) |
Fix issues with SOnar Qube coverage report
-removed invalid jacoco exclude
-removed strange (generated/accidental?) comment in main pom header
-moved manually coded 'models' package (included in coverage now) to separate it
from swagger generated package/classes with same name (exluded in coverage)
-added some missing test scenarios
-increased coverage limit from 70 to 98% to prevent regression
Issue-ID: CPS-475
Signed-off-by: ToineSiebelink <toine.siebelink@est.tech>
Change-Id: I2f1c276c543926d2d259e33b418f21de4abfea96
Diffstat (limited to 'src')
17 files changed, 245 insertions, 35 deletions
diff --git a/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java b/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java index ff3cefcd..0afefeb0 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/rest/controller/DmiRestController.java @@ -20,6 +20,8 @@ package org.onap.cps.ncmp.dmi.rest.controller; +import static org.onap.cps.ncmp.dmi.model.DmiModuleReadRequestBody.OperationEnum.READ; + import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.List; @@ -30,12 +32,12 @@ import org.onap.cps.ncmp.dmi.model.CmHandles; import org.onap.cps.ncmp.dmi.model.DataAccessReadRequest; import org.onap.cps.ncmp.dmi.model.DataAccessWriteRequest; import org.onap.cps.ncmp.dmi.model.DmiModuleReadRequestBody; -import org.onap.cps.ncmp.dmi.model.ModuleReference; import org.onap.cps.ncmp.dmi.model.ModuleSet; import org.onap.cps.ncmp.dmi.model.YangResources; import org.onap.cps.ncmp.dmi.rest.api.DmiPluginApi; import org.onap.cps.ncmp.dmi.rest.api.DmiPluginInternalApi; import org.onap.cps.ncmp.dmi.service.DmiService; +import org.onap.cps.ncmp.dmi.service.model.ModuleReference; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -68,7 +70,7 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi { public ResponseEntity<YangResources> retrieveModuleResources( final @Valid DmiModuleReadRequestBody dmiModuleReadRequestBody, final String cmHandle) { - if (dmiModuleReadRequestBody.getOperation().toString().equals("read")) { + if (READ.equals(dmiModuleReadRequestBody.getOperation())) { final var moduleReferenceList = convertRestObjectToJavaApiObject(dmiModuleReadRequestBody); final var response = dmiService.getModuleResources(cmHandle, moduleReferenceList); return new ResponseEntity<>(response, HttpStatus.OK); @@ -172,4 +174,4 @@ public class DmiRestController implements DmiPluginApi, DmiPluginInternalApi { .convertValue(dmiModuleSchemaReadRequestBody.getData().getModules(), new TypeReference<List<ModuleReference>>() {}); } -}
\ No newline at end of file +} diff --git a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiService.java b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiService.java index bd0dc600..753810a2 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiService.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiService.java @@ -24,9 +24,9 @@ import java.util.List; import java.util.Map; import javax.validation.constraints.NotNull; import org.onap.cps.ncmp.dmi.exception.DmiException; -import org.onap.cps.ncmp.dmi.model.ModuleReference; import org.onap.cps.ncmp.dmi.model.ModuleSet; import org.onap.cps.ncmp.dmi.model.YangResources; +import org.onap.cps.ncmp.dmi.service.model.ModuleReference; /** * Interface for handling Dmi plugin Data. @@ -108,4 +108,4 @@ public interface DmiService { */ String writeResourceDataPassthroughForCmHandle(String cmHandle, String resourceIdentifier, String dataType, String data); -}
\ No newline at end of file +} diff --git a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java index 182bdd84..844cc4de 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java @@ -37,16 +37,16 @@ import org.onap.cps.ncmp.dmi.exception.DmiException; import org.onap.cps.ncmp.dmi.exception.ModuleResourceNotFoundException; import org.onap.cps.ncmp.dmi.exception.ModulesNotFoundException; import org.onap.cps.ncmp.dmi.exception.ResourceDataNotFound; -import org.onap.cps.ncmp.dmi.model.CmHandleOperation; -import org.onap.cps.ncmp.dmi.model.CreatedCmHandle; -import org.onap.cps.ncmp.dmi.model.ModuleReference; -import org.onap.cps.ncmp.dmi.model.ModuleSchemaProperties; -import org.onap.cps.ncmp.dmi.model.ModuleSchemas; import org.onap.cps.ncmp.dmi.model.ModuleSet; import org.onap.cps.ncmp.dmi.model.ModuleSetSchemas; import org.onap.cps.ncmp.dmi.model.YangResource; import org.onap.cps.ncmp.dmi.model.YangResources; import org.onap.cps.ncmp.dmi.service.client.NcmpRestClient; +import org.onap.cps.ncmp.dmi.service.model.CmHandleOperation; +import org.onap.cps.ncmp.dmi.service.model.CreatedCmHandle; +import org.onap.cps.ncmp.dmi.service.model.ModuleReference; +import org.onap.cps.ncmp.dmi.service.model.ModuleSchemaProperties; +import org.onap.cps.ncmp.dmi.service.model.ModuleSchemas; import org.onap.cps.ncmp.dmi.service.operation.SdncOperations; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -269,4 +269,4 @@ public class DmiServiceImpl implements DmiService { return responseBodyAsJsonObject.getAsJsonObject(IETF_NETCONF_MONITORING_OUTPUT).getAsJsonPrimitive("data") .toString(); } -}
\ No newline at end of file +} diff --git a/src/main/java/org/onap/cps/ncmp/dmi/model/CmHandleOperation.java b/src/main/java/org/onap/cps/ncmp/dmi/service/model/CmHandleOperation.java index 8ddd42f8..82eac92a 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/model/CmHandleOperation.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/service/model/CmHandleOperation.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.cps.ncmp.dmi.model; +package org.onap.cps.ncmp.dmi.service.model; import com.fasterxml.jackson.annotation.JsonInclude; import java.util.List; @@ -32,4 +32,4 @@ public class CmHandleOperation { private String dmiPlugin; private List<CreatedCmHandle> createdCmHandles; -}
\ No newline at end of file +} diff --git a/src/main/java/org/onap/cps/ncmp/dmi/model/CreatedCmHandle.java b/src/main/java/org/onap/cps/ncmp/dmi/service/model/CreatedCmHandle.java index 9198d7da..6ab6a01e 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/model/CreatedCmHandle.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/service/model/CreatedCmHandle.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.cps.ncmp.dmi.model; +package org.onap.cps.ncmp.dmi.service.model; import com.fasterxml.jackson.annotation.JsonInclude; import java.util.Map; @@ -33,4 +33,4 @@ public class CreatedCmHandle { private String cmHandle; private Map<String, String> cmHandleProperties; -}
\ No newline at end of file +} diff --git a/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleReference.java b/src/main/java/org/onap/cps/ncmp/dmi/service/model/ModuleReference.java index cb9b7cbb..75c37dff 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleReference.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/service/model/ModuleReference.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.cps.ncmp.dmi.model; +package org.onap.cps.ncmp.dmi.service.model; import lombok.EqualsAndHashCode; import lombok.Getter; diff --git a/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemaList.java b/src/main/java/org/onap/cps/ncmp/dmi/service/model/ModuleSchemaList.java index 1e7dcb0a..a4af1761 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemaList.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/service/model/ModuleSchemaList.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.cps.ncmp.dmi.model; +package org.onap.cps.ncmp.dmi.service.model; import java.util.List; import lombok.Getter; diff --git a/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemaProperties.java b/src/main/java/org/onap/cps/ncmp/dmi/service/model/ModuleSchemaProperties.java index 507758ad..6de7d131 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemaProperties.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/service/model/ModuleSchemaProperties.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.cps.ncmp.dmi.model; +package org.onap.cps.ncmp.dmi.service.model; import java.util.List; import lombok.Getter; diff --git a/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemas.java b/src/main/java/org/onap/cps/ncmp/dmi/service/model/ModuleSchemas.java index 5945168b..a7b2430d 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/model/ModuleSchemas.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/service/model/ModuleSchemas.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.cps.ncmp.dmi.model; +package org.onap.cps.ncmp.dmi.service.model; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Getter; diff --git a/src/test/groovy/org/onap/cps/ncmp/dmi/config/DmiConfigurationSpec.groovy b/src/test/groovy/org/onap/cps/ncmp/dmi/config/DmiConfigurationSpec.groovy new file mode 100644 index 00000000..1798c9f2 --- /dev/null +++ b/src/test/groovy/org/onap/cps/ncmp/dmi/config/DmiConfigurationSpec.groovy @@ -0,0 +1,66 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 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.dmi.config + +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.boot.web.client.RestTemplateBuilder +import org.springframework.test.context.ContextConfiguration +import spock.lang.Specification + +@SpringBootTest +@ContextConfiguration(classes = [DmiConfiguration.CpsProperties, DmiConfiguration.SdncProperties]) +class DmiConfigurationSpec extends Specification { + + @Autowired + DmiConfiguration.CpsProperties cpsProperties + + @Autowired + DmiConfiguration.SdncProperties sdncProperties + + def 'CPS properties configuration.'() { + expect: 'CPS properties are set to values in test configuration yaml file' + cpsProperties.baseUrl == 'some url for cps' + cpsProperties.dmiRegistrationUrl == 'some registration url' + cpsProperties.authUsername == 'some cps core user' + cpsProperties.authPassword == 'some cps core password' + } + + def 'SDNC properties configuration.'() { + expect: 'SDNC properties are set to values in test configuration yaml file' + sdncProperties.authUsername == 'test' + sdncProperties.authPassword == 'test' + sdncProperties.baseUrl == 'http://test' + sdncProperties.topologyId == 'test-topology' + } + + def 'Rest template building.'() { + given: 'a DMI configuration' + DmiConfiguration objectUnderTest = new DmiConfiguration() + and: 'a rest template builder' + RestTemplateBuilder mockRestTemplateBuilder = Mock(RestTemplateBuilder) + when: 'rest template method is invoked' + objectUnderTest.restTemplate(mockRestTemplateBuilder) + then: 'DMI configuration uses the build method on the template builder' + 1 * mockRestTemplateBuilder.build() + } + +} diff --git a/src/test/groovy/org/onap/cps/ncmp/dmi/config/DmiPluginConfigSpec.groovy b/src/test/groovy/org/onap/cps/ncmp/dmi/config/DmiPluginConfigSpec.groovy new file mode 100644 index 00000000..64b82329 --- /dev/null +++ b/src/test/groovy/org/onap/cps/ncmp/dmi/config/DmiPluginConfigSpec.groovy @@ -0,0 +1,52 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 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.dmi.config + +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.test.context.ContextConfiguration +import spock.lang.Specification +import springfox.documentation.spring.web.plugins.Docket + +@SpringBootTest +@ContextConfiguration(classes = [DmiPluginConfig.DmiPluginProperties]) +class DmiPluginConfigSpec extends Specification { + + @Autowired + DmiPluginConfig.DmiPluginProperties dmiPluginProperties + + def 'DMI plugin properties configuration.'() { + expect: 'DMI plugin properties are set to values in test configuration yaml file' + dmiPluginProperties.dmiServiceUrl == 'some url for the dmi service' + } + + def 'DMI plugin docket creation.'() { + given: 'a DMI plugin configuration' + DmiPluginConfig objectUnderTest = new DmiPluginConfig() + when: 'the api method is invoked' + def result = objectUnderTest.api() + then: 'a spring web plugin docket is returned' + result instanceof Docket + and: 'it is named "dmi-plugin-docket"' + result.groupName == 'dmi-plugin-docket' + } + +} diff --git a/src/test/groovy/org/onap/cps/ncmp/dmi/model/ModuleSchemaPropertiesSpec.groovy b/src/test/groovy/org/onap/cps/ncmp/dmi/model/ModuleSchemaPropertiesSpec.groovy new file mode 100644 index 00000000..51dddc7d --- /dev/null +++ b/src/test/groovy/org/onap/cps/ncmp/dmi/model/ModuleSchemaPropertiesSpec.groovy @@ -0,0 +1,41 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2021 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.dmi.model + +import org.onap.cps.ncmp.dmi.service.model.ModuleSchemaProperties +import spock.lang.Specification + +class ModuleSchemaPropertiesSpec extends Specification { + def objectUnderTest = new ModuleSchemaProperties(identifier:'some id', + version:'some version', + format:'some format', + namespace:'some namespace', + location: ['some','locations']) + + def 'Reading all properties.'() { + expect: 'all properties return the expected values' + objectUnderTest.identifier == 'some id' + objectUnderTest.version == 'some version' + objectUnderTest.format == 'some format' + objectUnderTest.namespace == 'some namespace' + objectUnderTest.location == ['some','locations'] + } +} diff --git a/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy b/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy index 9c27dc1b..8aebbca2 100644 --- a/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy +++ b/src/test/groovy/org/onap/cps/ncmp/dmi/rest/controller/DmiRestControllerSpec.groovy @@ -26,8 +26,8 @@ import org.onap.cps.ncmp.dmi.TestUtils import org.onap.cps.ncmp.dmi.exception.DmiException import org.onap.cps.ncmp.dmi.exception.ModuleResourceNotFoundException import org.onap.cps.ncmp.dmi.exception.ModulesNotFoundException -import org.onap.cps.ncmp.dmi.model.ModuleReference -import org.onap.cps.ncmp.dmi.model.ModuleSchemaList +import org.onap.cps.ncmp.dmi.service.model.ModuleReference +import org.onap.cps.ncmp.dmi.service.model.ModuleSchemaList import org.onap.cps.ncmp.dmi.model.ModuleSet import org.onap.cps.ncmp.dmi.model.ModuleSetSchemas import org.onap.cps.ncmp.dmi.model.YangResource @@ -151,7 +151,7 @@ class DmiRestControllerSpec extends Specification { def 'Retrieve module resources.'() { given: 'an endpoint and json data' def getModulesEndpoint = "$basePathV1/ch/some-cm-handle/moduleResources" - def jsonData = TestUtils.getResourceFileContent('GetModules.json') + String jsonData = getJsonDataForGetModules('read') and: 'the DMI service returns the yang resources' ModuleReference moduleReference1 = new ModuleReference(name: 'ietf-yang-library', revision: '2016-06-21') ModuleReference moduleReference2 = new ModuleReference(name: 'nc-notifications', revision: '2008-07-14') @@ -170,10 +170,22 @@ class DmiRestControllerSpec extends Specification { response.getContentAsString() == '[{"yangSource":"\\"some-data\\"","moduleName":"NAME","revision":"REVISION"}]' } + def 'Retrieve module resources with invalid operation.'() { + given: 'an endpoint and json data with invalid operation value' + def getModulesEndpoint = "$basePathV1/ch/some-cm-handle/moduleResources" + def jsonData = getJsonDataForGetModules('invalid operation') + when: 'get module resource api is invoked' + def response = mvc.perform(post(getModulesEndpoint) + .contentType(MediaType.APPLICATION_JSON) + .content(jsonData)).andReturn().response + then: 'a conflict status is returned' + response.status == HttpStatus.CONFLICT.value() + } + def 'Retrieve module resources with exception handling.'() { given: 'an endpoint and json data' def getModulesEndpoint = "$basePathV1/ch/some-cm-handle/moduleResources" - def jsonData = TestUtils.getResourceFileContent('GetModules.json') + String jsonData = getJsonDataForGetModules('read') and: 'the service method is invoked to get module resources and throws an exception' mockDmiService.getModuleResources('some-cm-handle', _) >> { throw Mock(ModuleResourceNotFoundException.class) } when: 'get module resource api is invoked' @@ -248,4 +260,10 @@ class DmiRestControllerSpec extends Specification { 5, ['prop1':'value1', 'prop2':'value2']) } -}
\ No newline at end of file + + def getJsonDataForGetModules(operation) { + def jsonData = TestUtils.getResourceFileContent('GetModules.json') + return jsonData.replace('${operation-for-test}', operation) + } + +} diff --git a/src/test/groovy/org/onap/cps/ncmp/dmi/service/DmiServiceImplSpec.groovy b/src/test/groovy/org/onap/cps/ncmp/dmi/service/DmiServiceImplSpec.groovy index 93bc641e..4c6bc750 100644 --- a/src/test/groovy/org/onap/cps/ncmp/dmi/service/DmiServiceImplSpec.groovy +++ b/src/test/groovy/org/onap/cps/ncmp/dmi/service/DmiServiceImplSpec.groovy @@ -22,6 +22,7 @@ package org.onap.cps.ncmp.dmi.service import com.fasterxml.jackson.core.JsonProcessingException import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.databind.ObjectWriter import org.onap.cps.ncmp.dmi.TestUtils import org.onap.cps.ncmp.dmi.config.DmiPluginConfig import org.onap.cps.ncmp.dmi.exception.CmHandleRegistrationException @@ -29,7 +30,7 @@ import org.onap.cps.ncmp.dmi.exception.DmiException import org.onap.cps.ncmp.dmi.exception.ModuleResourceNotFoundException import org.onap.cps.ncmp.dmi.exception.ModulesNotFoundException import org.onap.cps.ncmp.dmi.exception.ResourceDataNotFound -import org.onap.cps.ncmp.dmi.model.ModuleReference +import org.onap.cps.ncmp.dmi.service.model.ModuleReference import org.onap.cps.ncmp.dmi.model.YangResource import org.onap.cps.ncmp.dmi.model.YangResources import org.onap.cps.ncmp.dmi.service.client.NcmpRestClient @@ -43,10 +44,10 @@ class DmiServiceImplSpec extends Specification { def mockNcmpRestClient = Mock(NcmpRestClient) def mockDmiPluginProperties = Mock(DmiPluginConfig.DmiPluginProperties) - def objectMapper = new ObjectMapper() + def spyObjectMapper = Spy(ObjectMapper) def mockObjectMapper = Mock(ObjectMapper) def mockSdncOperations = Mock(SdncOperations) - def objectUnderTest = new DmiServiceImpl(mockDmiPluginProperties, mockNcmpRestClient, mockSdncOperations, objectMapper) + def objectUnderTest = new DmiServiceImpl(mockDmiPluginProperties, mockNcmpRestClient, mockSdncOperations, spyObjectMapper) def 'Call get modules for cm-handle on dmi Service.'() { given: 'cm handle id' @@ -175,17 +176,35 @@ class DmiServiceImplSpec extends Specification { def 'Get module resources when sdnc returns #scenario response.'() { given: 'get module schema is invoked and returns a response from sdnc' - mockSdncOperations.getModuleResource(_ as String, _ as String) >> new ResponseEntity<String>('some-response-body', httpResponse) + mockSdncOperations.getModuleResource(_ as String, _ as String) >> new ResponseEntity<String>('some-response-body', httpStatus) when: 'get module resources is invoked with the given cm handle and a module list' objectUnderTest.getModuleResources('some-cmHandle', [new ModuleReference()] as LinkedList<ModuleReference>) - then: 'ModuleResourceNotFoundException is thrown' - thrown(exception) + then: '#expectedException is thrown' + thrown(expectedException) where: 'the following values are returned' - scenario | httpResponse || exception + scenario | httpStatus || expectedException 'not found' | HttpStatus.NOT_FOUND || ModuleResourceNotFoundException 'a internal server' | HttpStatus.INTERNAL_SERVER_ERROR || DmiException } + def 'Get module resources with JSON processing exception.'() { + given: 'a json processing exception during conversion' + def mockObjectWriter = Mock(ObjectWriter) + spyObjectMapper.writer() >> mockObjectWriter + mockObjectWriter.withRootName(_) >> mockObjectWriter + def jsonProcessingException = new JsonProcessingException('') + mockObjectWriter.writeValueAsString(_) >> { throw jsonProcessingException } + when: 'get module resources is invoked with the given cm handle and a module list' + objectUnderTest.getModuleResources('some-cmHandle', [new ModuleReference()] as LinkedList<ModuleReference>) + then: 'a DMI exception is thrown' + def thrownException = thrown(DmiException.class) + and: 'the exception has the expected message and details' + thrownException.message == 'Unable to process JSON.' + thrownException.details == 'JSON exception occurred when creating the module request.' + and: 'the cause is the original json processing exception' + thrownException.cause == jsonProcessingException + } + def 'Get resource data for pass through operational from cm handle.'() { given: 'cm-handle, pass through parameter, resourceId, accept header, fields, depth' def cmHandle = 'testCmHandle' @@ -278,4 +297,4 @@ class DmiServiceImplSpec extends Specification { then: 'a dmi exception is thrown' thrown(DmiException.class) } -}
\ No newline at end of file +} diff --git a/src/test/groovy/org/onap/cps/ncmp/dmi/service/operation/SdncOperationsSpec.groovy b/src/test/groovy/org/onap/cps/ncmp/dmi/service/operation/SdncOperationsSpec.groovy index 14a62ebb..95a9c0a7 100644 --- a/src/test/groovy/org/onap/cps/ncmp/dmi/service/operation/SdncOperationsSpec.groovy +++ b/src/test/groovy/org/onap/cps/ncmp/dmi/service/operation/SdncOperationsSpec.groovy @@ -77,4 +77,4 @@ class SdncOperationsSpec extends Specification { then: 'the post operation is executed with the correct URL and data' 1 * mockSdncRestClient.postOperationWithJsonData(expectedUrl, 'requestData', _ as HttpHeaders) } -}
\ No newline at end of file +} diff --git a/src/test/resources/GetModules.json b/src/test/resources/GetModules.json index 23fe77c2..98e41672 100644 --- a/src/test/resources/GetModules.json +++ b/src/test/resources/GetModules.json @@ -1,5 +1,5 @@ { - "operation": "read", + "operation": "${operation-for-test}", "data": { "modules": [ { @@ -15,4 +15,4 @@ "cmHandleProperties": { "subsystemId": "system-001" } -}
\ No newline at end of file +} diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml index e8ca3d01..dc30c9da 100644 --- a/src/test/resources/application.yml +++ b/src/test/resources/application.yml @@ -31,3 +31,15 @@ sdnc: auth: username: test password: test + +cps-core: + baseUrl: some url for cps + dmiRegistrationUrl: some registration url + auth: + username: some cps core user + password: some cps core password + +dmi: + service: + url: some url for the dmi service + |