mirror of
https://github.com/vanitasvitae/Smack.git
synced 2025-09-10 17:49:38 +02:00
Remove errors
This commit is contained in:
parent
3f6df8e6c7
commit
3ed3f53189
58 changed files with 849 additions and 2028 deletions
|
@ -1,9 +1,26 @@
|
|||
/**
|
||||
*
|
||||
* Copyright 2017 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.jingle;
|
||||
|
||||
/**
|
||||
* Created by vanitas on 27.07.17.
|
||||
*/
|
||||
public interface JingleDescriptionController {
|
||||
|
||||
enum State {
|
||||
pending, //Not yet accepted by us/peer
|
||||
negotiating, //Accepted, but still negotiating transports etc.
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/**
|
||||
*
|
||||
* Copyright 2017 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.jingle.callbacks;
|
||||
|
||||
import org.jivesoftware.smackx.jingle.JingleDescriptionController;
|
||||
|
|
|
@ -54,9 +54,9 @@ public class JingleContent {
|
|||
private String name;
|
||||
private String disposition;
|
||||
private JingleContentElement.Senders senders;
|
||||
private JingleDescription description;
|
||||
private JingleTransport transport;
|
||||
private JingleSecurity security;
|
||||
private JingleDescription<?> description;
|
||||
private JingleTransport<?> transport;
|
||||
private JingleSecurity<?> security;
|
||||
|
||||
private final List<Callback> callbacks = Collections.synchronizedList(new ArrayList<Callback>());
|
||||
private final Set<String> transportBlacklist = Collections.synchronizedSet(new HashSet<String>());
|
||||
|
@ -75,7 +75,7 @@ public class JingleContent {
|
|||
this(null, null, null, randomName(), null, creator, senders);
|
||||
}
|
||||
|
||||
public JingleContent(JingleDescription description, JingleTransport transport, JingleSecurity security, String name, String disposition, JingleContentElement.Creator creator, JingleContentElement.Senders senders) {
|
||||
public JingleContent(JingleDescription<?> description, JingleTransport<?> transport, JingleSecurity<?> security, String name, String disposition, JingleContentElement.Creator creator, JingleContentElement.Senders senders) {
|
||||
this.description = description;
|
||||
this.transport = transport;
|
||||
this.security = security;
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/**
|
||||
*
|
||||
* Copyright 2017 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.jingle.components;
|
||||
|
||||
import java.io.IOException;
|
||||
|
|
|
@ -29,21 +29,20 @@ import java.util.logging.Logger;
|
|||
import org.jivesoftware.smack.SmackException;
|
||||
import org.jivesoftware.smack.XMPPException;
|
||||
import org.jivesoftware.smack.packet.IQ;
|
||||
import org.jivesoftware.smackx.jingle.JingleDescriptionManager;
|
||||
import org.jivesoftware.smackx.jingle.JingleManager;
|
||||
import org.jivesoftware.smackx.jingle.util.Role;
|
||||
import org.jivesoftware.smackx.jingle.adapter.JingleTransportAdapter;
|
||||
import org.jivesoftware.smackx.jingle.callbacks.ContentAddCallback;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleAction;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionElement;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleContentElement;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleContentTransportElement;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleContentTransportInfoElement;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleElement;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleReasonElement;
|
||||
import org.jivesoftware.smackx.jingle.exception.UnsupportedDescriptionException;
|
||||
import org.jivesoftware.smackx.jingle.exception.UnsupportedSecurityException;
|
||||
import org.jivesoftware.smackx.jingle.exception.UnsupportedTransportException;
|
||||
import org.jivesoftware.smackx.jingle.JingleDescriptionManager;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleAction;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleContentElement;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleContentTransportInfoElement;
|
||||
import org.jivesoftware.smackx.jingle.util.Role;
|
||||
|
||||
import org.jxmpp.jid.FullJid;
|
||||
|
||||
|
@ -360,21 +359,6 @@ public class JingleSession {
|
|||
|
||||
for (final JingleContent content : descriptionCategory.getValue()) {
|
||||
descriptionManager.notifyContentAdd(content);
|
||||
|
||||
ContentAddCallback callback = new ContentAddCallback() {
|
||||
@Override
|
||||
public void acceptContentAdd() {
|
||||
contents.put(content.getName(), content);
|
||||
acceptedContents.add(content.getElement());
|
||||
// TODO: Send content-accept
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rejectContentAdd() {
|
||||
// TODO: Send content-reject
|
||||
}
|
||||
};
|
||||
descriptionManager
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ public abstract class JingleTransport<D extends JingleContentTransportElement> e
|
|||
private JingleContent parent;
|
||||
private final ArrayList<JingleTransportCandidate<?>> candidates = new ArrayList<>();
|
||||
|
||||
private JingleTransport peersProposal;
|
||||
private JingleTransport<?> peersProposal;
|
||||
private boolean isPeersProposal;
|
||||
|
||||
protected BytestreamSession bytestreamSession;
|
||||
|
@ -81,7 +81,7 @@ public abstract class JingleTransport<D extends JingleContentTransportElement> e
|
|||
public abstract void establishOutgoingBytestreamSession(XMPPConnection connection)
|
||||
throws SmackException.NotConnectedException, InterruptedException;
|
||||
|
||||
public void setPeersProposal(JingleTransport peersProposal) {
|
||||
public void setPeersProposal(JingleTransport<?> peersProposal) {
|
||||
this.peersProposal = peersProposal;
|
||||
peersProposal.isPeersProposal = true;
|
||||
}
|
||||
|
|
|
@ -100,7 +100,7 @@ public class JingleS5BTransport extends JingleTransport<JingleS5BTransportElemen
|
|||
.setDestinationAddress(dstAddr)
|
||||
.setMode(mode);
|
||||
|
||||
for (JingleTransportCandidate candidate : getCandidates()) {
|
||||
for (JingleTransportCandidate<?> candidate : getCandidates()) {
|
||||
builder.addTransportCandidate((JingleS5BTransportCandidateElement) candidate.getElement());
|
||||
}
|
||||
|
||||
|
@ -156,7 +156,7 @@ public class JingleS5BTransport extends JingleTransport<JingleS5BTransportElemen
|
|||
}
|
||||
|
||||
public JingleS5BTransportCandidate connectToCandidates(int timeout) {
|
||||
for (JingleTransportCandidate c : getCandidates()) {
|
||||
for (JingleTransportCandidate<?> c : getCandidates()) {
|
||||
int _timeout = timeout / getCandidates().size(); //TODO: Wise?
|
||||
try {
|
||||
return ((JingleS5BTransportCandidate) c).connect(_timeout);
|
||||
|
|
|
@ -67,6 +67,7 @@ public class JingleS5BTransportCandidate extends JingleTransportCandidate<Jingle
|
|||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JingleS5BTransportCandidateElement getElement() {
|
||||
return new JingleS5BTransportCandidateElement(
|
||||
getCandidateId(), getStreamHost().getAddress(),
|
||||
|
|
|
@ -14,6 +14,7 @@ public class S5BTransportException extends FailedTransportException {
|
|||
}
|
||||
|
||||
public static class CandidateError extends S5BTransportException {
|
||||
protected static final long serialVersionUID = 1L;
|
||||
|
||||
public CandidateError(Throwable throwable) {
|
||||
super(throwable);
|
||||
|
@ -21,6 +22,7 @@ public class S5BTransportException extends FailedTransportException {
|
|||
}
|
||||
|
||||
public static class ProxyError extends S5BTransportException {
|
||||
protected static final long serialVersionUID = 1L;
|
||||
|
||||
public ProxyError(Throwable throwable) {
|
||||
super(throwable);
|
||||
|
|
|
@ -18,64 +18,435 @@ package org.jivesoftware.smackx.jingle;
|
|||
|
||||
import static junit.framework.TestCase.assertEquals;
|
||||
import static junit.framework.TestCase.assertNotNull;
|
||||
import static junit.framework.TestCase.assertTrue;
|
||||
import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.jivesoftware.smack.DummyConnection;
|
||||
import org.jivesoftware.smack.XMPPConnection;
|
||||
import org.jivesoftware.smack.packet.IQ;
|
||||
import org.jivesoftware.smack.test.util.SmackTestSuite;
|
||||
|
||||
import org.jivesoftware.smackx.jingle.element.JingleElement;
|
||||
import org.jivesoftware.smack.test.util.TestUtils;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleAction;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleContentElement;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleElement;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleReasonElement;
|
||||
import org.jivesoftware.smackx.jingle.provider.JingleProvider;
|
||||
import org.jivesoftware.smackx.jingle.transport.jingle_ibb.element.JingleIBBTransportElement;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.jxmpp.jid.FullJid;
|
||||
import org.jxmpp.jid.impl.JidCreate;
|
||||
import org.jxmpp.stringprep.XmppStringprepException;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
* Test the Jingle class.
|
||||
* Test the JingleUtil class.
|
||||
*/
|
||||
public class JingleElementTest extends SmackTestSuite {
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void emptyBuilderTest() {
|
||||
JingleElement.Builder builder = JingleElement.getBuilder();
|
||||
builder.build();
|
||||
}
|
||||
private FullJid romeo;
|
||||
private FullJid juliet;
|
||||
|
||||
@Test(expected = NullPointerException.class)
|
||||
public void onlySessionIdBuilderTest() {
|
||||
String sessionId = "testSessionId";
|
||||
@Before
|
||||
public void setup() throws XmppStringprepException {
|
||||
|
||||
JingleElement.Builder builder = JingleElement.getBuilder();
|
||||
builder.setSessionId(sessionId);
|
||||
builder.build();
|
||||
XMPPConnection connection = new DummyConnection(
|
||||
DummyConnection.getDummyConfigurationBuilder()
|
||||
.setUsernameAndPassword("romeo@montague.lit",
|
||||
"iluvJulibabe13").build());
|
||||
JingleManager jm = JingleManager.getInstanceFor(connection);
|
||||
romeo = connection.getUser().asFullJidOrThrow();
|
||||
juliet = JidCreate.fullFrom("juliet@capulet.lit/balcony");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parserTest() throws XmppStringprepException {
|
||||
String sessionId = "testSessionId";
|
||||
|
||||
JingleElement.Builder builder = JingleElement.getBuilder();
|
||||
builder.setSessionId(sessionId);
|
||||
builder.setAction(JingleAction.session_initiate);
|
||||
|
||||
FullJid romeo = JidCreate.fullFrom("romeo@montague.lit/orchard");
|
||||
FullJid juliet = JidCreate.fullFrom("juliet@capulet.lit/balcony");
|
||||
builder.setInitiator(romeo);
|
||||
builder.setResponder(juliet);
|
||||
|
||||
JingleElement jingle = builder.build();
|
||||
public void createSessionTerminateDeclineTest() throws Exception {
|
||||
JingleElement terminate = JingleElement.createSessionTerminate(juliet, "thisismadness", JingleReasonElement.Reason.decline);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisismadness'>" +
|
||||
"<reason>" +
|
||||
"<decline/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, terminate.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, terminate.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(romeo, jingle.getInitiator());
|
||||
assertEquals(juliet, jingle.getResponder());
|
||||
assertEquals(jingle.getAction(), JingleAction.session_initiate);
|
||||
assertEquals(sessionId, jingle.getSid());
|
||||
assertEquals(jingle.getAction(), JingleAction.session_terminate);
|
||||
assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.decline);
|
||||
}
|
||||
|
||||
String xml = "<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"initiator='romeo@montague.lit/orchard' " +
|
||||
"responder='juliet@capulet.lit/balcony' " +
|
||||
"action='session-initiate' " +
|
||||
"sid='" + sessionId + "'>" +
|
||||
"</jingle>";
|
||||
assertTrue(jingle.toXML().toString().contains(xml));
|
||||
@Test
|
||||
public void createSessionTerminateSuccessTest() throws Exception {
|
||||
JingleElement success = JingleElement.createSessionTerminate(juliet, "thisissparta", JingleReasonElement.Reason.success);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisissparta'>" +
|
||||
"<reason>" +
|
||||
"<success/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, success.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, success.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(jingle.getAction(), JingleAction.session_terminate);
|
||||
assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.success);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateBusyTest() throws Exception {
|
||||
JingleElement busy = JingleElement.createSessionTerminate(juliet, "thisispatrick", JingleReasonElement.Reason.busy);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisispatrick'>" +
|
||||
"<reason>" +
|
||||
"<busy/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, busy.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, busy.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(jingle.getAction(), JingleAction.session_terminate);
|
||||
assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.busy);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateAlternativeSessionTest() throws Exception {
|
||||
JingleElement busy = JingleElement.createSessionTerminate(juliet, "thisistherhythm", JingleReasonElement.AlternativeSession("ofthenight"));
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisistherhythm'>" +
|
||||
"<reason>" +
|
||||
"<alternative-session>" +
|
||||
"<sid>ofthenight</sid>" +
|
||||
"</alternative-session>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, busy.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, busy.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(jingle.getAction(), JingleAction.session_terminate);
|
||||
assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.alternative_session);
|
||||
JingleReasonElement.AlternativeSession alt = (JingleReasonElement.AlternativeSession) jingle.getReason();
|
||||
assertEquals("ofthenight", alt.getAlternativeSessionId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateCancelTest() throws Exception {
|
||||
JingleElement cancel = JingleElement.createSessionTerminate(juliet, "thisistheend", JingleReasonElement.Reason.cancel);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisistheend'>" +
|
||||
"<reason>" +
|
||||
"<cancel/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, cancel.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, cancel.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(jingle.getAction(), JingleAction.session_terminate);
|
||||
assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.cancel);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateUnsupportedTransportsTest() throws Exception {
|
||||
JingleElement unsupportedTransports = JingleElement.createSessionTerminate(juliet, "thisisus", JingleReasonElement.Reason.unsupported_transports);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisisus'>" +
|
||||
"<reason>" +
|
||||
"<unsupported-transports/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, unsupportedTransports.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, unsupportedTransports.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(jingle.getAction(), JingleAction.session_terminate);
|
||||
assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.unsupported_transports);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateUnsupportedApplicationsTest() throws Exception {
|
||||
JingleElement unsupportedApplications = JingleElement.createSessionTerminate(juliet, "thisiswar", JingleReasonElement.Reason.unsupported_applications);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisiswar'>" +
|
||||
"<reason>" +
|
||||
"<unsupported-applications/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, unsupportedApplications.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, unsupportedApplications.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(jingle.getAction(), JingleAction.session_terminate);
|
||||
assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.unsupported_applications);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateFailedTransportTest() throws IOException, SAXException {
|
||||
JingleElement failedTransport = JingleElement.createSessionTerminate(juliet, "derailed", JingleReasonElement.Reason.failed_transport);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='derailed'>" +
|
||||
"<reason>" +
|
||||
"<failed-transport/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, failedTransport.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, failedTransport.toXML().toString());
|
||||
assertEquals(JingleAction.session_terminate, failedTransport.getAction());
|
||||
assertEquals(JingleReasonElement.Reason.failed_transport, failedTransport.getReason().asEnum());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateFailedApplicationTest() throws IOException, SAXException {
|
||||
JingleElement failedApplication = JingleElement.createSessionTerminate(juliet, "crashed", JingleReasonElement.Reason.failed_application);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='crashed'>" +
|
||||
"<reason>" +
|
||||
"<failed-application/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, failedApplication.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, failedApplication.toXML().toString());
|
||||
assertEquals(JingleAction.session_terminate, failedApplication.getAction());
|
||||
assertEquals(JingleReasonElement.Reason.failed_application, failedApplication.getReason().asEnum());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionPingTest() throws Exception {
|
||||
JingleElement ping = JingleElement.createSessionPing(juliet, "thisisit");
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-info' " +
|
||||
"sid='thisisit'/>";
|
||||
String xml = getIQXML(romeo, juliet, ping.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, ping.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(JingleAction.session_info, jingle.getAction());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateContentCancelTest() throws Exception {
|
||||
JingleElement cancel = JingleElement.createSessionTerminateContentCancel(juliet, "thisismumbo#5", JingleContentElement.Creator.initiator, "content123");
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisismumbo#5'>" +
|
||||
"<content creator='initiator' name='content123'/>" +
|
||||
"<reason>" +
|
||||
"<cancel/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, cancel.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, cancel.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(JingleAction.session_terminate, jingle.getAction());
|
||||
assertEquals(JingleReasonElement.Reason.cancel, jingle.getReason().asEnum());
|
||||
assertEquals("thisismumbo#5", jingle.getSid());
|
||||
JingleContentElement content = jingle.getContents().get(0);
|
||||
assertNotNull(content);
|
||||
assertEquals("content123", content.getName());
|
||||
assertEquals(JingleContentElement.Creator.initiator, content.getCreator());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateIncompatibleParameters() throws IOException, SAXException {
|
||||
JingleElement terminate = JingleElement.createSessionTerminate(juliet, "incompatibleSID", JingleReasonElement.Reason.incompatible_parameters);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='incompatibleSID'>" +
|
||||
"<reason>" +
|
||||
"<incompatible-parameters/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, terminate.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, terminate.toXML().toString());
|
||||
assertEquals(JingleReasonElement.Reason.incompatible_parameters, terminate.getReason().asEnum());
|
||||
assertEquals("incompatibleSID", terminate.getSid());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createTransportAcceptTest() throws IOException, SAXException {
|
||||
JingleElement transportAccept = JingleElement.createTransportAccept(juliet, romeo, "transAcc", JingleContentElement.Creator.initiator, "cname", new JingleIBBTransportElement("transid", JingleIBBTransportElement.DEFAULT_BLOCK_SIZE));
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='transport-accept' " +
|
||||
"initiator='" + romeo + "' " +
|
||||
"sid='transAcc'>" +
|
||||
"<content creator='initiator' name='cname'>" +
|
||||
"<transport xmlns='urn:xmpp:jingle:transports:ibb:1' " +
|
||||
"block-size='" + JingleIBBTransportElement.DEFAULT_BLOCK_SIZE + "' " +
|
||||
"sid='transid'/>" +
|
||||
"</content>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, transportAccept.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, transportAccept.toXML().toString());
|
||||
assertEquals(JingleAction.transport_accept, transportAccept.getAction());
|
||||
assertEquals("transAcc", transportAccept.getSid());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createTransportRejectTest() {
|
||||
//TODO: Find example
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createTransportReplaceTest() throws IOException, SAXException {
|
||||
JingleElement transportReplace = JingleElement.createTransportReplace(juliet, romeo, "transAcc", JingleContentElement.Creator.initiator, "cname", new JingleIBBTransportElement("transid", JingleIBBTransportElement.DEFAULT_BLOCK_SIZE));
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='transport-replace' " +
|
||||
"initiator='" + romeo + "' " +
|
||||
"sid='transAcc'>" +
|
||||
"<content creator='initiator' name='cname'>" +
|
||||
"<transport xmlns='urn:xmpp:jingle:transports:ibb:1' " +
|
||||
"block-size='" + JingleIBBTransportElement.DEFAULT_BLOCK_SIZE + "' " +
|
||||
"sid='transid'/>" +
|
||||
"</content>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, transportReplace.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, transportReplace.toXML().toString());
|
||||
assertEquals(JingleAction.transport_replace, transportReplace.getAction());
|
||||
assertEquals("transAcc", transportReplace.getSid());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createErrorMalformedRequestTest() throws Exception {
|
||||
JingleElement j = defaultJingle(romeo, "error123");
|
||||
IQ error = JingleElement.createJingleErrorMalformedRequest(j);
|
||||
String xml =
|
||||
"<iq " +
|
||||
"to='" + romeo + "' " +
|
||||
"from='" + romeo + "' " +
|
||||
"id='" + j.getStanzaId() + "' " +
|
||||
"type='error'>" +
|
||||
"<error type='cancel'>" +
|
||||
"<bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" +
|
||||
"</error>" +
|
||||
"</iq>";
|
||||
assertXMLEqual(xml, error.toXML().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createErrorTieBreakTest() throws IOException, SAXException {
|
||||
JingleElement j = defaultJingle(romeo, "thisistie");
|
||||
IQ error = JingleElement.createJingleErrorTieBreak(j);
|
||||
String xml =
|
||||
"<iq " +
|
||||
"to='" + romeo + "' " +
|
||||
"from='" + romeo + "' " +
|
||||
"id='" + j.getStanzaId() + "' " +
|
||||
"type='error'>" +
|
||||
"<error type='cancel'>" +
|
||||
"<conflict xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" +
|
||||
"<tie-break xmlns='urn:xmpp:jingle:errors:1'/>" +
|
||||
"</error>" +
|
||||
"</iq>";
|
||||
assertXMLEqual(xml, error.toXML().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createErrorUnknownSessionTest() throws IOException, SAXException {
|
||||
JingleElement j = defaultJingle(romeo, "youknownothingjohnsnow");
|
||||
IQ error = JingleElement.createJingleErrorUnknownSession(j);
|
||||
String xml =
|
||||
"<iq " +
|
||||
"to='" + romeo + "' " +
|
||||
"from='" + romeo + "' " +
|
||||
"id='" + j.getStanzaId() + "' " +
|
||||
"type='error'>" +
|
||||
"<error type='cancel'>" +
|
||||
"<item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" +
|
||||
"<unknown-session xmlns='urn:xmpp:jingle:errors:1'/>" +
|
||||
"</error>" +
|
||||
"</iq>";
|
||||
assertXMLEqual(xml, error.toXML().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createErrorUnknownInitiatorTest() throws IOException, SAXException {
|
||||
JingleElement j = defaultJingle(romeo, "iamyourfather");
|
||||
IQ error = JingleElement.createJingleErrorUnknownInitiator(j);
|
||||
String xml =
|
||||
"<iq " +
|
||||
"to='" + romeo + "' " +
|
||||
"from='" + romeo + "' " +
|
||||
"id='" + j.getStanzaId() + "' " +
|
||||
"type='error'>" +
|
||||
"<error type='cancel'>" +
|
||||
"<service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" +
|
||||
"</error>" +
|
||||
"</iq>";
|
||||
assertXMLEqual(xml, error.toXML().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createErrorOutOfOrderTest() throws IOException, SAXException {
|
||||
JingleElement j = defaultJingle(romeo, "yourfatheriam");
|
||||
IQ error = JingleElement.createJingleErrorOutOfOrder(j);
|
||||
String xml =
|
||||
"<iq " +
|
||||
"to='" + romeo + "' " +
|
||||
"from='" + romeo + "' " +
|
||||
"id='" + j.getStanzaId() + "' " +
|
||||
"type='error'>" +
|
||||
//"<error type='cancel'>" +
|
||||
"<error type='modify'>" + //TODO: Why?
|
||||
"<unexpected-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" +
|
||||
"<out-of-order xmlns='urn:xmpp:jingle:errors:1'/>" +
|
||||
"</error>" +
|
||||
"</iq>";
|
||||
assertXMLEqual(xml, error.toXML().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createErrorUnsupportedInfoTest() throws IOException, SAXException {
|
||||
JingleElement j = defaultJingle(romeo, "thisstatementiswrong");
|
||||
IQ error = JingleElement.createJingleErrorUnsupportedInfo(j);
|
||||
String xml =
|
||||
"<iq " +
|
||||
"to='" + romeo + "' " +
|
||||
"from='" + romeo + "' " +
|
||||
"id='" + j.getStanzaId() + "' " +
|
||||
"type='error'>" +
|
||||
"<error type='modify'>" +
|
||||
"<feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" +
|
||||
"<unsupported-info xmlns='urn:xmpp:jingle:errors:1'/>" +
|
||||
"</error>" +
|
||||
"</iq>";
|
||||
assertXMLEqual(xml, error.toXML().toString());
|
||||
}
|
||||
|
||||
public static String getIQXML(FullJid from, FullJid to, String stanzaId, String jingleXML) {
|
||||
return "<iq from='" + from + "' id='" + stanzaId + "' to='" + to + "' type='set'>" +
|
||||
jingleXML +
|
||||
"</iq>";
|
||||
}
|
||||
|
||||
private JingleElement defaultJingle(FullJid recipient, String sessionId) {
|
||||
return JingleElement.createSessionPing(recipient, sessionId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,452 +0,0 @@
|
|||
/**
|
||||
*
|
||||
* Copyright 2017 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.jingle;
|
||||
|
||||
import static junit.framework.TestCase.assertEquals;
|
||||
import static junit.framework.TestCase.assertNotNull;
|
||||
import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.jivesoftware.smack.DummyConnection;
|
||||
import org.jivesoftware.smack.XMPPConnection;
|
||||
import org.jivesoftware.smack.packet.IQ;
|
||||
import org.jivesoftware.smack.test.util.SmackTestSuite;
|
||||
import org.jivesoftware.smack.test.util.TestUtils;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleAction;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleContentElement;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleElement;
|
||||
import org.jivesoftware.smackx.jingle.element.JingleReasonElement;
|
||||
import org.jivesoftware.smackx.jingle.provider.JingleProvider;
|
||||
import org.jivesoftware.smackx.jingle.transport.jingle_ibb.element.JingleIBBTransportElement;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.jxmpp.jid.FullJid;
|
||||
import org.jxmpp.jid.impl.JidCreate;
|
||||
import org.jxmpp.stringprep.XmppStringprepException;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
/**
|
||||
* Test the JingleUtil class.
|
||||
*/
|
||||
public class JingleUtilTest extends SmackTestSuite {
|
||||
|
||||
private FullJid romeo;
|
||||
private FullJid juliet;
|
||||
|
||||
@Before
|
||||
public void setup() throws XmppStringprepException {
|
||||
|
||||
XMPPConnection connection = new DummyConnection(
|
||||
DummyConnection.getDummyConfigurationBuilder()
|
||||
.setUsernameAndPassword("romeo@montague.lit",
|
||||
"iluvJulibabe13").build());
|
||||
JingleManager jm = JingleManager.getInstanceFor(connection);
|
||||
romeo = connection.getUser().asFullJidOrThrow();
|
||||
juliet = JidCreate.fullFrom("juliet@capulet.lit/balcony");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateDeclineTest() throws Exception {
|
||||
JingleElement terminate = JingleElement.createSessionTerminate(juliet, "thisismadness", JingleReasonElement.Reason.decline);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisismadness'>" +
|
||||
"<reason>" +
|
||||
"<decline/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, terminate.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, terminate.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(jingle.getAction(), JingleAction.session_terminate);
|
||||
assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.decline);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateSuccessTest() throws Exception {
|
||||
JingleElement success = JingleElement.createSessionTerminate(juliet, "thisissparta", JingleReasonElement.Reason.success);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisissparta'>" +
|
||||
"<reason>" +
|
||||
"<success/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, success.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, success.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(jingle.getAction(), JingleAction.session_terminate);
|
||||
assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.success);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateBusyTest() throws Exception {
|
||||
JingleElement busy = JingleElement.createSessionTerminate(juliet, "thisispatrick", JingleReasonElement.Reason.busy);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisispatrick'>" +
|
||||
"<reason>" +
|
||||
"<busy/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, busy.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, busy.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(jingle.getAction(), JingleAction.session_terminate);
|
||||
assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.busy);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateAlternativeSessionTest() throws Exception {
|
||||
JingleElement busy = JingleElement.createSessionTerminate(juliet, "thisistherhythm", JingleReasonElement.AlternativeSession("ofthenight"));
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisistherhythm'>" +
|
||||
"<reason>" +
|
||||
"<alternative-session>" +
|
||||
"<sid>ofthenight</sid>" +
|
||||
"</alternative-session>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, busy.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, busy.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(jingle.getAction(), JingleAction.session_terminate);
|
||||
assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.alternative_session);
|
||||
JingleReasonElement.AlternativeSession alt = (JingleReasonElement.AlternativeSession) jingle.getReason();
|
||||
assertEquals("ofthenight", alt.getAlternativeSessionId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateCancelTest() throws Exception {
|
||||
JingleElement cancel = JingleElement.createSessionTerminate(juliet, "thisistheend", JingleReasonElement.Reason.cancel);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisistheend'>" +
|
||||
"<reason>" +
|
||||
"<cancel/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, cancel.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, cancel.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(jingle.getAction(), JingleAction.session_terminate);
|
||||
assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.cancel);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateUnsupportedTransportsTest() throws Exception {
|
||||
JingleElement unsupportedTransports = JingleElement.createSessionTerminate(juliet, "thisisus", JingleReasonElement.Reason.unsupported_transports);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisisus'>" +
|
||||
"<reason>" +
|
||||
"<unsupported-transports/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, unsupportedTransports.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, unsupportedTransports.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(jingle.getAction(), JingleAction.session_terminate);
|
||||
assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.unsupported_transports);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateUnsupportedApplicationsTest() throws Exception {
|
||||
JingleElement unsupportedApplications = JingleElement.createSessionTerminate(juliet, "thisiswar", JingleReasonElement.Reason.unsupported_applications);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisiswar'>" +
|
||||
"<reason>" +
|
||||
"<unsupported-applications/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, unsupportedApplications.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, unsupportedApplications.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(jingle.getAction(), JingleAction.session_terminate);
|
||||
assertEquals(jingle.getReason().asEnum(), JingleReasonElement.Reason.unsupported_applications);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateFailedTransportTest() throws IOException, SAXException {
|
||||
JingleElement failedTransport = JingleElement.createSessionTerminate(juliet, "derailed", JingleReasonElement.Reason.failed_transport);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='derailed'>" +
|
||||
"<reason>" +
|
||||
"<failed-transport/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, failedTransport.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, failedTransport.toXML().toString());
|
||||
assertEquals(JingleAction.session_terminate, failedTransport.getAction());
|
||||
assertEquals(JingleReasonElement.Reason.failed_transport, failedTransport.getReason().asEnum());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateFailedApplicationTest() throws IOException, SAXException {
|
||||
JingleElement failedApplication = JingleElement.createSessionTerminate(juliet, "crashed", JingleReasonElement.Reason.failed_application);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='crashed'>" +
|
||||
"<reason>" +
|
||||
"<failed-application/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, failedApplication.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, failedApplication.toXML().toString());
|
||||
assertEquals(JingleAction.session_terminate, failedApplication.getAction());
|
||||
assertEquals(JingleReasonElement.Reason.failed_application, failedApplication.getReason().asEnum());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionPingTest() throws Exception {
|
||||
JingleElement ping = JingleElement.createSessionPing(juliet, "thisisit");
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-info' " +
|
||||
"sid='thisisit'/>";
|
||||
String xml = getIQXML(romeo, juliet, ping.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, ping.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(JingleAction.session_info, jingle.getAction());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateContentCancelTest() throws Exception {
|
||||
JingleElement cancel = JingleElement.createSessionTerminateContentCancel(juliet, "thisismumbo#5", JingleContentElement.Creator.initiator, "content123");
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='thisismumbo#5'>" +
|
||||
"<content creator='initiator' name='content123'/>" +
|
||||
"<reason>" +
|
||||
"<cancel/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, cancel.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, cancel.toXML().toString());
|
||||
JingleElement jingle = new JingleProvider().parse(TestUtils.getParser(jingleXML));
|
||||
assertNotNull(jingle);
|
||||
assertEquals(JingleAction.session_terminate, jingle.getAction());
|
||||
assertEquals(JingleReasonElement.Reason.cancel, jingle.getReason().asEnum());
|
||||
assertEquals("thisismumbo#5", jingle.getSid());
|
||||
JingleContentElement content = jingle.getContents().get(0);
|
||||
assertNotNull(content);
|
||||
assertEquals("content123", content.getName());
|
||||
assertEquals(JingleContentElement.Creator.initiator, content.getCreator());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSessionTerminateIncompatibleParameters() throws IOException, SAXException {
|
||||
JingleElement terminate = JingleElement.createSessionTerminate(juliet, "incompatibleSID", JingleReasonElement.Reason.incompatible_parameters);
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='session-terminate' " +
|
||||
"sid='incompatibleSID'>" +
|
||||
"<reason>" +
|
||||
"<incompatible-parameters/>" +
|
||||
"</reason>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, terminate.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, terminate.toXML().toString());
|
||||
assertEquals(JingleReasonElement.Reason.incompatible_parameters, terminate.getReason().asEnum());
|
||||
assertEquals("incompatibleSID", terminate.getSid());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createTransportAcceptTest() throws IOException, SAXException {
|
||||
JingleElement transportAccept = JingleElement.createTransportAccept(juliet, romeo, "transAcc", JingleContentElement.Creator.initiator, "cname", new JingleIBBTransportElement("transid", JingleIBBTransportElement.DEFAULT_BLOCK_SIZE));
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='transport-accept' " +
|
||||
"initiator='" + romeo + "' " +
|
||||
"sid='transAcc'>" +
|
||||
"<content creator='initiator' name='cname'>" +
|
||||
"<transport xmlns='urn:xmpp:jingle:transports:ibb:1' " +
|
||||
"block-size='" + JingleIBBTransportElement.DEFAULT_BLOCK_SIZE + "' " +
|
||||
"sid='transid'/>" +
|
||||
"</content>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, transportAccept.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, transportAccept.toXML().toString());
|
||||
assertEquals(JingleAction.transport_accept, transportAccept.getAction());
|
||||
assertEquals("transAcc", transportAccept.getSid());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createTransportRejectTest() {
|
||||
//TODO: Find example
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createTransportReplaceTest() throws IOException, SAXException {
|
||||
JingleElement transportReplace = JingleElement.createTransportReplace(juliet, romeo, "transAcc", JingleContentElement.Creator.initiator, "cname", new JingleIBBTransportElement("transid", JingleIBBTransportElement.DEFAULT_BLOCK_SIZE));
|
||||
String jingleXML =
|
||||
"<jingle xmlns='urn:xmpp:jingle:1' " +
|
||||
"action='transport-replace' " +
|
||||
"initiator='" + romeo + "' " +
|
||||
"sid='transAcc'>" +
|
||||
"<content creator='initiator' name='cname'>" +
|
||||
"<transport xmlns='urn:xmpp:jingle:transports:ibb:1' " +
|
||||
"block-size='" + JingleIBBTransportElement.DEFAULT_BLOCK_SIZE + "' " +
|
||||
"sid='transid'/>" +
|
||||
"</content>" +
|
||||
"</jingle>";
|
||||
String xml = getIQXML(romeo, juliet, transportReplace.getStanzaId(), jingleXML);
|
||||
assertXMLEqual(xml, transportReplace.toXML().toString());
|
||||
assertEquals(JingleAction.transport_replace, transportReplace.getAction());
|
||||
assertEquals("transAcc", transportReplace.getSid());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createErrorMalformedRequestTest() throws Exception {
|
||||
JingleElement j = defaultJingle(romeo, "error123");
|
||||
IQ error = JingleElement.createJingleErrorMalformedRequest(j);
|
||||
String xml =
|
||||
"<iq " +
|
||||
"to='" + romeo + "' " +
|
||||
"from='" + romeo + "' " +
|
||||
"id='" + j.getStanzaId() + "' " +
|
||||
"type='error'>" +
|
||||
"<error type='cancel'>" +
|
||||
"<bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" +
|
||||
"</error>" +
|
||||
"</iq>";
|
||||
assertXMLEqual(xml, error.toXML().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createErrorTieBreakTest() throws IOException, SAXException {
|
||||
JingleElement j = defaultJingle(romeo, "thisistie");
|
||||
IQ error = JingleElement.createJingleErrorTieBreak(j);
|
||||
String xml =
|
||||
"<iq " +
|
||||
"to='" + romeo + "' " +
|
||||
"from='" + romeo + "' " +
|
||||
"id='" + j.getStanzaId() + "' " +
|
||||
"type='error'>" +
|
||||
"<error type='cancel'>" +
|
||||
"<conflict xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" +
|
||||
"<tie-break xmlns='urn:xmpp:jingle:errors:1'/>" +
|
||||
"</error>" +
|
||||
"</iq>";
|
||||
assertXMLEqual(xml, error.toXML().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createErrorUnknownSessionTest() throws IOException, SAXException {
|
||||
JingleElement j = defaultJingle(romeo, "youknownothingjohnsnow");
|
||||
IQ error = JingleElement.createJingleErrorUnknownSession(j);
|
||||
String xml =
|
||||
"<iq " +
|
||||
"to='" + romeo + "' " +
|
||||
"from='" + romeo + "' " +
|
||||
"id='" + j.getStanzaId() + "' " +
|
||||
"type='error'>" +
|
||||
"<error type='cancel'>" +
|
||||
"<item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" +
|
||||
"<unknown-session xmlns='urn:xmpp:jingle:errors:1'/>" +
|
||||
"</error>" +
|
||||
"</iq>";
|
||||
assertXMLEqual(xml, error.toXML().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createErrorUnknownInitiatorTest() throws IOException, SAXException {
|
||||
JingleElement j = defaultJingle(romeo, "iamyourfather");
|
||||
IQ error = JingleElement.createJingleErrorUnknownInitiator(j);
|
||||
String xml =
|
||||
"<iq " +
|
||||
"to='" + romeo + "' " +
|
||||
"from='" + romeo + "' " +
|
||||
"id='" + j.getStanzaId() + "' " +
|
||||
"type='error'>" +
|
||||
"<error type='cancel'>" +
|
||||
"<service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" +
|
||||
"</error>" +
|
||||
"</iq>";
|
||||
assertXMLEqual(xml, error.toXML().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createErrorOutOfOrderTest() throws IOException, SAXException {
|
||||
JingleElement j = defaultJingle(romeo, "yourfatheriam");
|
||||
IQ error = JingleElement.createJingleErrorOutOfOrder(j);
|
||||
String xml =
|
||||
"<iq " +
|
||||
"to='" + romeo + "' " +
|
||||
"from='" + romeo + "' " +
|
||||
"id='" + j.getStanzaId() + "' " +
|
||||
"type='error'>" +
|
||||
//"<error type='cancel'>" +
|
||||
"<error type='modify'>" + //TODO: Why?
|
||||
"<unexpected-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" +
|
||||
"<out-of-order xmlns='urn:xmpp:jingle:errors:1'/>" +
|
||||
"</error>" +
|
||||
"</iq>";
|
||||
assertXMLEqual(xml, error.toXML().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createErrorUnsupportedInfoTest() throws IOException, SAXException {
|
||||
JingleElement j = defaultJingle(romeo, "thisstatementiswrong");
|
||||
IQ error = JingleElement.createJingleErrorUnsupportedInfo(j);
|
||||
String xml =
|
||||
"<iq " +
|
||||
"to='" + romeo + "' " +
|
||||
"from='" + romeo + "' " +
|
||||
"id='" + j.getStanzaId() + "' " +
|
||||
"type='error'>" +
|
||||
"<error type='modify'>" +
|
||||
"<feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" +
|
||||
"<unsupported-info xmlns='urn:xmpp:jingle:errors:1'/>" +
|
||||
"</error>" +
|
||||
"</iq>";
|
||||
assertXMLEqual(xml, error.toXML().toString());
|
||||
}
|
||||
|
||||
public static String getIQXML(FullJid from, FullJid to, String stanzaId, String jingleXML) {
|
||||
return "<iq from='" + from + "' id='" + stanzaId + "' to='" + to + "' type='set'>" +
|
||||
jingleXML +
|
||||
"</iq>";
|
||||
}
|
||||
|
||||
private JingleElement defaultJingle(FullJid recipient, String sessionId) {
|
||||
return JingleElement.createSessionPing(recipient, sessionId);
|
||||
}
|
||||
}
|
|
@ -17,16 +17,13 @@
|
|||
package org.jivesoftware.smackx.jingle.transport.jingle_ibb;
|
||||
|
||||
import static junit.framework.TestCase.assertEquals;
|
||||
import static junit.framework.TestCase.assertFalse;
|
||||
import static junit.framework.TestCase.assertNotSame;
|
||||
import static junit.framework.TestCase.assertTrue;
|
||||
|
||||
import org.jivesoftware.smack.test.util.SmackTestSuite;
|
||||
import org.jivesoftware.smack.test.util.TestUtils;
|
||||
import org.jivesoftware.smack.util.StringUtils;
|
||||
|
||||
import org.jivesoftware.smackx.jingle.transports.jingle_ibb.element.JingleIBBTransport;
|
||||
import org.jivesoftware.smackx.jingle.transports.jingle_ibb.provider.JingleIBBTransportProvider;
|
||||
import org.jivesoftware.smackx.jingle.transport.jingle_ibb.element.JingleIBBTransportElement;
|
||||
import org.jivesoftware.smackx.jingle.transport.jingle_ibb.provider.JingleIBBTransportProvider;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
|
@ -42,17 +39,17 @@ public class JingleIBBTransportTest extends SmackTestSuite {
|
|||
|
||||
String xml = "<transport xmlns='urn:xmpp:jingle:transports:ibb:1' block-size='8192' sid='" + sid + "'/>";
|
||||
|
||||
JingleIBBTransport transport = new JingleIBBTransport(size, sid);
|
||||
assertEquals(xml, transport.toXML().toString());
|
||||
assertEquals(size, transport.getBlockSize());
|
||||
assertEquals(sid, transport.getSessionId());
|
||||
JingleIBBTransport transport = new JingleIBBTransport(sid, size);
|
||||
assertEquals(xml, transport.getElement().toXML().toString());
|
||||
assertEquals(size, (short) transport.getBlockSize());
|
||||
assertEquals(sid, transport.getSid());
|
||||
|
||||
JingleIBBTransport parsed = new JingleIBBTransportProvider()
|
||||
JingleIBBTransportElement parsed = new JingleIBBTransportProvider()
|
||||
.parse(TestUtils.getParser(xml));
|
||||
assertEquals(transport, parsed);
|
||||
assertTrue(transport.equals(parsed));
|
||||
assertEquals(transport.getElement(), parsed);
|
||||
assertTrue(transport.getElement().equals(parsed));
|
||||
assertEquals(xml, parsed.toXML().toString());
|
||||
|
||||
/*
|
||||
JingleIBBTransport transport1 = new JingleIBBTransport((short) 1024);
|
||||
assertEquals((short) 1024, transport1.getBlockSize());
|
||||
assertNotSame(transport, transport1);
|
||||
|
@ -72,5 +69,6 @@ public class JingleIBBTransportTest extends SmackTestSuite {
|
|||
|
||||
JingleIBBTransport transport4 = new JingleIBBTransport("session-id");
|
||||
assertEquals(JingleIBBTransport.DEFAULT_BLOCK_SIZE, transport4.getBlockSize());
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
|
|
@ -77,7 +77,7 @@ public class JingleS5BTransportTest extends SmackTestSuite {
|
|||
"</transport>";
|
||||
JingleS5BTransportElement transport = new JingleS5BTransportProvider().parse(TestUtils.getParser(xml));
|
||||
assertEquals("972b7bf47291ca609517f67f86b5081086052dad", transport.getDestinationAddress());
|
||||
assertEquals("vj3hs98y", transport.getStreamId());
|
||||
assertEquals("vj3hs98y", transport.getSid());
|
||||
assertEquals(Bytestream.Mode.tcp, transport.getMode());
|
||||
assertEquals(3, transport.getCandidates().size());
|
||||
|
||||
|
@ -126,7 +126,7 @@ public class JingleS5BTransportTest extends SmackTestSuite {
|
|||
.parse(TestUtils.getParser(candidateError));
|
||||
assertNull(candidateErrorTransport.getDestinationAddress());
|
||||
assertNotNull(candidateErrorTransport.getInfo());
|
||||
assertEquals("vj3hs98y", candidateErrorTransport.getStreamId());
|
||||
assertEquals("vj3hs98y", candidateErrorTransport.getSid());
|
||||
assertEquals(JingleS5BTransportInfoElement.CandidateError(),
|
||||
candidateErrorTransport.getInfo());
|
||||
assertEquals(candidateError, candidateErrorTransport.toXML().toString());
|
||||
|
@ -140,7 +140,7 @@ public class JingleS5BTransportTest extends SmackTestSuite {
|
|||
assertNull(proxyErrorTransport.getDestinationAddress());
|
||||
assertNotNull(proxyErrorTransport.getInfo());
|
||||
assertNotNull(candidateErrorTransport.getInfo());
|
||||
assertEquals("vj3hs98y", proxyErrorTransport.getStreamId());
|
||||
assertEquals("vj3hs98y", proxyErrorTransport.getSid());
|
||||
assertEquals(JingleS5BTransportInfoElement.ProxyError(),
|
||||
proxyErrorTransport.getInfo());
|
||||
assertEquals(proxyError, proxyErrorTransport.toXML().toString());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue