From ca497a2199ae79bcf398372e661af5bcccdab219 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Wed, 25 Nov 2020 20:49:31 +0100 Subject: [PATCH] [core] Fix parseContentDepthWithRoundtrip() and add tests --- .../smack/util/PacketParserUtils.java | 5 ++- .../smack/util/PacketParserUtilsTest.java | 36 +++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java b/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java index 67249b559..3501d8a2a 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java @@ -377,10 +377,9 @@ public class PacketParserUtils { outerloop: while (true) { switch (event) { case START_ELEMENT: - if (startElementJustSeen) { - sb.rightAngleBracket(); - } startElementJustSeen = true; + String openElementTag = parser.getText(); + sb.append(openElementTag); break; case END_ELEMENT: boolean isEmptyElement = false; diff --git a/smack-core/src/test/java/org/jivesoftware/smack/util/PacketParserUtilsTest.java b/smack-core/src/test/java/org/jivesoftware/smack/util/PacketParserUtilsTest.java index 3ac5215d5..f8eacf5cd 100644 --- a/smack-core/src/test/java/org/jivesoftware/smack/util/PacketParserUtilsTest.java +++ b/smack-core/src/test/java/org/jivesoftware/smack/util/PacketParserUtilsTest.java @@ -854,4 +854,40 @@ public class PacketParserUtilsTest { StanzaError error = PacketParserUtils.parseError(parser); assertEquals(text, error.getDescriptiveText()); } + + @ParameterizedTest + @EnumSource(SmackTestUtil.XmlPullParserKind.class) + public void testParseElementSimple(SmackTestUtil.XmlPullParserKind parserKind) throws TransformerException, ParserConfigurationException, FactoryConfigurationError, XmlPullParserException, IOException { + String unknownElement = XMLBuilder.create("unknown-element") + .ns("https://example.org/non-existent") + .e("inner") + .t("test") + .asString(outputProperties); + + XmlPullParser xmlPullParser = SmackTestUtil.getParserFor(unknownElement, parserKind); + + CharSequence unknownElementParsed = PacketParserUtils.parseElement(xmlPullParser); + assertXmlSimilar(unknownElement, unknownElementParsed); + } + + @ParameterizedTest + @EnumSource(SmackTestUtil.XmlPullParserKind.class) + public void testParseElementExtended(SmackTestUtil.XmlPullParserKind parserKind) throws TransformerException, ParserConfigurationException, FactoryConfigurationError, XmlPullParserException, IOException { + String unknownElement = XMLBuilder.create("unknown-element") + .ns("https://example.org/non-existent") + .a("attribute-outer", "foo") + .e("inner") + .a("attribute-inner", "bar") + .a("attribute-inner-2", "baz") + .t("test") + .up() + .e("empty-element") + .up() + .asString(outputProperties); + + XmlPullParser xmlPullParser = SmackTestUtil.getParserFor(unknownElement, parserKind); + + CharSequence unknownElementParsed = PacketParserUtils.parseElement(xmlPullParser); + assertXmlSimilar(unknownElement, unknownElementParsed); + } }