/**
*
* 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);
}
}