package org.mockserver.matchers;
import org.junit.Test;
import static org.junit.Assert.*;
import static org.mockserver.matchers.NotMatcher.not;
import static org.mockserver.model.NottableString.string;
/**
* @author jamesdbloom
*/
public class XmlStringMatcherTest {
@Test
public void shouldMatchMatchingXML() {
String matched = "" +
"<element>" +
" <key>some_key</key>" +
" <value>some_value</value>" +
"</element>";
assertTrue(new XmlStringMatcher("<element><key>some_key</key><value>some_value</value></element>").matches(matched));
assertTrue(new XmlStringMatcher("" +
"<element>" +
" <key>some_key</key>" +
" <value>some_value</value>" +
"</element>").matches(matched));
}
@Test
public void shouldNotMatchMatchingXMLWithNot() {
String matched = "" +
"<element>" +
" <key>some_key</key>" +
" <value>some_value</value>" +
"</element>";
assertFalse(not(new XmlStringMatcher("<element><key>some_key</key><value>some_value</value></element>")).matches(matched));
assertFalse(not(new XmlStringMatcher("" +
"<element>" +
" <key>some_key</key>" +
" <value>some_value</value>" +
"</element>")).matches(matched));
}
@Test
public void shouldMatchMatchingXMLWithDifferentAttributeOrder() {
String matched = "" +
"<element attributeOne=\"one\" attributeTwo=\"two\">" +
" <key attributeOne=\"one\" attributeTwo=\"two\">some_key</key>" +
" <value>some_value</value>" +
"</element>";
assertTrue(new XmlStringMatcher("<element attributeTwo=\"two\" attributeOne=\"one\"><key attributeTwo=\"two\" attributeOne=\"one\">some_key</key><value>some_value</value></element>").matches(matched));
assertTrue(new XmlStringMatcher("<element attributeTwo=\"two\" attributeOne=\"one\">" +
" <key attributeTwo=\"two\" attributeOne=\"one\">some_key</key>" +
" <value>some_value</value>" +
"</element>").matches(matched));
}
@Test
public void shouldNotMatchInvalidXml() {
assertFalse(new XmlStringMatcher("invalid xml").matches("<element></element>"));
assertFalse(new XmlStringMatcher("<element></element>").matches("invalid_xml"));
}
@Test
public void shouldNotMatchNullExpectation() {
assertFalse(new XmlStringMatcher(string(null)).matches("some_value"));
assertFalse(new XmlStringMatcher((String) null).matches("some_value"));
}
@Test
public void shouldNotMatchEmptyExpectation() {
assertFalse(new XmlStringMatcher("").matches("some_value"));
}
@Test
public void shouldNotMatchNotMatchingXML() {
String matched = "" +
"<element>" +
" <key>some_key</key>" +
" <value>some_value</value>" +
"</element>";
assertFalse(new XmlStringMatcher("" +
"<another_element>" +
" <key>some_key</key>" +
" <value>some_value</value>" +
"</another_element>").matches(matched));
assertFalse(new XmlStringMatcher("" +
"<element>" +
" <another_key>some_key</another_key>" +
" <value>some_value</value>" +
"</element>").matches(matched));
assertFalse(new XmlStringMatcher("" +
"<element>" +
" <key>some_key</key>" +
" <another_value>some_value</another_value>" +
"</element>").matches(matched));
assertFalse(new XmlStringMatcher("" +
"<element>" +
" <key>some_other_key</key>" +
" <value>some_value</value>" +
"</element>").matches(matched));
}
@Test
public void shouldMatchNotMatchingXMLWithNot() {
String matched = "" +
"<element>" +
" <key>some_key</key>" +
" <value>some_value</value>" +
"</element>";
assertTrue(not(new XmlStringMatcher("" +
"<another_element>" +
" <key>some_key</key>" +
" <value>some_value</value>" +
"</another_element>")).matches(matched));
assertTrue(not(new XmlStringMatcher("" +
"<element>" +
" <another_key>some_key</another_key>" +
" <value>some_value</value>" +
"</element>")).matches(matched));
}
@Test
public void shouldNotMatchXMLWithDifferentAttributes() {
String matched = "" +
"<element someAttribute=\"some_value\">" +
" <key>some_key</key>" +
" <value>some_value</value>" +
"</element>";
assertFalse(new XmlStringMatcher("" +
"<element someOtherAttribute=\"some_value\">" +
" <key>some_key</key>" +
" <value>some_value</value>" +
"</element>").matches(matched));
assertFalse(new XmlStringMatcher("" +
"<element someAttribute=\"some_other_value\">" +
" <key>some_key</key>" +
" <value>some_value</value>" +
"</element>").matches(matched));
}
@Test
public void shouldNotMatchNullTest() {
assertFalse(new XmlStringMatcher("some_value").matches(string(null)));
assertFalse(new XmlStringMatcher("some_value").matches((String) null));
}
@Test
public void shouldMatchNullTest() {
assertTrue(not(new XmlStringMatcher("some_value")).matches(string(null)));
assertTrue(not(new XmlStringMatcher("some_value")).matches((String) null));
}
@Test
public void shouldNotMatchEmptyTest() {
assertFalse(new XmlStringMatcher("some_value").matches(""));
}
@Test
public void showHaveCorrectEqualsBehaviour() {
assertEquals(new XmlStringMatcher("some_value"), new XmlStringMatcher("some_value"));
}
}