Fix incorrect encoding for query params 43/107843/1
authorJozsef Csongvai <jozsef.csongvai@bell.ca>
Tue, 19 May 2020 13:16:46 +0000 (09:16 -0400)
committerDan Timoney <dtimoney@att.com>
Tue, 19 May 2020 16:31:30 +0000 (16:31 +0000)
Issue-ID: CCSDK-2380
Signed-off-by: Jozsef Csongvai <jozsef.csongvai@bell.ca>
Change-Id: I3a49f2c5a3a29383e43e2a4a3d6a9c13a9f933c2
(cherry picked from commit 1910b2b7879712ccac56580e8996a700f6dcec43)

ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BlueprintWebClientService.kt
ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/RestClientServiceTest.kt

index c9c8aab..11f6dc7 100644 (file)
@@ -94,7 +94,7 @@ interface BlueprintWebClientService {
          * the difference is in convertToBasicHeaders vs basicHeaders
          */
         val convertedHeaders: Array<BasicHeader> = convertToBasicHeaders(headers)
-        val encodedPath = UriUtils.encodePath(path, StandardCharsets.UTF_8.name())
+        val encodedPath = UriUtils.encodeQuery(path, StandardCharsets.UTF_8.name())
         return when (HttpMethod.resolve(methodType)) {
             HttpMethod.DELETE -> delete(encodedPath, convertedHeaders, String::class.java)
             HttpMethod.GET -> get(encodedPath, convertedHeaders, String::class.java)
index fa357e1..71f8cd7 100644 (file)
@@ -51,10 +51,12 @@ import org.springframework.test.context.junit4.SpringRunner
 import org.springframework.web.bind.annotation.DeleteMapping
 import org.springframework.web.bind.annotation.GetMapping
 import org.springframework.web.bind.annotation.PatchMapping
+import org.springframework.web.bind.annotation.PathVariable
 import org.springframework.web.bind.annotation.PostMapping
 import org.springframework.web.bind.annotation.PutMapping
 import org.springframework.web.bind.annotation.RequestHeader
 import org.springframework.web.bind.annotation.RequestMapping
+import org.springframework.web.bind.annotation.RequestParam
 import org.springframework.web.bind.annotation.RestController
 import kotlin.test.assertEquals
 import kotlin.test.assertNotNull
@@ -114,6 +116,32 @@ class RestClientServiceTest {
         this.http.stop()
     }
 
+    @Test
+    fun testGetQueryParam() {
+        val restClientService = bluePrintRestLibPropertyService
+                .blueprintWebClientService("sample")
+        val response = restClientService.exchangeResource(
+                HttpMethod.GET.name, "/sample/query?id=3", ""
+        )
+        assertEquals(
+                "query with id:3", response.body,
+                "failed to get query param response"
+        )
+    }
+
+    @Test
+    fun testGetPathParamWithWhitespace() {
+        val restClientService = bluePrintRestLibPropertyService
+                .blueprintWebClientService("sample")
+        val response = restClientService.exchangeResource(
+                HttpMethod.GET.name, "/sample/path/id 3/get", ""
+        )
+        assertEquals(
+                "path param id:id 3", response.body,
+                "failed to get query param response"
+        )
+    }
+
     @Test
     fun testPatch() {
         val restClientService = bluePrintRestLibPropertyService
@@ -277,6 +305,14 @@ open class SampleController {
     @GetMapping("/name")
     fun getName(): String = "Sample Controller"
 
+    @GetMapping("/query")
+    fun getQuery(@RequestParam("id") id: String): String =
+            "query with id:$id"
+
+    @GetMapping("/path/{id}/get")
+    fun getPathParam(@PathVariable("id") id: String): String =
+            "path param id:$id"
+
     @PatchMapping("/name")
     fun patchName(): String = "Patch request successful"