From 20f3f9936b661b403c80725f4612286eb63c87e6 Mon Sep 17 00:00:00 2001 From: Simulant Date: Wed, 8 Jan 2025 22:26:25 +0100 Subject: [PATCH 1/3] add new test cases for JSONObject and JSONArray Constructors with JSONTokener and strict mode they are failing, because the expected strict mode is not validated --- .../junit/JSONParserConfigurationTest.java | 39 +++++++++++++++++-- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/src/test/java/org/json/junit/JSONParserConfigurationTest.java b/src/test/java/org/json/junit/JSONParserConfigurationTest.java index 422c90c34..d340aac5f 100644 --- a/src/test/java/org/json/junit/JSONParserConfigurationTest.java +++ b/src/test/java/org/json/junit/JSONParserConfigurationTest.java @@ -1,9 +1,6 @@ package org.json.junit; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; -import org.json.JSONParserConfiguration; +import org.json.*; import org.junit.Test; import java.io.IOException; @@ -490,6 +487,40 @@ public void givenInvalidInputObject_testStrictModeTrue_shouldThrowKeyNotSurround je.getMessage()); } + @Test + public void givenInvalidInputObject_testStrictModeTrue_JSONObjectUsingJSONTokener_shouldThrowJSONException() { + JSONException exception = assertThrows(JSONException.class, () -> { + new JSONObject(new JSONTokener("{\"key\":\"value\"} invalid trailing text"), new JSONParserConfiguration().withStrictMode(true)); + }); + + assertEquals("Strict mode error: Unparsed characters found at end of input text", exception.getMessage()); + } + + @Test + public void givenInvalidInputObject_testStrictModeTrue_JSONObjectUsingString_shouldThrowJSONException() { + JSONException exception = assertThrows(JSONException.class, () -> { + new JSONObject("{\"key\":\"value\"} invalid trailing text", new JSONParserConfiguration().withStrictMode(true)); + }); + assertEquals("Strict mode error: Unparsed characters found at end of input text", exception.getMessage()); + } + + @Test + public void givenInvalidInputObject_testStrictModeTrue_JSONArrayUsingJSONTokener_shouldThrowJSONException() { + JSONException exception = assertThrows(JSONException.class, () -> { + new JSONArray(new JSONTokener("[\"value\"] invalid trailing text"), new JSONParserConfiguration().withStrictMode(true)); + }); + + assertEquals("Strict mode error: Unparsed characters found at end of input text at 11 [character 12 line 1]", exception.getMessage()); + } + + @Test + public void givenInvalidInputObject_testStrictModeTrue_JSONArrayUsingString_shouldThrowJSONException() { + JSONException exception = assertThrows(JSONException.class, () -> { + new JSONArray("[\"value\"] invalid trailing text", new JSONParserConfiguration().withStrictMode(true)); + }); + assertEquals("Strict mode error: Unparsed characters found at end of input text at 11 [character 12 line 1]", exception.getMessage()); + } + /** * This method contains short but focused use-case samples and is exclusively used to test strictMode unit tests in * this class. From 40f097121ea4250c2a816008cc5b9d14bf6e4ed4 Mon Sep 17 00:00:00 2001 From: Simulant87 Date: Wed, 8 Jan 2025 23:07:02 +0100 Subject: [PATCH 2/3] restore explicit imports --- .../java/org/json/junit/JSONParserConfigurationTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/json/junit/JSONParserConfigurationTest.java b/src/test/java/org/json/junit/JSONParserConfigurationTest.java index d340aac5f..5929679f4 100644 --- a/src/test/java/org/json/junit/JSONParserConfigurationTest.java +++ b/src/test/java/org/json/junit/JSONParserConfigurationTest.java @@ -1,6 +1,9 @@ package org.json.junit; -import org.json.*; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.json.JSONParserConfiguration; import org.junit.Test; import java.io.IOException; From 36e3f3cc6212bff678c5dbb307d84c022ab7a22d Mon Sep 17 00:00:00 2001 From: Simulant Date: Thu, 9 Jan 2025 15:57:43 +0100 Subject: [PATCH 3/3] add explcit imports --- src/test/java/org/json/junit/JSONParserConfigurationTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/org/json/junit/JSONParserConfigurationTest.java b/src/test/java/org/json/junit/JSONParserConfigurationTest.java index 5929679f4..3d196a200 100644 --- a/src/test/java/org/json/junit/JSONParserConfigurationTest.java +++ b/src/test/java/org/json/junit/JSONParserConfigurationTest.java @@ -4,6 +4,7 @@ import org.json.JSONException; import org.json.JSONObject; import org.json.JSONParserConfiguration; +import org.json.JSONTokener; import org.junit.Test; import java.io.IOException;