diff options
author | JosephKeenan <joseph.keenan@est.tech> | 2021-11-23 12:18:28 +0000 |
---|---|---|
committer | JosephKeenan <joseph.keenan@est.tech> | 2021-11-25 15:40:10 +0000 |
commit | 20b4f9cf0b662de4a7665b2a82593ef0205f5e06 (patch) | |
tree | ab849ff17b861f246c328e421e8dcfc8ceb9e851 /cps-ncmp-rest | |
parent | bc742a1dbe39a3269abab9e62a9d489f460144b0 (diff) |
Allow separate registration of DMIDataPlugin and DmiModelPugin
Moved relevant code from NetworkCmProxyDataServiceImp to DmiOperations
Split DmiOperations into DMiData... and DMIModelOperations
Merged update-operation changes
Added tests for error message validation in NetworkCmProxyDataServiceImplSpec
Removede @Service from DMIOperations and added @component to
DmiDataOperations & DmiModelOperations
Verify sync robot test is now hardened
Added exitonfailure so robot tests stop after first encountered failed
test
Issue-ID: CPS-736
Change-Id: I0b40931cc8cd4fc0452328a0a7e0f60e6fc38d0a
Signed-off-by: JosephKeenan <joseph.keenan@est.tech>
Signed-off-by: ToineSiebelink <toine.siebelink@est.tech>
Signed-off-by: DylanB95EST <dylan.byrne@est.tech>
Diffstat (limited to 'cps-ncmp-rest')
5 files changed, 104 insertions, 37 deletions
diff --git a/cps-ncmp-rest/docs/openapi/components.yaml b/cps-ncmp-rest/docs/openapi/components.yaml index 7c9e1e837e..da1878fea8 100644 --- a/cps-ncmp-rest/docs/openapi/components.yaml +++ b/cps-ncmp-rest/docs/openapi/components.yaml @@ -38,6 +38,12 @@ components: dmiPlugin: type: string example: onap-dmi-plugin + dmiDataPlugin: + type: string + example: onap-dmi-data-plugin + dmiModelPlugin: + type: string + example: onap-dmi-model-plugin createdCmHandles: type: array items: diff --git a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java index 449a4344dd..222957c9f4 100755 --- a/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java +++ b/cps-ncmp-rest/src/main/java/org/onap/cps/ncmp/rest/controller/NetworkCmProxyController.java @@ -22,6 +22,9 @@ package org.onap.cps.ncmp.rest.controller; +import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.CREATE; +import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.UPDATE; + import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.util.ArrayList; @@ -132,14 +135,6 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { return new ResponseEntity<>(HttpStatus.OK); } - @Override - public ResponseEntity<Object> updateResourceDataRunningForCmHandle(final String resourceIdentifier, - final String cmHandle, final String requestBody, final String contentType) { - networkCmProxyDataService.updateResourceDataPassThroughRunningForCmHandle(cmHandle, - resourceIdentifier, requestBody, contentType); - return new ResponseEntity<>(HttpStatus.OK); - } - /** * Update Node Leaves. * @deprecated This Method is no longer used as part of NCMP. @@ -195,25 +190,49 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { } /** - * Create resource data in datastore pass through running - * for given cm-handle. + * Create resource data in datastore pass through running for given cm-handle. * * @param resourceIdentifier resource identifier * @param cmHandle cm handle identifier - * @param requestBody requestBody + * @param requestBody the request body * @param contentType content type of body - * @return {@code ResponseEntity} response from dmi plugi + * @return {@code ResponseEntity} response from dmi plugin */ @Override public ResponseEntity<Void> createResourceDataRunningForCmHandle(final String resourceIdentifier, final String cmHandle, final String requestBody, final String contentType) { - networkCmProxyDataService.createResourceDataPassThroughRunningForCmHandle(cmHandle, - resourceIdentifier, requestBody, contentType); + networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle, + resourceIdentifier, CREATE, requestBody, contentType); return new ResponseEntity<>(HttpStatus.CREATED); } + /** + * Update resource data in datastore pass through running for given cm-handle. + * + * @param resourceIdentifier resource identifier + * @param cmHandle cm handle identifier + * @param requestBody the request body + * @param contentType content type of the body + * @return response entity + */ + @Override + public ResponseEntity<Object> updateResourceDataRunningForCmHandle(final String resourceIdentifier, + final String cmHandle, + final String requestBody, + final String contentType) { + networkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle(cmHandle, + resourceIdentifier, UPDATE, requestBody, contentType); + return new ResponseEntity<>(HttpStatus.OK); + } + + /** + * Execute cm handle search. + * + * @param conditions the conditions + * @return cm handles returned from search. + */ @Override public ResponseEntity<CmHandles> executeCmHandleSearch(final Conditions conditions) { final List<ConditionProperties> conditionProperties = @@ -223,6 +242,12 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { return ResponseEntity.ok(cmHandles); } + /** + * Return module references for a cm handle. + * + * @param cmHandle the cm handle + * @return module references for cm handle + */ @Override public ResponseEntity<Object> getModuleReferencesByCmHandle(final String cmHandle) { final Collection<ModuleReference> @@ -264,6 +289,4 @@ public class NetworkCmProxyController implements NetworkCmProxyApi { } return cmHandleProperties; } - - } diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy index e96b27df8d..436f22b327 100644 --- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy +++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyControllerSpec.groovy @@ -31,6 +31,8 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put +import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.CREATE +import static org.onap.cps.ncmp.api.impl.operations.DmiRequestBody.OperationEnum.UPDATE import com.google.gson.Gson import org.onap.cps.ncmp.api.NetworkCmProxyDataService @@ -219,19 +221,36 @@ class NetworkCmProxyControllerSpec extends Specification { '? needs to be encoded as %3F' | 'idWith%3F' } + def 'Update resource data from passthrough running.' () { + given: 'update resource data url' + def updateUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" + + "?resourceIdentifier=parent/child" + when: 'update data resource request is performed' + def response = mvc.perform( + put(updateUrl) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .accept(MediaType.APPLICATION_JSON_VALUE).content('some-request-body') + ).andReturn().response + then: 'ncmp service method to update resource is called' + 1 * mockNetworkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle('testCmHandle', + 'parent/child', UPDATE,'some-request-body', 'application/json;charset=UTF-8') + and: 'the response status is OK' + response.status == HttpStatus.OK.value() + } + def 'Create Resource Data from passthrough running with #scenario.' () { given: 'resource data url' - def getUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" + + def url = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" + "?resourceIdentifier=parent/child" - when: 'get data resource request is performed' + when: 'create resource request is performed' def response = mvc.perform( - post(getUrl) + post(url) .contentType(MediaType.APPLICATION_JSON_VALUE) .accept(MediaType.APPLICATION_JSON_VALUE).content(requestBody) ).andReturn().response then: 'ncmp service method to create resource called' - 1 * mockNetworkCmProxyDataService.createResourceDataPassThroughRunningForCmHandle('testCmHandle', - 'parent/child', requestBody, 'application/json;charset=UTF-8') + 1 * mockNetworkCmProxyDataService.writeResourceDataPassThroughRunningForCmHandle('testCmHandle', + 'parent/child', CREATE, requestBody, 'application/json;charset=UTF-8') and: 'resource is created' response.status == HttpStatus.CREATED.value() where: 'given request body' @@ -282,21 +301,5 @@ class NetworkCmProxyControllerSpec extends Specification { response.contentAsString == '{"cmHandles":[]}' } - def 'Update resource data from passthrough running.' () { - given: 'update resource data url' - def updateUrl = "$ncmpBasePathV1/ch/testCmHandle/data/ds/ncmp-datastore:passthrough-running" + - "?resourceIdentifier=parent/child" - when: 'update data resource request is performed' - def response = mvc.perform( - put(updateUrl) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .accept(MediaType.APPLICATION_JSON_VALUE).content('some-request-body') - ).andReturn().response - then: 'ncmp service method to update resource is called' - 1 * mockNetworkCmProxyDataService.updateResourceDataPassThroughRunningForCmHandle('testCmHandle', - 'parent/child', 'some-request-body', 'application/json;charset=UTF-8') - and: 'the response status is OK' - response.status == HttpStatus.OK.value() - } } diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyInventoryControllerSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyInventoryControllerSpec.groovy index e558ac45bf..4addf7bdf4 100644 --- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyInventoryControllerSpec.groovy +++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/NetworkCmProxyInventoryControllerSpec.groovy @@ -22,6 +22,10 @@ package org.onap.cps.ncmp.rest.controller import com.fasterxml.jackson.databind.ObjectMapper import org.onap.cps.TestUtils import org.onap.cps.ncmp.api.NetworkCmProxyDataService +import org.onap.cps.ncmp.api.impl.NetworkCmProxyDataServiceImpl +import org.onap.cps.ncmp.api.models.CmHandle +import org.onap.cps.ncmp.api.models.DmiPluginRegistration +import org.onap.cps.ncmp.api.models.PersistenceCmHandle import org.spockframework.spring.SpringBean import org.springframework.beans.factory.annotation.Autowired import org.springframework.beans.factory.annotation.Value @@ -61,5 +65,28 @@ class NetworkCmProxyInventoryControllerSpec extends Specification { response.status == HttpStatus.CREATED.value() } + def 'Dmi plugin registration with #scenario' () { + given: 'jsonData, cmHandle, & DmiPluginRegistration' + def jsonData = TestUtils.getResourceFileContent('dmi_registration_combined_valid.json' ) + def cmHandle = new CmHandle(cmHandleID : 'example-name') + def expectedDmiPluginRegistration = new DmiPluginRegistration( + dmiPlugin: 'service1', + dmiDataPlugin: '', + dmiModelPlugin: '', + createdCmHandles: [cmHandle]) + when: 'post request is performed & registration is called with correct DMI plugin information' + def response = mvc.perform( + post("$ncmpBasePathV1/ch") + .contentType(MediaType.APPLICATION_JSON) + .content(jsonData) + ).andReturn().response + then: 'no NcmpException is thrown & updateDmiRegistrationAndSyncModule is called with correct parameters' + 1 * mockNetworkCmProxyDataService.updateDmiRegistrationAndSyncModule({ + it.getDmiPlugin() == expectedDmiPluginRegistration.getDmiPlugin() + it.getDmiDataPlugin() == expectedDmiPluginRegistration.getDmiDataPlugin() + it.getDmiModelPlugin() == expectedDmiPluginRegistration.getDmiModelPlugin() + it.getCreatedCmHandles().get(0).getCmHandleID() == expectedDmiPluginRegistration.getCreatedCmHandles().get(0).getCmHandleID() + }) + } } diff --git a/cps-ncmp-rest/src/test/resources/dmi_registration_combined_valid.json b/cps-ncmp-rest/src/test/resources/dmi_registration_combined_valid.json new file mode 100644 index 0000000000..bded4f215c --- /dev/null +++ b/cps-ncmp-rest/src/test/resources/dmi_registration_combined_valid.json @@ -0,0 +1,8 @@ +{ + "dmiPlugin": "service1", + "dmiDataPlugin": "", + "dmiModelPlugin": "", + "createdCmHandles": [{ + "cmHandle": "example-name" + }] +}
\ No newline at end of file |