/** * * 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.urldata; import static org.jivesoftware.smack.test.util.XmlAssertUtil.assertXmlSimilar; import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.IOException; import java.util.Arrays; import java.util.Collections; import org.jivesoftware.smack.parsing.SmackParsingException; import org.jivesoftware.smack.test.util.SmackTestSuite; import org.jivesoftware.smack.test.util.TestUtils; import org.jivesoftware.smack.xml.XmlPullParserException; import org.jivesoftware.smackx.urldata.element.UrlDataElement; import org.jivesoftware.smackx.urldata.http.element.CookieElement; import org.jivesoftware.smackx.urldata.http.element.HeaderElement; import org.jivesoftware.smackx.urldata.http.element.HttpAuthElement; import org.jivesoftware.smackx.urldata.provider.UrlDataElementProvider; import org.junit.jupiter.api.Test; public class UrlDataElementTest extends SmackTestSuite { public static final UrlDataElementProvider URL_DATA_ELEMENT_PROVIDER = new UrlDataElementProvider(); @Test public void simpleSerializationTest() throws XmlPullParserException, IOException, SmackParsingException { UrlDataElement urlDataElement = new UrlDataElement("http://www.jabber.org/members/index.php", null, Collections.singletonList(HttpAuthElement.basicAuth()), null, null); final String expectedXml = "" + "" + "" + ""; assertXmlSimilar(expectedXml, urlDataElement.toXML().toString()); UrlDataElement parsed = URL_DATA_ELEMENT_PROVIDER.parse(TestUtils.getParser(expectedXml)); assertEquals(urlDataElement, parsed); } @Test public void additionalAuthParamTest() throws XmlPullParserException, IOException, SmackParsingException { UrlDataElement urlDataElement = new UrlDataElement("http://www.jabber.org/members/index.php", null, Collections.singletonList(HttpAuthElement.basicAuth( "www.jabber.org", "defaultuser", "defaultpwd" )), null, null); final String expectedXml = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " "; assertXmlSimilar(expectedXml, urlDataElement.toXML().toString()); UrlDataElement parsed = URL_DATA_ELEMENT_PROVIDER.parse(TestUtils.getParser(expectedXml)); assertEquals(urlDataElement, parsed); } @Test public void simpleUrlWithSidTest() throws XmlPullParserException, IOException, SmackParsingException { UrlDataElement urlDataElement = new UrlDataElement("http://pass.jabber.org:8519/test.txt", "a0"); final String expectedXml = ""; assertXmlSimilar(expectedXml, urlDataElement.toXML().toString()); UrlDataElement parsed = URL_DATA_ELEMENT_PROVIDER.parse(TestUtils.getParser(expectedXml)); assertEquals(urlDataElement, parsed); } @Test public void simpleUrlNoChildrenTest() throws XmlPullParserException, IOException, SmackParsingException { UrlDataElement urlDataElement = new UrlDataElement("http://festhall.outer-planes.net/d20M/announce/latest/", null); final String expectedXml = ""; assertXmlSimilar(expectedXml, urlDataElement.toXML().toString()); UrlDataElement parsed = URL_DATA_ELEMENT_PROVIDER.parse(TestUtils.getParser(expectedXml)); assertEquals(urlDataElement, parsed); } @Test public void simpleCookieTest() throws XmlPullParserException, IOException, SmackParsingException { UrlDataElement urlDataElement = new UrlDataElement("http://www.jabber.org/members/index.php", null, null, Collections.singletonList(new CookieElement("jsessionid", "1243asd234190sa32ds")), null); final String expectedXml = "" + "\n" + " \n" + ""; assertXmlSimilar(expectedXml, urlDataElement.toXML().toString()); UrlDataElement parsed = URL_DATA_ELEMENT_PROVIDER.parse(TestUtils.getParser(expectedXml)); assertEquals(urlDataElement, parsed); } @Test public void additionalParametersCookieTest() throws XmlPullParserException, IOException, SmackParsingException { UrlDataElement urlDataElement = new UrlDataElement("http://www.jabber.org/members/index.php", null, null, Collections.singletonList(new CookieElement( "jsessionid", "1243asd234190sa32ds", "jabber.org", 1234000, "/members", "Web Session Identifier", "1.0", false )), null); final String expectedXml = "\n" + " \n" + ""; assertXmlSimilar(expectedXml, urlDataElement.toXML().toString()); UrlDataElement parsed = URL_DATA_ELEMENT_PROVIDER.parse(TestUtils.getParser(expectedXml)); assertEquals(urlDataElement, parsed); } @Test public void simpleHeaderTest() throws XmlPullParserException, IOException, SmackParsingException { UrlDataElement urlDataElement = new UrlDataElement( "http://www.jabber.org/members/index.php", null, null, null, Collections.singletonList(new HeaderElement("Custom-Data", "some custom data"))); final String expectedXml = "\n" + " \n" + " "; assertXmlSimilar(expectedXml, urlDataElement.toXML().toString()); UrlDataElement parsed = URL_DATA_ELEMENT_PROVIDER.parse(TestUtils.getParser(expectedXml)); assertEquals(urlDataElement, parsed); } @Test public void multiChildTest() throws XmlPullParserException, IOException, SmackParsingException { UrlDataElement urlDataElement = new UrlDataElement( "https://blog.jabberhead.tk", null, Collections.singletonList(HttpAuthElement.basicAuth()), Arrays.asList( new CookieElement("jsessionid", "somecookievalue"), new CookieElement("come2darkSide", "weHaveCookies")), Arrays.asList( new HeaderElement("Accept", "text/plain"), new HeaderElement("Access-Control-Allow-Origin", "*"))); final String expectedXml = "\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " "; assertXmlSimilar(expectedXml, urlDataElement.toXML().toString()); UrlDataElement parsed = URL_DATA_ELEMENT_PROVIDER.parse(TestUtils.getParser(expectedXml)); assertEquals(urlDataElement, parsed); } }