/** * @param output * @return * @throws XmlPullParserException * @throws IOException */ private static XmlPullParser getParser(String output) throws XmlPullParserException, IOException { return TestUtils.getParser(output, "validate"); } }
public static <EE extends ExtensionElement> EE parseExtensionElement(String elementString) throws Exception { return parseExtensionElement(getParser(elementString)); }
@Test(expected = XmlPullParserException.class) public void unknownMoodValueExceptionTest() throws Exception { String xml = "<mood xmlns='http://jabber.org/protocol/mood'>" + "<unknown/>" + "</mood>"; XmlPullParser parser = TestUtils.getParser(xml); MoodElement element = MoodProvider.INSTANCE.parse(parser); } }
@Test public void parseContentDepthTest() throws Exception { final String stanza = "<iq type='result' to='foo@bar.com' from='baz.com' id='42'/>"; XmlPullParser parser = TestUtils.getParser(stanza, "iq"); CharSequence content = PacketParserUtils.parseContent(parser); assertEquals("", content.toString()); }
@Test(expected = IllegalArgumentException.class) public void emptyPreKeysShouldFailTest() throws Exception { String s = "<bundle xmlns='eu.siacs.conversations.axolotl'><signedPreKeyPublic signedPreKeyId='1'>BU4bJ18+rqbSnBblZU8pR/s+impyhoL9AJssJIE59fZb</signedPreKeyPublic><signedPreKeySignature>MaQtv7ySqHpPr0gkVtMp4KmWC61Hnfs5a7/cKEhrX8n12evGdkg4fNf3Q/ufgmJu5dnup9pkTA1pj00dTbtXjw==</signedPreKeySignature><identityKey>BWO0QOem1YXIJuT61cxXpG/mKlvISDwZxQJHW2/7eVki</identityKey><prekeys></prekeys></bundle>"; XmlPullParser parser = TestUtils.getParser(s); new OmemoBundleVAxolotlProvider().parse(parser); }
@Test(expected = IllegalArgumentException.class) public void missingPreKeysShouldAlsoFailTest() throws Exception { String s = "<bundle xmlns='eu.siacs.conversations.axolotl'><signedPreKeyPublic signedPreKeyId='1'>BU4bJ18+rqbSnBblZU8pR/s+impyhoL9AJssJIE59fZb</signedPreKeyPublic><signedPreKeySignature>MaQtv7ySqHpPr0gkVtMp4KmWC61Hnfs5a7/cKEhrX8n12evGdkg4fNf3Q/ufgmJu5dnup9pkTA1pj00dTbtXjw==</signedPreKeySignature><identityKey>BWO0QOem1YXIJuT61cxXpG/mKlvISDwZxQJHW2/7eVki</identityKey></bundle>"; XmlPullParser parser = TestUtils.getParser(s); new OmemoBundleVAxolotlProvider().parse(parser); } }
@Test public void outOfOrderTest() throws Exception { String xml = "<out-of-order xmlns='urn:xmpp:jingle:errors:1'/>"; JingleError error = new JingleErrorProvider().parse(TestUtils.getParser(xml)); assertEquals(xml, error.toXML(null).toString()); }
@Test public void unsupportedInfoTest() throws Exception { String xml = "<unsupported-info xmlns='urn:xmpp:jingle:errors:1'/>"; JingleError error = new JingleErrorProvider().parse(TestUtils.getParser(xml)); assertEquals(xml, error.toXML(null).toString()); }
@Test public void unknownSessionTest() throws Exception { String xml = "<unknown-session xmlns='urn:xmpp:jingle:errors:1'/>"; JingleError error = new JingleErrorProvider().parse(TestUtils.getParser(xml)); assertEquals(xml, error.toXML(null).toString()); }
@Test public void tieBreakTest() throws Exception { String xml = "<tie-break xmlns='urn:xmpp:jingle:errors:1'/>"; JingleError error = new JingleErrorProvider().parse(TestUtils.getParser(xml)); assertEquals(xml, error.toXML(null).toString()); }
@Test public void originIdProviderTest() throws Exception { String xml = "<origin-id xmlns='urn:xmpp:sid:0' id='de305d54-75b4-431b-adb2-eb6b9e546013' />"; OriginIdElement element = new OriginIdElement("de305d54-75b4-431b-adb2-eb6b9e546013"); assertEquals("de305d54-75b4-431b-adb2-eb6b9e546013", element.getId()); assertXMLEqual(xml, element.toXML(null).toString()); OriginIdElement parsed = OriginIdProvider.TEST_INSTANCE.parse(TestUtils.getParser(xml)); assertEquals(element.getId(), parsed.getId()); }
@Test public void stanzaIdProviderTest() throws Exception { String xml = "<stanza-id xmlns='urn:xmpp:sid:0' id='de305d54-75b4-431b-adb2-eb6b9e546013' by='alice@wonderland.lit' />"; StanzaIdElement element = new StanzaIdElement("de305d54-75b4-431b-adb2-eb6b9e546013", "alice@wonderland.lit"); assertEquals("de305d54-75b4-431b-adb2-eb6b9e546013", element.getId()); assertEquals("alice@wonderland.lit", element.getBy()); assertXMLEqual(xml, element.toXML(null).toString()); StanzaIdElement parsed = StanzaIdProvider.TEST_INSTANCE.parse(TestUtils.getParser(xml)); assertEquals(element.getId(), parsed.getId()); assertEquals(element.getBy(), parsed.getBy()); }
@Test public void hintSpoilerTest() throws Exception { final String xml = "<spoiler xmlns='urn:xmpp:spoiler:0'>Love story end</spoiler>"; Message message = new Message(); SpoilerElement.addSpoiler(message, "Love story end"); SpoilerElement withHint = message.getExtension(SpoilerElement.ELEMENT, SpoilerManager.NAMESPACE_0); assertEquals("Love story end", withHint.getHint()); assertNull(withHint.getLanguage()); assertXMLEqual(xml, withHint.toXML(null).toString()); XmlPullParser parser = TestUtils.getParser(xml); SpoilerElement parsed = SpoilerProvider.INSTANCE.parse(parser); assertXMLEqual(xml, parsed.toXML(null).toString()); }
@Test public void providerTest() throws Exception { String expected = "<openpgp xmlns='urn:xmpp:openpgp:0'>" + "BASE64_OPENPGP_MESSAGE" + "</openpgp>"; OpenPgpElement element = new OpenPgpElement("BASE64_OPENPGP_MESSAGE"); assertXMLEqual(expected, element.toXML(null).toString()); XmlPullParser parser = TestUtils.getParser(expected); OpenPgpElement parsed = OpenPgpElementProvider.TEST_INSTANCE.parse(parser); assertEquals(element.getEncryptedBase64MessageContent(), parsed.getEncryptedBase64MessageContent()); }
@Test public void providerTest() throws Exception { String xml = "<idle xmlns='urn:xmpp:idle:1' since='1969-07-21T02:56:15Z' />"; XmlPullParser parser = TestUtils.getParser(xml); assertNotNull(parser); IdleElement parsed = IdleProvider.TEST_INSTANCE.parse(parser); Date date = XmppDateTime.parseXEP0082Date("1969-07-21T02:56:15Z"); assertEquals(date, parsed.getSince()); IdleElement element = new IdleElement(date); assertXMLEqual("<idle xmlns='urn:xmpp:idle:1' since='1969-07-21T02:56:15.000+00:00'/>", element.toXML(null).toString()); }
@Test public void stanzaRecognitionTest() throws Exception { String omemoXML = "<encrypted xmlns='eu.siacs.conversations.axolotl'><header sid='1009'><key rid='1337'>MwohBfRqBm2atj3fT0/KUDg59Cnvfpgoe/PLNIu1xgSXujEZEAAYACIwKh6TTC7VBQZcCcKnQlO+6s1GQ9DIRKH4JU7XrJ+JJnkPUwJ4VLSeOEQD7HmFbhQPTLZO0u/qlng=</key><iv>sN0amy4e2NBrlb4G/OjNIQ==</iv></header><payload>4xVUAeg4M0Mhk+5n3YG1x12Dw/cYTc0Z</payload></encrypted>"; OmemoElement omemoElement = new OmemoVAxolotlProvider().parse(TestUtils.getParser(omemoXML)); Message m = new Message(); m.addExtension(omemoElement); Message n = new Message(); assertTrue(OmemoManager.stanzaContainsOmemoElement(m)); assertFalse(OmemoManager.stanzaContainsOmemoElement(n)); } }
@Test public void emptySpoilerTest() throws Exception { final String xml = "<spoiler xmlns='urn:xmpp:spoiler:0'/>"; Message message = new Message(); SpoilerElement.addSpoiler(message); SpoilerElement empty = message.getExtension(SpoilerElement.ELEMENT, SpoilerManager.NAMESPACE_0); assertNull(empty.getHint()); assertNull(empty.getLanguage()); assertXMLEqual(xml, empty.toXML(null).toString()); XmlPullParser parser = TestUtils.getParser(xml); SpoilerElement parsed = SpoilerProvider.INSTANCE.parse(parser); assertXMLEqual(xml, parsed.toXML(null).toString()); }
@Test public void parseSASLFailureSimple() throws FactoryConfigurationError, SAXException, IOException, TransformerException, ParserConfigurationException, XmlPullParserException { // @formatter:off final String saslFailureString = XMLBuilder.create(SASLFailure.ELEMENT, SaslStreamElements.NAMESPACE) .e(SASLError.account_disabled.toString()) .asString(); // @formatter:on XmlPullParser parser = TestUtils.getParser(saslFailureString, SASLFailure.ELEMENT); SASLFailure saslFailure = PacketParserUtils.parseSASLFailure(parser); assertXMLEqual(saslFailureString, saslFailure.toString()); }
@Test public void emptyMoodTest() throws Exception { MoodElement empty = new MoodElement(null, null); assertNull(empty.getText()); assertNull(empty.getMood()); assertNull(empty.getMoodConcretisation()); assertFalse(empty.hasText()); assertFalse(empty.hasConcretisation()); String xml = "<mood xmlns='http://jabber.org/protocol/mood'/>"; XmlPullParser parser = TestUtils.getParser(xml); MoodElement emptyParsed = MoodProvider.INSTANCE.parse(parser); assertEquals(empty.toXML(null).toString(), emptyParsed.toXML(null).toString()); }
@Test public void ensureNoNullLangInParsedDescriptiveTexts() throws Exception { final String text = "Dummy descriptive text"; final String errorXml = XMLBuilder .create(StanzaError.ERROR).a("type", "cancel").up() .element("internal-server-error", StanzaError.ERROR_CONDITION_AND_TEXT_NAMESPACE).up() .element("text", StanzaError.ERROR_CONDITION_AND_TEXT_NAMESPACE).t(text).up() .asString(); XmlPullParser parser = TestUtils.getParser(errorXml); StanzaError error = PacketParserUtils.parseError(parser).build(); assertEquals(text, error.getDescriptiveText()); } }