From b5caf13c8a1b1c0e60e3344d9b398611a827c65b Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Wed, 8 Apr 2020 22:15:29 +0200 Subject: [PATCH] Add Nick JUnit test --- .../jivesoftware/smackx/nick/NickTest.java | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 smack-extensions/src/test/java/org/jivesoftware/smackx/nick/NickTest.java diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/nick/NickTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/nick/NickTest.java new file mode 100644 index 000000000..9819642f0 --- /dev/null +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/nick/NickTest.java @@ -0,0 +1,83 @@ +/** + * + * Copyright 2020 Paul Schaub + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jivesoftware.smackx.nick; + +import static org.jivesoftware.smack.test.util.XmlUnitUtils.assertXmlSimilar; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThrows; + +import java.io.IOException; + +import org.jivesoftware.smack.parsing.SmackParsingException; +import org.jivesoftware.smack.test.util.SmackTestUtil; +import org.jivesoftware.smack.xml.XmlPullParserException; +import org.jivesoftware.smackx.nick.packet.Nick; +import org.jivesoftware.smackx.nick.provider.NickProvider; + +import org.junit.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EnumSource; + +public class NickTest { + /** + * see XEP-0172: User Nickname - Example 3 + */ + private static final String XML = "Ishmael"; + + @Test + public void disallowEmptyNickTest() { + assertThrows("Empty String as argument MUST cause IllegalArgumentException.", + IllegalArgumentException.class, () -> new Nick("")); + } + + @Test + public void disallowNullNickTest() { + assertThrows("Null argument MUST cause IllegalArgumentException.", + IllegalArgumentException.class, () -> new Nick(null)); + } + + + @Test + public void serializationTest() { + Nick nick = new Nick("Ishmael"); + + assertXmlSimilar(XML, nick.toXML()); + } + + @ParameterizedTest + @EnumSource(SmackTestUtil.XmlPullParserKind.class) + public void deserializationTest(SmackTestUtil.XmlPullParserKind parserKind) + throws XmlPullParserException, IOException, SmackParsingException { + Nick nick = SmackTestUtil.parse(XML, NickProvider.class, parserKind); + + assertNotNull(nick); + assertEquals("Ishmael", nick.getName()); + } + + @Test + public void nicksAreEscapedTest() { + String name = "\"'&"; + + Nick nick = new Nick(name); + + assertXmlSimilar("" + + "</nick>"'&" + + "", nick.toXML()); + assertEquals(name, nick.getName()); + } +}