Merge pull request #16079 from anujgaud/ag/invalid-characters-xml
BAEL-6534 Add InvalidCharactersUnitTest.java
This commit is contained in:
commit
c905c5bbe1
|
@ -0,0 +1,69 @@
|
||||||
|
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 = "<?xml version=\"1.1\" encoding=\"UTF-8\"?><root><name>John & Doe</name></root>";
|
||||||
|
assertThrowsExactly(SAXParseException.class, () -> parseXmlString(invalidXmlString));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenXml_whenReservedCharactersEscaped_thenSuccess() {
|
||||||
|
String validXmlString = "<?xml version=\"1.1\" encoding=\"UTF-8\"?><root><name>John & Doe</name></root>";
|
||||||
|
|
||||||
|
assertDoesNotThrow(() -> {
|
||||||
|
Document document = parseXmlString(validXmlString);
|
||||||
|
|
||||||
|
assertNotNull(document);
|
||||||
|
assertEquals("John & Doe", document.getElementsByTagName("name").item(0).getTextContent());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenXml_whenUsingCdataForReservedCharacters_thenSuccess() {
|
||||||
|
String validXmlString = "<?xml version=\"1.1\" encoding=\"UTF-8\"?><root><name><![CDATA[John & Doe]]></name></root>";
|
||||||
|
|
||||||
|
assertDoesNotThrow(() -> {
|
||||||
|
Document document = parseXmlString(validXmlString);
|
||||||
|
|
||||||
|
assertNotNull(document);
|
||||||
|
assertEquals("John & Doe", document.getElementsByTagName("name").item(0).getTextContent());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenXml_whenUnicodeCharacters_thenThrowException() {
|
||||||
|
String invalidXmlString = "<?xml version=\"1.1\" encoding=\"UTF-8\"?><root><name>John \u001E Doe</name></root>";
|
||||||
|
assertThrowsExactly(SAXParseException.class, () -> parseXmlString(invalidXmlString));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void givenXml_whenUnicodeCharactersEscaped_thenSuccess() {
|
||||||
|
String validXmlString = "<?xml version=\"1.1\" encoding=\"UTF-8\"?><root><name>John  Doe</name></root>";
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue