mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-11-24 04:52:05 +01:00
Add tests
This commit is contained in:
parent
1aef1aaadc
commit
9c71cb8aeb
7 changed files with 170 additions and 124 deletions
|
@ -43,60 +43,45 @@ public abstract class JingleTransport<D extends JingleContentTransportElement> e
|
||||||
public abstract D getElement();
|
public abstract D getElement();
|
||||||
|
|
||||||
public void addOurCandidate(JingleTransportCandidate<?> candidate) {
|
public void addOurCandidate(JingleTransportCandidate<?> candidate) {
|
||||||
|
// Insert sorted by descending priority
|
||||||
// Insert sorted by descending priority
|
int i;
|
||||||
// Empty list -> insert
|
|
||||||
if (ourCandidates.isEmpty()) {
|
|
||||||
ourCandidates.add(candidate);
|
|
||||||
candidate.setParent(this);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find appropriate index
|
// Find appropriate index
|
||||||
for (int i = 0; i < ourCandidates.size(); i++) {
|
for (i = 0; i < ourCandidates.size(); i++) {
|
||||||
JingleTransportCandidate<?> c = ourCandidates.get(i);
|
JingleTransportCandidate<?> c = ourCandidates.get(i);
|
||||||
|
|
||||||
// list already contains element -> return
|
|
||||||
if (c == candidate || c.equals(candidate)) {
|
if (c == candidate || c.equals(candidate)) {
|
||||||
c.setParent(this);
|
c.setParent(this); // Candidate might equal, but not be same, so set parent just in case
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Found the index
|
if (c.getPriority() < candidate.getPriority()) {
|
||||||
if (c.getPriority() <= candidate.getPriority()) {
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ourCandidates.add(i, candidate);
|
ourCandidates.add(i, candidate);
|
||||||
candidate.setParent(this);
|
candidate.setParent(this);
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addTheirCandidate(JingleTransportCandidate<?> candidate) {
|
public void addTheirCandidate(JingleTransportCandidate<?> candidate) {
|
||||||
// Insert sorted by descending priority
|
// Insert sorted by descending priority
|
||||||
// Empty list -> insert
|
int i;
|
||||||
if (theirCandidates.isEmpty()) {
|
|
||||||
theirCandidates.add(candidate);
|
|
||||||
candidate.setParent(this);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find appropriate index
|
// Find appropriate index
|
||||||
for (int i = 0; i < theirCandidates.size(); i++) {
|
for (i = 0; i < theirCandidates.size(); i++) {
|
||||||
JingleTransportCandidate<?> c = theirCandidates.get(i);
|
JingleTransportCandidate<?> c = theirCandidates.get(i);
|
||||||
|
|
||||||
// list already contains element -> return
|
|
||||||
if (c == candidate || c.equals(candidate)) {
|
if (c == candidate || c.equals(candidate)) {
|
||||||
c.setParent(this);
|
c.setParent(this); // Candidate might equal, but not be same, so set parent just in case
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Found the index
|
if (c.getPriority() < candidate.getPriority()) {
|
||||||
if (c.getPriority() <= candidate.getPriority()) {
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
theirCandidates.add(i, candidate);
|
theirCandidates.add(i, candidate);
|
||||||
candidate.setParent(this);
|
candidate.setParent(this);
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void prepare(XMPPConnection connection);
|
public abstract void prepare(XMPPConnection connection);
|
||||||
|
@ -120,19 +105,13 @@ public abstract class JingleTransport<D extends JingleContentTransportElement> e
|
||||||
public abstract IQ handleTransportInfo(JingleContentTransportInfoElement info, JingleElement wrapping);
|
public abstract IQ handleTransportInfo(JingleContentTransportInfoElement info, JingleElement wrapping);
|
||||||
|
|
||||||
public void setParent(JingleContent parent) {
|
public void setParent(JingleContent parent) {
|
||||||
if (this.parent != parent) {
|
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public JingleContent getParent() {
|
public JingleContent getParent() {
|
||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BytestreamSession getBytestreamSession() {
|
|
||||||
return bytestreamSession;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract void handleSessionAccept(JingleContentTransportElement transportElement, XMPPConnection connection);
|
public abstract void handleSessionAccept(JingleContentTransportElement transportElement, XMPPConnection connection);
|
||||||
|
|
||||||
public abstract void cleanup();
|
public abstract void cleanup();
|
||||||
|
|
|
@ -1,54 +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.component;
|
|
||||||
|
|
||||||
import org.jivesoftware.smackx.jingle.element.JingleAction;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Object that represents a pending jingle action. A pending jingle action is an action that was sent to the peer,
|
|
||||||
* but a response hasn't yet received.
|
|
||||||
*/
|
|
||||||
public abstract class PendingJingleAction {
|
|
||||||
private final JingleAction action;
|
|
||||||
private final JingleContent affectedContent;
|
|
||||||
|
|
||||||
public PendingJingleAction(JingleAction action, JingleContent content) {
|
|
||||||
this.action = action;
|
|
||||||
this.affectedContent = content;
|
|
||||||
}
|
|
||||||
|
|
||||||
public JingleAction getAction() {
|
|
||||||
return action;
|
|
||||||
}
|
|
||||||
|
|
||||||
public JingleContent getAffectedContent() {
|
|
||||||
return affectedContent;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class TransportReplace extends PendingJingleAction {
|
|
||||||
private final JingleTransport<?> newTransport;
|
|
||||||
|
|
||||||
public TransportReplace(JingleContent content, JingleTransport<?> newTransport) {
|
|
||||||
super(JingleAction.transport_replace, content);
|
|
||||||
this.newTransport = newTransport;
|
|
||||||
}
|
|
||||||
|
|
||||||
public JingleTransport<?> getNewTransport() {
|
|
||||||
return newTransport;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -67,8 +67,7 @@ public class JingleS5BTransport extends JingleTransport<JingleS5BTransportElemen
|
||||||
private String ourDstAddr;
|
private String ourDstAddr;
|
||||||
private String theirDstAddr;
|
private String theirDstAddr;
|
||||||
|
|
||||||
private Bytestream.Mode ourMode;
|
private Bytestream.Mode mode;
|
||||||
private Bytestream.Mode theirMode;
|
|
||||||
|
|
||||||
// PEERS candidate of OUR choice.
|
// PEERS candidate of OUR choice.
|
||||||
private JingleS5BTransportCandidate ourSelectedCandidate;
|
private JingleS5BTransportCandidate ourSelectedCandidate;
|
||||||
|
@ -86,7 +85,7 @@ public class JingleS5BTransport extends JingleTransport<JingleS5BTransportElemen
|
||||||
*/
|
*/
|
||||||
JingleS5BTransport(FullJid initiator, FullJid responder, String sid, Bytestream.Mode mode, List<JingleTransportCandidate<?>> ourCandidates) {
|
JingleS5BTransport(FullJid initiator, FullJid responder, String sid, Bytestream.Mode mode, List<JingleTransportCandidate<?>> ourCandidates) {
|
||||||
this.sid = sid;
|
this.sid = sid;
|
||||||
this.ourMode = mode;
|
this.mode = mode;
|
||||||
this.ourDstAddr = Socks5Utils.createDigest(sid, initiator, responder);
|
this.ourDstAddr = Socks5Utils.createDigest(sid, initiator, responder);
|
||||||
Socks5Proxy.getSocks5Proxy().addTransfer(ourDstAddr);
|
Socks5Proxy.getSocks5Proxy().addTransfer(ourDstAddr);
|
||||||
|
|
||||||
|
@ -104,10 +103,9 @@ public class JingleS5BTransport extends JingleTransport<JingleS5BTransportElemen
|
||||||
*/
|
*/
|
||||||
JingleS5BTransport(FullJid initiator, FullJid responder, List<JingleTransportCandidate<?>> ourCandidates, JingleS5BTransport other) {
|
JingleS5BTransport(FullJid initiator, FullJid responder, List<JingleTransportCandidate<?>> ourCandidates, JingleS5BTransport other) {
|
||||||
this.sid = other.sid;
|
this.sid = other.sid;
|
||||||
this.ourMode = other.theirMode;
|
this.mode = other.mode;
|
||||||
this.ourDstAddr = Socks5Utils.createDigest(other.sid, responder, initiator);
|
this.ourDstAddr = Socks5Utils.createDigest(other.sid, responder, initiator);
|
||||||
Socks5Proxy.getSocks5Proxy().addTransfer(ourDstAddr);
|
Socks5Proxy.getSocks5Proxy().addTransfer(ourDstAddr);
|
||||||
this.theirMode = other.theirMode;
|
|
||||||
this.theirDstAddr = other.theirDstAddr;
|
this.theirDstAddr = other.theirDstAddr;
|
||||||
|
|
||||||
for (JingleTransportCandidate<?> c : ourCandidates) {
|
for (JingleTransportCandidate<?> c : ourCandidates) {
|
||||||
|
@ -122,17 +120,15 @@ public class JingleS5BTransport extends JingleTransport<JingleS5BTransportElemen
|
||||||
/**
|
/**
|
||||||
* Create custom transport as responder.
|
* Create custom transport as responder.
|
||||||
* @param sid sessionId of the Jingle session.
|
* @param sid sessionId of the Jingle session.
|
||||||
* @param ourMode UPD/TCP.
|
* @param mode UPD/TCP.
|
||||||
* @param theirMode UPD/TCP.
|
|
||||||
* @param ourDstAddr SOCKS5 destination address (digest)
|
* @param ourDstAddr SOCKS5 destination address (digest)
|
||||||
* @param theirDstAddr SOCKS5 destination address (digest)
|
* @param theirDstAddr SOCKS5 destination address (digest)
|
||||||
* @param ourCandidates our proxy candidates.
|
* @param ourCandidates our proxy candidates.
|
||||||
* @param theirCandidates their proxy candidates.
|
* @param theirCandidates their proxy candidates.
|
||||||
*/
|
*/
|
||||||
JingleS5BTransport(String sid, Bytestream.Mode ourMode, Bytestream.Mode theirMode, String ourDstAddr, String theirDstAddr, List<JingleTransportCandidate<?>> ourCandidates, List<JingleTransportCandidate<?>> theirCandidates) {
|
JingleS5BTransport(String sid, Bytestream.Mode mode, String ourDstAddr, String theirDstAddr, List<JingleTransportCandidate<?>> ourCandidates, List<JingleTransportCandidate<?>> theirCandidates) {
|
||||||
this.sid = sid;
|
this.sid = sid;
|
||||||
this.ourMode = ourMode;
|
this.mode = mode;
|
||||||
this.theirMode = theirMode;
|
|
||||||
this.ourDstAddr = ourDstAddr;
|
this.ourDstAddr = ourDstAddr;
|
||||||
Socks5Proxy.getSocks5Proxy().addTransfer(ourDstAddr);
|
Socks5Proxy.getSocks5Proxy().addTransfer(ourDstAddr);
|
||||||
this.theirDstAddr = theirDstAddr;
|
this.theirDstAddr = theirDstAddr;
|
||||||
|
@ -156,8 +152,7 @@ public class JingleS5BTransport extends JingleTransport<JingleS5BTransportElemen
|
||||||
this.sid = original.sid;
|
this.sid = original.sid;
|
||||||
this.ourDstAddr = original.ourDstAddr;
|
this.ourDstAddr = original.ourDstAddr;
|
||||||
this.theirDstAddr = original.theirDstAddr;
|
this.theirDstAddr = original.theirDstAddr;
|
||||||
this.ourMode = original.ourMode;
|
this.mode = original.mode;
|
||||||
this.theirMode = original.theirMode;
|
|
||||||
|
|
||||||
for (JingleTransportCandidate<?> c : original.getOurCandidates()) {
|
for (JingleTransportCandidate<?> c : original.getOurCandidates()) {
|
||||||
addOurCandidate(new JingleS5BTransportCandidate((JingleS5BTransportCandidate) c));
|
addOurCandidate(new JingleS5BTransportCandidate((JingleS5BTransportCandidate) c));
|
||||||
|
@ -173,7 +168,7 @@ public class JingleS5BTransport extends JingleTransport<JingleS5BTransportElemen
|
||||||
JingleS5BTransportElement.Builder builder = JingleS5BTransportElement.getBuilder()
|
JingleS5BTransportElement.Builder builder = JingleS5BTransportElement.getBuilder()
|
||||||
.setStreamId(sid)
|
.setStreamId(sid)
|
||||||
.setDestinationAddress(ourDstAddr)
|
.setDestinationAddress(ourDstAddr)
|
||||||
.setMode(ourMode);
|
.setMode(mode);
|
||||||
|
|
||||||
for (JingleTransportCandidate<?> candidate : getOurCandidates()) {
|
for (JingleTransportCandidate<?> candidate : getOurCandidates()) {
|
||||||
builder.addTransportCandidate((JingleS5BTransportCandidateElement) candidate.getElement());
|
builder.addTransportCandidate((JingleS5BTransportCandidateElement) candidate.getElement());
|
||||||
|
@ -194,8 +189,8 @@ public class JingleS5BTransport extends JingleTransport<JingleS5BTransportElemen
|
||||||
return theirDstAddr;
|
return theirDstAddr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Bytestream.Mode getOurMode() {
|
public Bytestream.Mode getMode() {
|
||||||
return ourMode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -218,8 +213,8 @@ public class JingleS5BTransport extends JingleTransport<JingleS5BTransportElemen
|
||||||
Socks5Proxy.getSocks5Proxy().addTransfer(ourDstAddr);
|
Socks5Proxy.getSocks5Proxy().addTransfer(ourDstAddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ourMode == null) {
|
if (mode == null) {
|
||||||
ourMode = Bytestream.Mode.tcp;
|
mode = Bytestream.Mode.tcp;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getOurCandidates().size() == 0) {
|
if (getOurCandidates().size() == 0) {
|
||||||
|
@ -390,7 +385,6 @@ public class JingleS5BTransport extends JingleTransport<JingleS5BTransportElemen
|
||||||
public void handleSessionAccept(JingleContentTransportElement transportElement, XMPPConnection connection) {
|
public void handleSessionAccept(JingleContentTransportElement transportElement, XMPPConnection connection) {
|
||||||
JingleS5BTransportElement transport = (JingleS5BTransportElement) transportElement;
|
JingleS5BTransportElement transport = (JingleS5BTransportElement) transportElement;
|
||||||
theirDstAddr = transport.getDestinationAddress();
|
theirDstAddr = transport.getDestinationAddress();
|
||||||
theirMode = transport.getMode();
|
|
||||||
for (JingleContentTransportCandidateElement c : transport.getCandidates()) {
|
for (JingleContentTransportCandidateElement c : transport.getCandidates()) {
|
||||||
JingleS5BTransportCandidateElement candidate = (JingleS5BTransportCandidateElement) c;
|
JingleS5BTransportCandidateElement candidate = (JingleS5BTransportCandidateElement) c;
|
||||||
addTheirCandidate(new JingleS5BTransportCandidate(candidate));
|
addTheirCandidate(new JingleS5BTransportCandidate(candidate));
|
||||||
|
|
|
@ -39,7 +39,7 @@ public class JingleS5BTransportAdapter implements JingleTransportAdapter<JingleS
|
||||||
candidates.add(JingleS5BTransportCandidate.fromElement((JingleS5BTransportCandidateElement) e));
|
candidates.add(JingleS5BTransportCandidate.fromElement((JingleS5BTransportCandidateElement) e));
|
||||||
}
|
}
|
||||||
|
|
||||||
return new JingleS5BTransport(s5b.getSid(), null, s5b.getMode(), null, s5b.getDestinationAddress(), null, candidates);
|
return new JingleS5BTransport(s5b.getSid(), s5b.getMode(), null, s5b.getDestinationAddress(), null, candidates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
package org.jivesoftware.smackx.jingle.component;
|
||||||
|
|
||||||
|
import static junit.framework.TestCase.assertEquals;
|
||||||
|
import static junit.framework.TestCase.assertNotNull;
|
||||||
|
import static junit.framework.TestCase.assertNull;
|
||||||
|
|
||||||
|
import org.jivesoftware.smack.test.util.SmackTestSuite;
|
||||||
|
import org.jivesoftware.smackx.jingle.element.JingleContentElement;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class JingleContentTest extends SmackTestSuite {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void jingleContentTest() {
|
||||||
|
JingleContent content = new JingleContent(JingleContentElement.Creator.initiator, JingleContentElement.Senders.responder);
|
||||||
|
assertEquals(JingleContentElement.Creator.initiator, content.getCreator());
|
||||||
|
assertEquals(JingleContentElement.Senders.responder, content.getSenders());
|
||||||
|
assertNull(content.getDescription());
|
||||||
|
assertNull(content.getTransport());
|
||||||
|
assertNull(content.getSecurity());
|
||||||
|
assertNotNull(content.getName()); //MUST NOT BE NULL!
|
||||||
|
assertEquals(0, content.getTransportBlacklist().size());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
package org.jivesoftware.smackx.jingle.component;
|
||||||
|
|
||||||
|
import static junit.framework.TestCase.assertEquals;
|
||||||
|
import static junit.framework.TestCase.assertFalse;
|
||||||
|
import static junit.framework.TestCase.assertNull;
|
||||||
|
import static junit.framework.TestCase.assertTrue;
|
||||||
|
|
||||||
|
import org.jivesoftware.smack.DummyConnection;
|
||||||
|
import org.jivesoftware.smack.test.util.SmackTestSuite;
|
||||||
|
import org.jivesoftware.smackx.jingle.JingleManager;
|
||||||
|
import org.jivesoftware.smackx.jingle.element.JingleContentElement;
|
||||||
|
import org.jivesoftware.smackx.jingle.util.Role;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.jxmpp.jid.FullJid;
|
||||||
|
import org.jxmpp.jid.impl.JidCreate;
|
||||||
|
import org.jxmpp.stringprep.XmppStringprepException;
|
||||||
|
|
||||||
|
public class JingleSessionTest extends SmackTestSuite {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void jingleSessionTest() throws XmppStringprepException {
|
||||||
|
DummyConnection dummyConnection = new DummyConnection();
|
||||||
|
FullJid alice = JidCreate.fullFrom("alice@wonderland.lit/test123");
|
||||||
|
FullJid madHatter = JidCreate.fullFrom("mad@hat.net/cat");
|
||||||
|
|
||||||
|
JingleManager jingleManager = JingleManager.getInstanceFor(dummyConnection);
|
||||||
|
|
||||||
|
JingleSession session = new JingleSession(jingleManager, alice, madHatter, Role.initiator, "WeReAlLmAdHeRe");
|
||||||
|
|
||||||
|
assertEquals(alice, session.getInitiator());
|
||||||
|
assertEquals(madHatter, session.getResponder());
|
||||||
|
assertEquals(alice, session.getOurJid());
|
||||||
|
assertEquals(madHatter, session.getPeer());
|
||||||
|
|
||||||
|
assertEquals(0, session.getContents().size());
|
||||||
|
assertEquals("WeReAlLmAdHeRe", session.getSessionId());
|
||||||
|
assertEquals(jingleManager, session.getJingleManager());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = IllegalStateException.class)
|
||||||
|
public void getSoleContentThrowingTest() {
|
||||||
|
JingleSession session = new JingleSession(JingleManager.getInstanceFor(new DummyConnection()), null, null, Role.initiator, null);
|
||||||
|
assertTrue(session.isInitiator());
|
||||||
|
assertFalse(session.isResponder());
|
||||||
|
JingleContent c1 = new JingleContent(JingleContentElement.Creator.initiator, JingleContentElement.Senders.initiator);
|
||||||
|
JingleContent c2 = new JingleContent(JingleContentElement.Creator.initiator, JingleContentElement.Senders.initiator);
|
||||||
|
session.addContent(c1);
|
||||||
|
assertEquals(c1, session.getContent(c1.getName()));
|
||||||
|
session.addContent(c2);
|
||||||
|
assertEquals(c2, session.getContent(c2.getName()));
|
||||||
|
|
||||||
|
session.getSoleContentOrThrow();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSoleContentTest() {
|
||||||
|
JingleSession session = new JingleSession(JingleManager.getInstanceFor(new DummyConnection()), null, null, Role.responder, null);
|
||||||
|
assertTrue(session.isResponder());
|
||||||
|
assertFalse(session.isInitiator());
|
||||||
|
assertNull(session.getSoleContentOrThrow());
|
||||||
|
JingleContent c1 = new JingleContent(JingleContentElement.Creator.initiator, JingleContentElement.Senders.initiator);
|
||||||
|
assertNull(c1.getParent());
|
||||||
|
session.addContent(c1);
|
||||||
|
assertEquals(session, c1.getParent());
|
||||||
|
|
||||||
|
assertEquals(c1, session.getSoleContentOrThrow());
|
||||||
|
}
|
||||||
|
}
|
|
@ -25,6 +25,9 @@ import static junit.framework.TestCase.assertTrue;
|
||||||
import org.jivesoftware.smack.test.util.SmackTestSuite;
|
import org.jivesoftware.smack.test.util.SmackTestSuite;
|
||||||
import org.jivesoftware.smack.test.util.TestUtils;
|
import org.jivesoftware.smack.test.util.TestUtils;
|
||||||
import org.jivesoftware.smackx.bytestreams.socks5.packet.Bytestream;
|
import org.jivesoftware.smackx.bytestreams.socks5.packet.Bytestream;
|
||||||
|
import org.jivesoftware.smackx.jingle.component.JingleContent;
|
||||||
|
import org.jivesoftware.smackx.jingle.component.JingleTransportCandidate;
|
||||||
|
import org.jivesoftware.smackx.jingle.element.JingleContentElement;
|
||||||
import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportCandidateElement;
|
import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportCandidateElement;
|
||||||
import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportElement;
|
import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportElement;
|
||||||
import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportInfoElement;
|
import org.jivesoftware.smackx.jingle.transport.jingle_s5b.element.JingleS5BTransportInfoElement;
|
||||||
|
@ -74,17 +77,17 @@ public class JingleS5BTransportTest extends SmackTestSuite {
|
||||||
"type='proxy'/>" +
|
"type='proxy'/>" +
|
||||||
|
|
||||||
"</transport>";
|
"</transport>";
|
||||||
JingleS5BTransportElement transport = new JingleS5BTransportProvider().parse(TestUtils.getParser(xml));
|
JingleS5BTransportElement transportElement = new JingleS5BTransportProvider().parse(TestUtils.getParser(xml));
|
||||||
assertEquals("972b7bf47291ca609517f67f86b5081086052dad", transport.getDestinationAddress());
|
assertEquals("972b7bf47291ca609517f67f86b5081086052dad", transportElement.getDestinationAddress());
|
||||||
assertEquals("vj3hs98y", transport.getSid());
|
assertEquals("vj3hs98y", transportElement.getSid());
|
||||||
assertEquals(Bytestream.Mode.tcp, transport.getMode());
|
assertEquals(Bytestream.Mode.tcp, transportElement.getMode());
|
||||||
assertEquals(3, transport.getCandidates().size());
|
assertEquals(3, transportElement.getCandidates().size());
|
||||||
|
|
||||||
assertTrue(transport.hasCandidate("hft54dqy"));
|
assertTrue(transportElement.hasCandidate("hft54dqy"));
|
||||||
assertFalse(transport.hasCandidate("invalidId"));
|
assertFalse(transportElement.hasCandidate("invalidId"));
|
||||||
JingleS5BTransportCandidateElement candidate1 =
|
JingleS5BTransportCandidateElement candidate1 =
|
||||||
(JingleS5BTransportCandidateElement) transport.getCandidates().get(0);
|
(JingleS5BTransportCandidateElement) transportElement.getCandidates().get(0);
|
||||||
assertEquals(candidate1, transport.getCandidate("hft54dqy"));
|
assertEquals(candidate1, transportElement.getCandidate("hft54dqy"));
|
||||||
assertNotNull(candidate1.getStreamHost());
|
assertNotNull(candidate1.getStreamHost());
|
||||||
assertEquals(JingleS5BTransportCandidateElement.Type.direct.getWeight(), candidate1.getType().getWeight());
|
assertEquals(JingleS5BTransportCandidateElement.Type.direct.getWeight(), candidate1.getType().getWeight());
|
||||||
assertEquals("hft54dqy", candidate1.getCandidateId());
|
assertEquals("hft54dqy", candidate1.getCandidateId());
|
||||||
|
@ -95,7 +98,7 @@ public class JingleS5BTransportTest extends SmackTestSuite {
|
||||||
assertEquals(JingleS5BTransportCandidateElement.Type.direct, candidate1.getType());
|
assertEquals(JingleS5BTransportCandidateElement.Type.direct, candidate1.getType());
|
||||||
|
|
||||||
JingleS5BTransportCandidateElement candidate2 =
|
JingleS5BTransportCandidateElement candidate2 =
|
||||||
(JingleS5BTransportCandidateElement) transport.getCandidates().get(1);
|
(JingleS5BTransportCandidateElement) transportElement.getCandidates().get(1);
|
||||||
assertEquals("hutr46fe", candidate2.getCandidateId());
|
assertEquals("hutr46fe", candidate2.getCandidateId());
|
||||||
assertEquals("24.24.24.1", candidate2.getHost());
|
assertEquals("24.24.24.1", candidate2.getHost());
|
||||||
assertEquals(JidCreate.from("romeo@montague.lit/orchard"), candidate2.getJid());
|
assertEquals(JidCreate.from("romeo@montague.lit/orchard"), candidate2.getJid());
|
||||||
|
@ -104,7 +107,7 @@ public class JingleS5BTransportTest extends SmackTestSuite {
|
||||||
assertEquals(JingleS5BTransportCandidateElement.Type.direct, candidate2.getType());
|
assertEquals(JingleS5BTransportCandidateElement.Type.direct, candidate2.getType());
|
||||||
|
|
||||||
JingleS5BTransportCandidateElement candidate3 =
|
JingleS5BTransportCandidateElement candidate3 =
|
||||||
(JingleS5BTransportCandidateElement) transport.getCandidates().get(2);
|
(JingleS5BTransportCandidateElement) transportElement.getCandidates().get(2);
|
||||||
assertEquals("xmdh4b7i", candidate3.getCandidateId());
|
assertEquals("xmdh4b7i", candidate3.getCandidateId());
|
||||||
assertEquals("123.456.7.8", candidate3.getHost());
|
assertEquals("123.456.7.8", candidate3.getHost());
|
||||||
assertEquals(JidCreate.domainBareFrom("streamer.shakespeare.lit"), candidate3.getJid());
|
assertEquals(JidCreate.domainBareFrom("streamer.shakespeare.lit"), candidate3.getJid());
|
||||||
|
@ -112,7 +115,37 @@ public class JingleS5BTransportTest extends SmackTestSuite {
|
||||||
assertEquals(7878787, candidate3.getPriority());
|
assertEquals(7878787, candidate3.getPriority());
|
||||||
assertEquals(JingleS5BTransportCandidateElement.Type.proxy, candidate3.getType());
|
assertEquals(JingleS5BTransportCandidateElement.Type.proxy, candidate3.getType());
|
||||||
|
|
||||||
assertEquals(xml, transport.toXML().toString());
|
assertEquals(xml, transportElement.toXML().toString());
|
||||||
|
|
||||||
|
JingleS5BTransport transport = new JingleS5BTransportAdapter().transportFromElement(transportElement);
|
||||||
|
assertNotNull(transport);
|
||||||
|
assertEquals(transportElement.getSid(), transport.getSid());
|
||||||
|
assertEquals(transportElement.getMode(), transport.getMode());
|
||||||
|
assertEquals(transportElement.getDestinationAddress(), transport.getTheirDstAddr());
|
||||||
|
assertNull(transport.getOurDstAddr());
|
||||||
|
assertNotNull(transport.getOurCandidates());
|
||||||
|
assertEquals(0, transport.getOurCandidates().size());
|
||||||
|
assertNotNull(transport.getTheirCandidates());
|
||||||
|
assertEquals(3, transport.getTheirCandidates().size());
|
||||||
|
|
||||||
|
for (int i = 0; i < transport.getTheirCandidates().size() - 1; i++) {
|
||||||
|
assertTrue(transport.getTheirCandidates().get(i).getPriority() >= transport.getTheirCandidates().get(i + 1).getPriority());
|
||||||
|
}
|
||||||
|
|
||||||
|
JingleTransportCandidate<?> c = transport.getTheirCandidates().get(1);
|
||||||
|
transport.addTheirCandidate(c);
|
||||||
|
|
||||||
|
assertEquals(3, transport.getTheirCandidates().size());
|
||||||
|
assertTrue(c.getParent() == transport);
|
||||||
|
|
||||||
|
assertNull(transport.getParent());
|
||||||
|
|
||||||
|
JingleContent content = new JingleContent(JingleContentElement.Creator.initiator, JingleContentElement.Senders.initiator);
|
||||||
|
assertNull(content.getTransport());
|
||||||
|
|
||||||
|
content.setTransport(transport);
|
||||||
|
assertEquals(transport, content.getTransport());
|
||||||
|
assertEquals(content, transport.getParent());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in a new issue