Integration test to validate DMI service URL 71/138571/4
authorsourabh_sourabh <sourabh.sourabh@est.tech>
Thu, 25 Jul 2024 12:03:09 +0000 (13:03 +0100)
committerSourabh Sourabh <sourabh.sourabh@est.tech>
Thu, 25 Jul 2024 15:31:55 +0000 (15:31 +0000)
- New groovy test is written to validate if dmi service url is encoded
  correctly.

Issue-ID: CPS-2317
Change-Id: I75023a0bd2c41c832177edf062c694bb0d9b14b8
Signed-off-by: sourabh_sourabh <sourabh.sourabh@est.tech>
integration-test/src/test/groovy/org/onap/cps/integration/functional/ncmp/CmHandleResourceDataSpec.groovy [deleted file]
integration-test/src/test/groovy/org/onap/cps/integration/functional/ncmp/DmiUrlEncodingPassthroughSpec.groovy [new file with mode: 0644]

diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/functional/ncmp/CmHandleResourceDataSpec.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/functional/ncmp/CmHandleResourceDataSpec.groovy
deleted file mode 100644 (file)
index 418b3a4..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *  ============LICENSE_START=======================================================
- *  Copyright (C) 2024 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.integration.functional.ncmp
-
-import org.onap.cps.integration.base.CpsIntegrationSpecBase
-import org.onap.cps.ncmp.api.data.models.CmResourceAddress
-import org.onap.cps.ncmp.impl.data.NetworkCmProxyFacade
-import spock.util.concurrent.PollingConditions
-
-import static org.onap.cps.ncmp.api.data.models.DatastoreType.PASSTHROUGH_OPERATIONAL
-
-class CmHandleResourceDataSpec extends CpsIntegrationSpecBase {
-
-    NetworkCmProxyFacade objectUnderTest
-
-    def setup() {
-        dmiDispatcher1.moduleNamesPerCmHandleId['ch-1'] = ['M1', 'M2']
-        registerCmHandle(DMI1_URL, 'ch-1', NO_MODULE_SET_TAG)
-        objectUnderTest = networkCmProxyFacade
-    }
-
-    def cleanup() {
-        deregisterCmHandle(DMI1_URL, 'ch-1')
-    }
-
-    def 'Get resource data having special chars into path & query param value.'() {
-        when: 'getting the resource data'
-            def cmResourceAddress = new CmResourceAddress(PASSTHROUGH_OPERATIONAL.datastoreName, 'ch-1', 'parent/child')
-            objectUnderTest.getResourceDataForCmHandle(cmResourceAddress, '(a=1,b=2)', 'my-client-topic', false, null)
-        then: 'dmi resource data url is encoded correctly'
-            new PollingConditions().within(5, () -> {
-                assert dmiDispatcher1.dmiResourceDataUrl == '/dmi/v1/ch/ch-1/data/ds/ncmp-datastore%3Apassthrough-operational?resourceIdentifier=parent%2Fchild&options=%28a%3D1%2Cb%3D2%29&topic=my-client-topic'
-            })
-    }
-}
diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/functional/ncmp/DmiUrlEncodingPassthroughSpec.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/functional/ncmp/DmiUrlEncodingPassthroughSpec.groovy
new file mode 100644 (file)
index 0000000..4e9b809
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ *  ============LICENSE_START=======================================================
+ *  Copyright (C) 2024 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.integration.functional.ncmp
+
+import org.onap.cps.integration.base.CpsIntegrationSpecBase
+import org.springframework.http.MediaType
+
+import static org.springframework.http.HttpMethod.DELETE
+import static org.springframework.http.HttpMethod.GET
+import static org.springframework.http.HttpMethod.PATCH
+import static org.springframework.http.HttpMethod.POST
+import static org.springframework.http.HttpMethod.PUT
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.request
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
+
+class DmiUrlEncodingPassthroughSpec extends CpsIntegrationSpecBase {
+
+    def setup() {
+        dmiDispatcher1.moduleNamesPerCmHandleId['ch-1'] = ['M1', 'M2']
+        registerCmHandle(DMI1_URL, 'ch-1', NO_MODULE_SET_TAG)
+    }
+
+    def cleanup() {
+        deregisterCmHandle(DMI1_URL, 'ch-1')
+    }
+
+    def 'DMI URL encoding for pass-through operational data operations with GET request'() {
+        when: 'sending a GET pass-through data request to NCMP'
+            mvc.perform(request(GET, '/ncmp/v1/ch/ch-1/data/ds/ncmp-datastore:passthrough-operational')
+                    .queryParam('resourceIdentifier', 'parent/child')
+                    .queryParam('options', '(a=1,b=2)'))
+                    .andExpect(status().is2xxSuccessful())
+        then: 'verify that DMI received the request with the correctly encoded URL'
+            assert dmiDispatcher1.dmiResourceDataUrl == '/dmi/v1/ch/ch-1/data/ds/ncmp-datastore%3Apassthrough-operational?resourceIdentifier=parent%2Fchild&options=%28a%3D1%2Cb%3D2%29'
+    }
+
+    def 'DMI URL encoding for pass-through running data operations with POST request'() {
+        when: 'sending a pass-through data request to NCMP with various HTTP methods'
+            mvc.perform(request(POST, '/ncmp/v1/ch/ch-1/data/ds/ncmp-datastore:passthrough-running')
+                    .queryParam('resourceIdentifier', 'parent/child')
+                    .contentType(MediaType.APPLICATION_JSON)
+                    .content('{ "some-json": "data" }'))
+                    .andExpect(status().is2xxSuccessful())
+        then: 'verify that DMI received the request with the correctly encoded URL'
+            assert dmiDispatcher1.dmiResourceDataUrl == '/dmi/v1/ch/ch-1/data/ds/ncmp-datastore%3Apassthrough-running?resourceIdentifier=parent%2Fchild'
+    }
+}