summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2016-11-08 14:29:17 (GMT)
committerTobias Markmann <tm@ayena.de>2016-11-18 08:49:39 (GMT)
commit43479ef719ea8fc6abbf654730b47c4583140508 (patch)
treec0a05a837b8988c0875fedb6161c08f3dcb2ffb0 /Swiften/Parser/PayloadParsers/UnitTest/JingleParserTest.cpp
parentc82f95fd431e702137d5f2e3dda4cf0ae424e837 (diff)
downloadswift-43479ef719ea8fc6abbf654730b47c4583140508.zip
swift-43479ef719ea8fc6abbf654730b47c4583140508.tar.bz2
Improve string to HostAddress conversion API
Previously HostAddress had a constructor which allowed initialisation via a std::string. This initialisation can fail and this is heavily used for checking whether a string is a valid IP address. This constructor is removed in this commit and replaced by a static method HostAddress::fromString, taking a string and returning an optional HostAddress. This clearly communicates that the conversion can fail. Test-Information: ./scons test=all passes on macOS 10.12.1. Change-Id: Idaafee6f84010ce541c55f267ac77ad6ac8f02b4
Diffstat (limited to 'Swiften/Parser/PayloadParsers/UnitTest/JingleParserTest.cpp')
-rw-r--r--Swiften/Parser/PayloadParsers/UnitTest/JingleParserTest.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/JingleParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/JingleParserTest.cpp
index 3bf79a5..c502c8a 100644
--- a/Swiften/Parser/PayloadParsers/UnitTest/JingleParserTest.cpp
+++ b/Swiften/Parser/PayloadParsers/UnitTest/JingleParserTest.cpp
@@ -1,38 +1,38 @@
/*
* Copyright (c) 2011 Tobias Markmann
* Licensed under the simplified BSD license.
* See Documentation/Licenses/BSD-simplified.txt for more information.
*/
/*
- * Copyright (c) 2015 Isode Limited.
+ * Copyright (c) 2015-2016 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <Swiften/Base/DateTime.h>
#include <Swiften/Elements/JingleFileTransferDescription.h>
#include <Swiften/Elements/JingleFileTransferHash.h>
#include <Swiften/Elements/JingleIBBTransportPayload.h>
#include <Swiften/Elements/JinglePayload.h>
#include <Swiften/Elements/JingleS5BTransportPayload.h>
#include <Swiften/Elements/StreamInitiationFileInfo.h>
#include <Swiften/Parser/PayloadParsers/UnitTest/PayloadsParserTester.h>
#include <Swiften/StringCodecs/Base64.h>
using namespace Swift;
class JingleParserTest : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(JingleParserTest);
CPPUNIT_TEST(testParse_Xep0166_Example3);
CPPUNIT_TEST(testParse_Xep0166_Example8);
CPPUNIT_TEST(testParse_Xep0261_Example1);
CPPUNIT_TEST(testParse_Xep0261_Example3);
CPPUNIT_TEST(testParse_Xep0261_Example9);
CPPUNIT_TEST(testParse_Xep0261_Example13);
CPPUNIT_TEST(testParse_Xep0234_Example1);
@@ -493,68 +493,68 @@ class JingleParserTest : public CppUnit::TestFixture {
" priority='8258636'\n"
" type='direct'/>\n"
" </transport>\n"
" </content>\n"
"</jingle>\n"
));
JinglePayload::ref jingle = parser.getPayload<JinglePayload>();
CPPUNIT_ASSERT(jingle);
CPPUNIT_ASSERT_EQUAL(JinglePayload::SessionInitiate, jingle->getAction());
CPPUNIT_ASSERT_EQUAL(JID("romeo@montague.lit/orchard"), jingle->getInitiator());
CPPUNIT_ASSERT_EQUAL(std::string("a73sjjvkla37jfea"), jingle->getSessionID());
JingleContentPayload::ref content = jingle->getPayload<JingleContentPayload>();
CPPUNIT_ASSERT(content);
JingleS5BTransportPayload::ref s5bPayload = content->getTransport<JingleS5BTransportPayload>();
CPPUNIT_ASSERT(s5bPayload);
CPPUNIT_ASSERT_EQUAL(std::string("vj3hs98y"), s5bPayload->getSessionID());
CPPUNIT_ASSERT_EQUAL(JingleS5BTransportPayload::TCPMode, s5bPayload->getMode());
CPPUNIT_ASSERT_EQUAL(false, s5bPayload->hasCandidateError());
CPPUNIT_ASSERT_EQUAL(false, s5bPayload->hasProxyError());
CPPUNIT_ASSERT_EQUAL(std::string(), s5bPayload->getActivated());
CPPUNIT_ASSERT_EQUAL(std::string(), s5bPayload->getCandidateUsed());
CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), s5bPayload->getCandidates().size());
JingleS5BTransportPayload::Candidate candidate;
candidate = s5bPayload->getCandidates()[0];
CPPUNIT_ASSERT_EQUAL(std::string("hft54dqy"), candidate.cid);
CPPUNIT_ASSERT_EQUAL(JID("romeo@montague.lit/orchard"), candidate.jid);
- CPPUNIT_ASSERT(HostAddressPort(HostAddress("192.168.4.1"), 5086) == candidate.hostPort);
+ CPPUNIT_ASSERT(HostAddressPort(HostAddress::fromString("192.168.4.1").get(), 5086) == candidate.hostPort);
CPPUNIT_ASSERT_EQUAL(8257636, candidate.priority);
CPPUNIT_ASSERT_EQUAL(JingleS5BTransportPayload::Candidate::DirectType, candidate.type);
candidate = s5bPayload->getCandidates()[1];
CPPUNIT_ASSERT_EQUAL(std::string("hutr46fe"), candidate.cid);
CPPUNIT_ASSERT_EQUAL(JID("romeo@montague.lit/orchard"), candidate.jid);
- CPPUNIT_ASSERT(HostAddressPort(HostAddress("24.24.24.1"), 5087) == candidate.hostPort);
+ CPPUNIT_ASSERT(HostAddressPort(HostAddress::fromString("24.24.24.1").get(), 5087) == candidate.hostPort);
CPPUNIT_ASSERT_EQUAL(8258636, candidate.priority);
CPPUNIT_ASSERT_EQUAL(JingleS5BTransportPayload::Candidate::DirectType, candidate.type);
}
// http://xmpp.org/extensions/xep-0260.html#example-3
void testParse_Xep0260_Example3() {
PayloadsParserTester parser;
CPPUNIT_ASSERT(parser.parse(
"<jingle xmlns='urn:xmpp:jingle:1'\n"
" action='session-accept'\n"
" initiator='romeo@montague.lit/orchard'\n"
" sid='a73sjjvkla37jfea'>\n"
" <content creator='initiator' name='ex'>\n"
" <description xmlns='urn:xmpp:example'/>\n"
" <transport xmlns='urn:xmpp:jingle:transports:s5b:1'\n"
" dstaddr='1a12fb7bc625e55f3ed5b29a53dbe0e4aa7d80ba'\n"
" mode='tcp'\n"
" sid='vj3hs98y'>\n"
" <candidate cid='ht567dq'\n"
" host='192.169.1.10'\n"
" jid='juliet@capulet.lit/balcony'\n"
" port='6539'\n"
" priority='8257636'\n"
" type='direct'/>\n"
" <candidate cid='hr65dqyd'\n"
" host='134.102.201.180'\n"
" jid='juliet@capulet.lit/balcony'\n"
" port='16453'\n"
" priority='7929856'\n"
" type='assisted'/>\n"
@@ -567,51 +567,51 @@ class JingleParserTest : public CppUnit::TestFixture {
" </transport>\n"
" </content>\n"
"</jingle>\n"
));
JinglePayload::ref jingle = parser.getPayload<JinglePayload>();
CPPUNIT_ASSERT(jingle);
CPPUNIT_ASSERT_EQUAL(JinglePayload::SessionAccept, jingle->getAction());
CPPUNIT_ASSERT_EQUAL(JID("romeo@montague.lit/orchard"), jingle->getInitiator());
CPPUNIT_ASSERT_EQUAL(std::string("a73sjjvkla37jfea"), jingle->getSessionID());
JingleContentPayload::ref content = jingle->getPayload<JingleContentPayload>();
CPPUNIT_ASSERT(content);
JingleS5BTransportPayload::ref s5bPayload = content->getTransport<JingleS5BTransportPayload>();
CPPUNIT_ASSERT(s5bPayload);
CPPUNIT_ASSERT_EQUAL(std::string("vj3hs98y"), s5bPayload->getSessionID());
CPPUNIT_ASSERT_EQUAL(JingleS5BTransportPayload::TCPMode, s5bPayload->getMode());
CPPUNIT_ASSERT_EQUAL(std::string("1a12fb7bc625e55f3ed5b29a53dbe0e4aa7d80ba"), s5bPayload->getDstAddr());
CPPUNIT_ASSERT_EQUAL(false, s5bPayload->hasCandidateError());
CPPUNIT_ASSERT_EQUAL(false, s5bPayload->hasProxyError());
CPPUNIT_ASSERT_EQUAL(std::string(), s5bPayload->getActivated());
CPPUNIT_ASSERT_EQUAL(std::string(), s5bPayload->getCandidateUsed());
CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), s5bPayload->getCandidates().size());
JingleS5BTransportPayload::Candidate candidate;
candidate = s5bPayload->getCandidates()[0];
CPPUNIT_ASSERT_EQUAL(std::string("ht567dq"), candidate.cid);
CPPUNIT_ASSERT_EQUAL(JID("juliet@capulet.lit/balcony"), candidate.jid);
- CPPUNIT_ASSERT(HostAddressPort(HostAddress("192.169.1.10"), 6539) == candidate.hostPort);
+ CPPUNIT_ASSERT(HostAddressPort(HostAddress::fromString("192.169.1.10").get(), 6539) == candidate.hostPort);
CPPUNIT_ASSERT_EQUAL(8257636, candidate.priority);
CPPUNIT_ASSERT_EQUAL(JingleS5BTransportPayload::Candidate::DirectType, candidate.type);
candidate = s5bPayload->getCandidates()[1];
CPPUNIT_ASSERT_EQUAL(std::string("hr65dqyd"), candidate.cid);
CPPUNIT_ASSERT_EQUAL(JID("juliet@capulet.lit/balcony"), candidate.jid);
- CPPUNIT_ASSERT(HostAddressPort(HostAddress("134.102.201.180"), 16453) == candidate.hostPort);
+ CPPUNIT_ASSERT(HostAddressPort(HostAddress::fromString("134.102.201.180").get(), 16453) == candidate.hostPort);
CPPUNIT_ASSERT_EQUAL(7929856, candidate.priority);
CPPUNIT_ASSERT_EQUAL(JingleS5BTransportPayload::Candidate::AssistedType, candidate.type);
candidate = s5bPayload->getCandidates()[2];
CPPUNIT_ASSERT_EQUAL(std::string("grt654q2"), candidate.cid);
CPPUNIT_ASSERT_EQUAL(JID("juliet@capulet.lit/balcony"), candidate.jid);
- CPPUNIT_ASSERT(HostAddressPort(HostAddress("2001:638:708:30c9:219:d1ff:fea4:a17d"), 6539) == candidate.hostPort);
+ CPPUNIT_ASSERT(HostAddressPort(HostAddress::fromString("2001:638:708:30c9:219:d1ff:fea4:a17d").get(), 6539) == candidate.hostPort);
CPPUNIT_ASSERT_EQUAL(8257606, candidate.priority);
CPPUNIT_ASSERT_EQUAL(JingleS5BTransportPayload::Candidate::DirectType, candidate.type);
}
};
CPPUNIT_TEST_SUITE_REGISTRATION(JingleParserTest);