From fc54a5c7bbea73399f9fc45d8145aa929eb8ff46 Mon Sep 17 00:00:00 2001 From: Jozsef Csongvai Date: Tue, 19 May 2020 09:16:46 -0400 Subject: [PATCH] Fix incorrect encoding for query params Issue-ID: CCSDK-2380 Signed-off-by: Jozsef Csongvai Change-Id: I3a49f2c5a3a29383e43e2a4a3d6a9c13a9f933c2 (cherry picked from commit 1910b2b7879712ccac56580e8996a700f6dcec43) --- .../rest/service/BlueprintWebClientService.kt | 2 +- .../rest/service/RestClientServiceTest.kt | 36 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BlueprintWebClientService.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BlueprintWebClientService.kt index c9c8aab7d..11f6dc7e3 100644 --- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BlueprintWebClientService.kt +++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BlueprintWebClientService.kt @@ -94,7 +94,7 @@ interface BlueprintWebClientService { * the difference is in convertToBasicHeaders vs basicHeaders */ val convertedHeaders: Array = 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) diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/RestClientServiceTest.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/RestClientServiceTest.kt index fa357e1fe..71f8cd753 100644 --- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/RestClientServiceTest.kt +++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/RestClientServiceTest.kt @@ -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" -- 2.16.6