diff --git a/smack-experimental/src/test/java/org/jivesoftware/smackx/httpfileupload/provider/SlotProviderTest.java b/smack-experimental/src/test/java/org/jivesoftware/smackx/httpfileupload/provider/SlotProviderTest.java index 386b1f596..dc16ef9e9 100644 --- a/smack-experimental/src/test/java/org/jivesoftware/smackx/httpfileupload/provider/SlotProviderTest.java +++ b/smack-experimental/src/test/java/org/jivesoftware/smackx/httpfileupload/provider/SlotProviderTest.java @@ -1,6 +1,6 @@ /** * - * Copyright © 2017 Grigory Fedorov + * Copyright © 2017 Grigory Fedorov, Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,41 +16,108 @@ */ package org.jivesoftware.smackx.httpfileupload.provider; +import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual; +import static org.junit.Assert.assertEquals; + +import java.net.MalformedURLException; import java.net.URL; -import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.util.PacketParserUtils; import org.jivesoftware.smackx.httpfileupload.element.Slot; +import org.jivesoftware.smackx.httpfileupload.element.Slot_V0_2; -import org.junit.Assert; import org.junit.Test; public class SlotProviderTest { + private static final String PUT_URL_STRING = "https://upload.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png"; + + private static final String GET_URL_STRING = "https://download.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png"; + + private static final URL PUT_URL = urlFromString(PUT_URL_STRING); + private static final URL GET_URL = urlFromString(GET_URL_STRING); + + private static URL urlFromString(String urlString) { + try { + return new URL(urlString); + } + catch (MalformedURLException e) { + throw new Error(e); + } + } + /** * Example 6. The upload service responds with a slot * @see XEP-0363: HTTP File Upload 4. Requesting a slot */ - String slotExample + private static final String SLOT_IQ = "" + "" - + "" - + "" + + "" + + "" + "" + ""; @Test public void checkSlotProvider() throws Exception { - Slot slot = PacketParserUtils.parseStanza(slotExample); + Slot slot = PacketParserUtils.parseStanza(SLOT_IQ); - Assert.assertEquals(IQ.Type.result, slot.getType()); - Assert.assertEquals(new URL("https://upload.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png"), - slot.getPutUrl()); - Assert.assertEquals(new URL("https://download.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/my_juliet.png"), - slot.getGetUrl()); + checkUrls(slot); + + assertXMLEqual(SLOT_IQ, slot.toXML().toString()); + } + + private static final String SLOT_V0_2_IQ = + "" + + "" + + "" + PUT_URL_STRING + "" + + "" + GET_URL_STRING + "" + + "" + + ""; + + @Test + public void checkSlotV0_2Provider() throws Exception { + Slot_V0_2 slot = PacketParserUtils.parseStanza(SLOT_V0_2_IQ); + + checkUrls(slot); + + String slotXml = slot.toXML().toString(); + assertXMLEqual(SLOT_V0_2_IQ, slotXml); + } + + private static final String SLOT_WITH_HEADERS_IQ = + "" + + "" + + "" + + "
Basic Base64String==
" + + "
montague.tld
" + + "
" + + "" + + "
" + + "
"; + + @Test + public void checkSlotWithHeaders() throws Exception { + Slot slot = PacketParserUtils.parseStanza(SLOT_WITH_HEADERS_IQ); + + checkUrls(slot); + + String slotXml = slot.toXML().toString(); + assertXMLEqual(SLOT_WITH_HEADERS_IQ, slotXml); + } + + private static void checkUrls(Slot slot) { + assertEquals(PUT_URL, slot.getPutUrl()); + assertEquals(GET_URL, slot.getGetUrl()); } }