From 9c71cb8aeb2d1a595e9c20d7da67b3df19ab8c5a Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Sat, 5 Aug 2017 00:43:54 +0200 Subject: [PATCH] Add tests --- .../jingle/component/JingleTransport.java | 57 +++++---------- .../jingle/component/PendingJingleAction.java | 54 --------------- .../jingle_s5b/JingleS5BTransport.java | 30 ++++---- .../jingle_s5b/JingleS5BTransportAdapter.java | 2 +- .../jingle/component/JingleContentTest.java | 25 +++++++ .../jingle/component/JingleSessionTest.java | 69 +++++++++++++++++++ .../jingle_s5b/JingleS5BTransportTest.java | 57 +++++++++++---- 7 files changed, 170 insertions(+), 124 deletions(-) delete mode 100644 smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/component/PendingJingleAction.java create mode 100644 smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/component/JingleContentTest.java create mode 100644 smack-extensions/src/test/java/org/jivesoftware/smackx/jingle/component/JingleSessionTest.java diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/component/JingleTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/component/JingleTransport.java index 7520b0ba1..b22490942 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/component/JingleTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/component/JingleTransport.java @@ -43,60 +43,45 @@ public abstract class JingleTransport e public abstract D getElement(); public void addOurCandidate(JingleTransportCandidate candidate) { - - // Insert sorted by descending priority - // Empty list -> insert - if (ourCandidates.isEmpty()) { - ourCandidates.add(candidate); - candidate.setParent(this); - return; - } - +// Insert sorted by descending priority + int i; // Find appropriate index - for (int i = 0; i < ourCandidates.size(); i++) { + for (i = 0; i < ourCandidates.size(); i++) { JingleTransportCandidate c = ourCandidates.get(i); - // list already contains element -> return 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; } - //Found the index - if (c.getPriority() <= candidate.getPriority()) { - ourCandidates.add(i, candidate); - candidate.setParent(this); - return; + if (c.getPriority() < candidate.getPriority()) { + break; } } + + ourCandidates.add(i, candidate); + candidate.setParent(this); } public void addTheirCandidate(JingleTransportCandidate candidate) { // Insert sorted by descending priority - // Empty list -> insert - if (theirCandidates.isEmpty()) { - theirCandidates.add(candidate); - candidate.setParent(this); - return; - } - + int i; // Find appropriate index - for (int i = 0; i < theirCandidates.size(); i++) { + for (i = 0; i < theirCandidates.size(); i++) { JingleTransportCandidate c = theirCandidates.get(i); - // list already contains element -> return 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; } - //Found the index - if (c.getPriority() <= candidate.getPriority()) { - theirCandidates.add(i, candidate); - candidate.setParent(this); - return; + if (c.getPriority() < candidate.getPriority()) { + break; } } + + theirCandidates.add(i, candidate); + candidate.setParent(this); } public abstract void prepare(XMPPConnection connection); @@ -120,19 +105,13 @@ public abstract class JingleTransport e public abstract IQ handleTransportInfo(JingleContentTransportInfoElement info, JingleElement wrapping); public void setParent(JingleContent parent) { - if (this.parent != parent) { - this.parent = parent; - } + this.parent = parent; } public JingleContent getParent() { return parent; } - public BytestreamSession getBytestreamSession() { - return bytestreamSession; - } - public abstract void handleSessionAccept(JingleContentTransportElement transportElement, XMPPConnection connection); public abstract void cleanup(); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/component/PendingJingleAction.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/component/PendingJingleAction.java deleted file mode 100644 index 2d1c677e2..000000000 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/component/PendingJingleAction.java +++ /dev/null @@ -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; - } - } -} diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransport.java index 7bd1cb1e8..19bd3c307 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transport/jingle_s5b/JingleS5BTransport.java @@ -67,8 +67,7 @@ public class JingleS5BTransport extends JingleTransport> ourCandidates) { this.sid = sid; - this.ourMode = mode; + this.mode = mode; this.ourDstAddr = Socks5Utils.createDigest(sid, initiator, responder); Socks5Proxy.getSocks5Proxy().addTransfer(ourDstAddr); @@ -104,10 +103,9 @@ public class JingleS5BTransport extends JingleTransport> ourCandidates, JingleS5BTransport other) { this.sid = other.sid; - this.ourMode = other.theirMode; + this.mode = other.mode; this.ourDstAddr = Socks5Utils.createDigest(other.sid, responder, initiator); Socks5Proxy.getSocks5Proxy().addTransfer(ourDstAddr); - this.theirMode = other.theirMode; this.theirDstAddr = other.theirDstAddr; for (JingleTransportCandidate c : ourCandidates) { @@ -122,17 +120,15 @@ public class JingleS5BTransport extends JingleTransport> ourCandidates, List> theirCandidates) { + JingleS5BTransport(String sid, Bytestream.Mode mode, String ourDstAddr, String theirDstAddr, List> ourCandidates, List> theirCandidates) { this.sid = sid; - this.ourMode = ourMode; - this.theirMode = theirMode; + this.mode = mode; this.ourDstAddr = ourDstAddr; Socks5Proxy.getSocks5Proxy().addTransfer(ourDstAddr); this.theirDstAddr = theirDstAddr; @@ -156,8 +152,7 @@ public class JingleS5BTransport extends JingleTransport c : original.getOurCandidates()) { addOurCandidate(new JingleS5BTransportCandidate((JingleS5BTransportCandidate) c)); @@ -173,7 +168,7 @@ public class JingleS5BTransport extends JingleTransport candidate : getOurCandidates()) { builder.addTransportCandidate((JingleS5BTransportCandidateElement) candidate.getElement()); @@ -194,8 +189,8 @@ public class JingleS5BTransport extends JingleTransport" + ""; - JingleS5BTransportElement transport = new JingleS5BTransportProvider().parse(TestUtils.getParser(xml)); - assertEquals("972b7bf47291ca609517f67f86b5081086052dad", transport.getDestinationAddress()); - assertEquals("vj3hs98y", transport.getSid()); - assertEquals(Bytestream.Mode.tcp, transport.getMode()); - assertEquals(3, transport.getCandidates().size()); + JingleS5BTransportElement transportElement = new JingleS5BTransportProvider().parse(TestUtils.getParser(xml)); + assertEquals("972b7bf47291ca609517f67f86b5081086052dad", transportElement.getDestinationAddress()); + assertEquals("vj3hs98y", transportElement.getSid()); + assertEquals(Bytestream.Mode.tcp, transportElement.getMode()); + assertEquals(3, transportElement.getCandidates().size()); - assertTrue(transport.hasCandidate("hft54dqy")); - assertFalse(transport.hasCandidate("invalidId")); + assertTrue(transportElement.hasCandidate("hft54dqy")); + assertFalse(transportElement.hasCandidate("invalidId")); JingleS5BTransportCandidateElement candidate1 = - (JingleS5BTransportCandidateElement) transport.getCandidates().get(0); - assertEquals(candidate1, transport.getCandidate("hft54dqy")); + (JingleS5BTransportCandidateElement) transportElement.getCandidates().get(0); + assertEquals(candidate1, transportElement.getCandidate("hft54dqy")); assertNotNull(candidate1.getStreamHost()); assertEquals(JingleS5BTransportCandidateElement.Type.direct.getWeight(), candidate1.getType().getWeight()); assertEquals("hft54dqy", candidate1.getCandidateId()); @@ -95,7 +98,7 @@ public class JingleS5BTransportTest extends SmackTestSuite { assertEquals(JingleS5BTransportCandidateElement.Type.direct, candidate1.getType()); JingleS5BTransportCandidateElement candidate2 = - (JingleS5BTransportCandidateElement) transport.getCandidates().get(1); + (JingleS5BTransportCandidateElement) transportElement.getCandidates().get(1); assertEquals("hutr46fe", candidate2.getCandidateId()); assertEquals("24.24.24.1", candidate2.getHost()); assertEquals(JidCreate.from("romeo@montague.lit/orchard"), candidate2.getJid()); @@ -104,7 +107,7 @@ public class JingleS5BTransportTest extends SmackTestSuite { assertEquals(JingleS5BTransportCandidateElement.Type.direct, candidate2.getType()); JingleS5BTransportCandidateElement candidate3 = - (JingleS5BTransportCandidateElement) transport.getCandidates().get(2); + (JingleS5BTransportCandidateElement) transportElement.getCandidates().get(2); assertEquals("xmdh4b7i", candidate3.getCandidateId()); assertEquals("123.456.7.8", candidate3.getHost()); assertEquals(JidCreate.domainBareFrom("streamer.shakespeare.lit"), candidate3.getJid()); @@ -112,7 +115,37 @@ public class JingleS5BTransportTest extends SmackTestSuite { assertEquals(7878787, candidate3.getPriority()); 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