From d042972535106a045d7ee5bf1fddf72644819a77 Mon Sep 17 00:00:00 2001 From: Santosh Date: Fri, 20 Oct 2023 09:06:45 -0400 Subject: [PATCH 1/2] Fix 2419 - Multipart form fields ignoring numeric data --- .../intuit/karate/core/ScenarioEngine.java | 3 ++ .../karate/core/KarateMockHandlerTest.java | 30 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/karate-core/src/main/java/com/intuit/karate/core/ScenarioEngine.java b/karate-core/src/main/java/com/intuit/karate/core/ScenarioEngine.java index 6fc31b2a1..db0ee5cf3 100644 --- a/karate-core/src/main/java/com/intuit/karate/core/ScenarioEngine.java +++ b/karate-core/src/main/java/com/intuit/karate/core/ScenarioEngine.java @@ -491,6 +491,9 @@ private void multiPartInternal(String name, Object value) { if (name != null) { map.put("name", name); } + if(value instanceof Integer || value instanceof Float || value instanceof Double) { + value = value.toString(); + } if (value instanceof Map) { map.putAll((Map) value); String toRead = (String) map.get("read"); diff --git a/karate-core/src/test/java/com/intuit/karate/core/KarateMockHandlerTest.java b/karate-core/src/test/java/com/intuit/karate/core/KarateMockHandlerTest.java index 384e686bc..414372705 100644 --- a/karate-core/src/test/java/com/intuit/karate/core/KarateMockHandlerTest.java +++ b/karate-core/src/test/java/com/intuit/karate/core/KarateMockHandlerTest.java @@ -390,6 +390,36 @@ void testMultiPartField() { matchVar("response", "{ foo: ['bar'] }"); } + @Test + void testMultiPartFieldWithInteger() { + background().scenario( + "pathMatches('/hello')", + "def response = requestParams"); + run( + URL_STEP, + "def data = { foo: 'a', bar: 1}", + "multipart fields data", + "path 'hello'", + "method post" + ); + matchVar("response", "{ foo: ['a'], bar: ['1'] } }"); + } + + @Test + void testMultiPartFieldWithFloat() { + background().scenario( + "pathMatches('/hello')", + "def response = requestParams"); + run( + URL_STEP, + "def data = { foo: 1, bar: 2.0}", + "multipart fields data", + "path 'hello'", + "method post" + ); + matchVar("response", "{ foo: ['1'], bar: ['2.0'] } }"); + } + @Test void testMultiPartFile() { background().scenario( From 8c673f29309adaf7a4201758d3b97573bf7e24b1 Mon Sep 17 00:00:00 2001 From: Santosh Date: Fri, 20 Oct 2023 13:22:17 -0400 Subject: [PATCH 2/2] Fix 2419 - Multipart form fields ignoring numeric data --- .../src/main/java/com/intuit/karate/core/ScenarioEngine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/karate-core/src/main/java/com/intuit/karate/core/ScenarioEngine.java b/karate-core/src/main/java/com/intuit/karate/core/ScenarioEngine.java index db0ee5cf3..e39c12e49 100644 --- a/karate-core/src/main/java/com/intuit/karate/core/ScenarioEngine.java +++ b/karate-core/src/main/java/com/intuit/karate/core/ScenarioEngine.java @@ -491,7 +491,7 @@ private void multiPartInternal(String name, Object value) { if (name != null) { map.put("name", name); } - if(value instanceof Integer || value instanceof Float || value instanceof Double) { + if(value instanceof Number) { value = value.toString(); } if (value instanceof Map) {