From 19b08a71a245a035e3e44f1af193d80d5eee11a4 Mon Sep 17 00:00:00 2001
From: anujgaud <146576725+anujgaud@users.noreply.github.com>
Date: Sat, 9 Mar 2024 00:08:20 +0530
Subject: [PATCH 1/2] Add InvalidCharactersUnitTest.java
---
.../InvalidCharactersUnitTest.java | 57 +++++++++++++++++++
1 file changed, 57 insertions(+)
create mode 100644 xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java
diff --git a/xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java b/xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java
new file mode 100644
index 0000000000..0cfd4a864a
--- /dev/null
+++ b/xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java
@@ -0,0 +1,57 @@
+package com.baeldung.xml.invalidcharacters;
+
+import org.w3c.dom.Document;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXParseException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import java.io.StringReader;
+
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.*;
+
+public class InvalidCharactersUnitTest {
+
+ @Test
+ void givenXml_whenReservedCharacters_thenThrowException() {
+ String invalidXmlString = "John & Doe";
+ assertThrowsExactly(SAXParseException.class, () -> parseXmlString(invalidXmlString));
+ }
+
+ @Test
+ void givenXml_whenReservedCharactersEscaped_thenSuccess() {
+ String validXmlString = "John & Doe";
+
+ assertDoesNotThrow(() -> {
+ Document document = parseXmlString(validXmlString);
+
+ assertNotNull(document);
+ assertEquals("John & Doe", document.getElementsByTagName("name").item(0).getTextContent());
+ });
+ }
+
+ @Test
+ void givenXml_whenUnicodeCharacters_thenThrowException() {
+ String invalidXmlString = "John \u001E Doe";
+ assertThrowsExactly(SAXParseException.class, () -> parseXmlString(invalidXmlString));
+ }
+
+ @Test
+ void givenXml_whenUnicodeCharactersEscaped_thenSuccess() {
+ String validXmlString = "John Doe";
+ assertDoesNotThrow(() -> {
+ Document document = parseXmlString(validXmlString);
+
+ assertNotNull(document);
+ assertEquals("John \u001E Doe", document.getElementsByTagName("name").item(0).getTextContent());
+ });
+ }
+
+ private Document parseXmlString(String xmlString) throws Exception {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ InputSource inputSource = new InputSource(new StringReader(xmlString));
+ return builder.parse(inputSource);
+ }
+}
From 6c8d1d2bf2972a9b89767b0b0388cf7add8bf605 Mon Sep 17 00:00:00 2001
From: anujgaud <146576725+anujgaud@users.noreply.github.com>
Date: Sat, 9 Mar 2024 20:36:27 +0530
Subject: [PATCH 2/2] Add test for CDATA Sections
---
.../invalidcharacters/InvalidCharactersUnitTest.java | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java b/xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java
index 0cfd4a864a..7878e72f97 100644
--- a/xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java
+++ b/xml-2/src/test/java/com/baeldung/xml/invalidcharacters/InvalidCharactersUnitTest.java
@@ -30,6 +30,18 @@ public class InvalidCharactersUnitTest {
assertEquals("John & Doe", document.getElementsByTagName("name").item(0).getTextContent());
});
}
+
+ @Test
+ void givenXml_whenUsingCdataForReservedCharacters_thenSuccess() {
+ String validXmlString = "";
+
+ assertDoesNotThrow(() -> {
+ Document document = parseXmlString(validXmlString);
+
+ assertNotNull(document);
+ assertEquals("John & Doe", document.getElementsByTagName("name").item(0).getTextContent());
+ });
+ }
@Test
void givenXml_whenUnicodeCharacters_thenThrowException() {