diff --git a/body/src/main/java/com/networknt/body/BodyConverter.java b/body/src/main/java/com/networknt/body/BodyConverter.java index 6460150745..66057aa7c5 100644 --- a/body/src/main/java/com/networknt/body/BodyConverter.java +++ b/body/src/main/java/com/networknt/body/BodyConverter.java @@ -23,9 +23,7 @@ public class BodyConverter { static Map convert(FormData data) { Map map = new HashMap<>(); - Iterator iterator = data.iterator(); - while (iterator.hasNext()) { - String key = iterator.next(); + for (String key : data) { List list = new ArrayList<>(); for (FormData.FormValue value : data.get(key)) { list.add(value); diff --git a/body/src/test/java/com/networknt/body/BodyConverterTest.java b/body/src/test/java/com/networknt/body/BodyConverterTest.java new file mode 100644 index 0000000000..c1f7898eb6 --- /dev/null +++ b/body/src/test/java/com/networknt/body/BodyConverterTest.java @@ -0,0 +1,69 @@ +package com.networknt.body; + +import io.undertow.server.handlers.form.FormData; +import org.junit.Assert; +import org.junit.Test; + +import java.util.List; +import java.util.Map; + +public class BodyConverterTest { + + @Test + public void shouldToGetEmptyMapWhenFormDataIsEmpty() { + FormData formData = new FormData(99); + Map bodyMap = BodyConverter.convert(formData); + + Assert.assertEquals(0, bodyMap.size()); + } + + @Test + public void shouldToGetConvertedFormDataInAMap() { + String aKey = "aKey"; + String aValue = "aValue"; + String anotherKey = "anotherKey"; + String anotherValue = "anotherValue"; + + FormData formData = new FormData(99); + formData.add(aKey, aValue); + formData.add(anotherKey, anotherValue); + + Map bodyMap = BodyConverter.convert(formData); + + Assert.assertEquals(2, bodyMap.size()); + + List aConvertedListvalue = (List) bodyMap.get(aKey); + Assert.assertEquals(1, aConvertedListvalue.size()); + Assert.assertTrue(aConvertedListvalue.get(0) instanceof FormData.FormValue); + Assert.assertEquals(aValue, ((FormData.FormValue)aConvertedListvalue.get(0)).getValue()); + + List anotherListvalues = (List) bodyMap.get(anotherKey); + Assert.assertEquals(1, anotherListvalues.size()); + Assert.assertTrue(anotherListvalues.get(0) instanceof FormData.FormValue); + Assert.assertEquals(anotherValue, ((FormData.FormValue)anotherListvalues.get(0)).getValue()); + } + + @Test + public void shouldToGetConvertedFormDataInAMapGroupedByKey() { + String aKey = "aKey"; + String aValue = "aValue"; + String anotherValue = "anotherValue"; + + FormData formData = new FormData(99); + formData.add(aKey, aValue); + formData.add(aKey, anotherValue); + + Map bodyMap = BodyConverter.convert(formData); + + Assert.assertEquals(1, bodyMap.size()); + + List aConvertedListvalue = (List) bodyMap.get(aKey); + Assert.assertEquals(2, aConvertedListvalue.size()); + + Assert.assertTrue(aConvertedListvalue.get(0) instanceof FormData.FormValue); + Assert.assertEquals(aValue, ((FormData.FormValue)aConvertedListvalue.get(0)).getValue()); + + Assert.assertTrue(aConvertedListvalue.get(1) instanceof FormData.FormValue); + Assert.assertEquals(anotherValue, ((FormData.FormValue)aConvertedListvalue.get(1)).getValue()); + } +} \ No newline at end of file