summaryrefslogtreecommitdiffstats
path: root/remoting/protocol/jingle_messages_unittest.cc
diff options
context:
space:
mode:
authorsergeyu <sergeyu@chromium.org>2015-12-02 13:50:19 -0800
committerCommit bot <commit-bot@chromium.org>2015-12-02 21:51:59 +0000
commit76391f06c692a4c3c8730798ebe95ba2f2f2d70c (patch)
treeebf2814a13251d59a058d5452c7578cec6d3c1d5 /remoting/protocol/jingle_messages_unittest.cc
parent2c0532a0a6a7d97f95169ae8951a9943fb64839e (diff)
downloadchromium_src-76391f06c692a4c3c8730798ebe95ba2f2f2d70c.zip
chromium_src-76391f06c692a4c3c8730798ebe95ba2f2f2d70c.tar.gz
chromium_src-76391f06c692a4c3c8730798ebe95ba2f2f2d70c.tar.bz2
Add support for WebRTC protocol in SessionConfig.
BUG=547158 Review URL: https://codereview.chromium.org/1492553002 Cr-Commit-Position: refs/heads/master@{#362801}
Diffstat (limited to 'remoting/protocol/jingle_messages_unittest.cc')
-rw-r--r--remoting/protocol/jingle_messages_unittest.cc253
1 files changed, 168 insertions, 85 deletions
diff --git a/remoting/protocol/jingle_messages_unittest.cc b/remoting/protocol/jingle_messages_unittest.cc
index 7d075d4..7175277 100644
--- a/remoting/protocol/jingle_messages_unittest.cc
+++ b/remoting/protocol/jingle_messages_unittest.cc
@@ -5,6 +5,7 @@
#include "remoting/protocol/jingle_messages.h"
#include "base/logging.h"
+#include "remoting/protocol/content_description.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/webrtc/libjingle/xmllite/xmlelement.h"
@@ -89,12 +90,41 @@ bool VerifyXml(const XmlElement* exp,
return true;
}
-} // namespace
+// Parses |message_text| to JingleMessage.
+void ParseJingleMessageFromXml(const char* message_text,
+ JingleMessage* parsed) {
+ scoped_ptr<XmlElement> source_message(
+ XmlElement::ForStr(message_text));
+ ASSERT_TRUE(source_message.get());
+
+ EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get()));
+
+ std::string error;
+ EXPECT_TRUE(parsed->ParseXml(source_message.get(), &error)) << error;
+}
+
+
+// Parses |message_text| to JingleMessage then attempts to format it to XML and
+// verifies that the same XML content is generated.
+void ParseFormatAndCompare(const char* message_text, JingleMessage* parsed) {
+ scoped_ptr<XmlElement> source_message(
+ XmlElement::ForStr(message_text));
+ ASSERT_TRUE(source_message.get());
+
+ EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get()));
-// Each of the tests below try to parse a message, format it again,
-// and then verify that the formatted message is the same as the
-// original stanza. The sample messages were generated by libjingle.
+ std::string error;
+ EXPECT_TRUE(parsed->ParseXml(source_message.get(), &error)) << error;
+
+ scoped_ptr<XmlElement> formatted_message(parsed->ToXml());
+ ASSERT_TRUE(formatted_message.get());
+ EXPECT_TRUE(VerifyXml(source_message.get(), formatted_message.get(), &error))
+ << error;
+}
+
+} // namespace
+// Session-initiate message for current ICE-based protocol.
TEST(JingleMessageTest, SessionInitiate) {
const char* kTestSessionInitiateMessage =
"<iq to='user@gmail.com/chromoting016DBB07' type='set' "
@@ -110,7 +140,6 @@ TEST(JingleMessageTest, SessionInitiate) {
"<event transport='stream' version='2'/>"
"<video transport='stream' version='2' codec='vp8'/>"
"<audio transport='stream' version='2' codec='verbatim'/>"
- "<initial-resolution width='640' height='480'/>"
"<authentication><auth-token>"
"j7whCMii0Z0AAPwj7whCM/j7whCMii0Z0AAPw="
"</auth-token></authentication>"
@@ -118,31 +147,116 @@ TEST(JingleMessageTest, SessionInitiate) {
"</content>"
"</jingle>"
"</iq>";
- scoped_ptr<XmlElement> source_message(
- XmlElement::ForStr(kTestSessionInitiateMessage));
- ASSERT_TRUE(source_message.get());
- EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get()));
+ JingleMessage message;
+ ParseFormatAndCompare(kTestSessionInitiateMessage, &message);
+
+ EXPECT_EQ(message.action, JingleMessage::SESSION_INITIATE);
+ EXPECT_FALSE(message.description->config()->webrtc_supported());
+ EXPECT_TRUE(message.description->config()->ice_supported());
+}
+
+// Session-initiate message for WebRTC-based protocol.
+TEST(JingleMessageTest, SessionInitiateWebrtc) {
+ const char* kTestSessionInitiateMessage =
+ "<iq to='user@gmail.com/chromoting016DBB07' type='set' "
+ "from='user@gmail.com/chromiumsy5C6A652D' "
+ "xmlns='jabber:client'>"
+ "<jingle xmlns='urn:xmpp:jingle:1' "
+ "action='session-initiate' sid='2227053353' "
+ "initiator='user@gmail.com/chromiumsy5C6A652D'>"
+ "<content name='chromoting' creator='initiator'>"
+ "<description xmlns='google:remoting'>"
+ "<authentication><auth-token>"
+ "j7whCMii0Z0AAPwj7whCM/j7whCMii0Z0AAPw="
+ "</auth-token></authentication>"
+ "</description>"
+ "<transport xmlns='google:remoting:webrtc' />"
+ "</content>"
+ "</jingle>"
+ "</iq>";
JingleMessage message;
- std::string error;
- EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error;
+ ParseFormatAndCompare(kTestSessionInitiateMessage, &message);
EXPECT_EQ(message.action, JingleMessage::SESSION_INITIATE);
+ EXPECT_TRUE(message.description->config()->webrtc_supported());
+ EXPECT_FALSE(message.description->config()->ice_supported());
+}
- scoped_ptr<XmlElement> formatted_message(message.ToXml());
- ASSERT_TRUE(formatted_message.get());
- EXPECT_TRUE(VerifyXml(formatted_message.get(), source_message.get(), &error))
- << error;
+// Session-initiate message for hybrid clients that support both versions of the
+// protocol.
+TEST(JingleMessageTest, SessionInitiateHybrid) {
+ const char* kTestSessionInitiateMessage =
+ "<iq to='user@gmail.com/chromoting016DBB07' type='set' "
+ "from='user@gmail.com/chromiumsy5C6A652D' "
+ "xmlns='jabber:client'>"
+ "<jingle xmlns='urn:xmpp:jingle:1' "
+ "action='session-initiate' sid='2227053353' "
+ "initiator='user@gmail.com/chromiumsy5C6A652D'>"
+ "<content name='chromoting' creator='initiator'>"
+ "<description xmlns='google:remoting'>"
+ "<standard-ice/>"
+ "<control transport='stream' version='2'/>"
+ "<event transport='stream' version='2'/>"
+ "<video transport='stream' version='2' codec='vp8'/>"
+ "<audio transport='stream' version='2' codec='verbatim'/>"
+ "<authentication><auth-token>"
+ "j7whCMii0Z0AAPwj7whCM/j7whCMii0Z0AAPw="
+ "</auth-token></authentication>"
+ "</description>"
+ "<transport xmlns='google:remoting:webrtc' />"
+ "</content>"
+ "</jingle>"
+ "</iq>";
+
+ JingleMessage message;
+ ParseFormatAndCompare(kTestSessionInitiateMessage, &message);
+
+ EXPECT_EQ(message.action, JingleMessage::SESSION_INITIATE);
+ EXPECT_TRUE(message.description->config()->webrtc_supported());
+ EXPECT_TRUE(message.description->config()->ice_supported());
}
+// Old GICE session-initiate message from older clients that are no longer
+// supported.
+TEST(JingleMessageTest, SessionInitiateNoIce) {
+ const char* kTestSessionInitiateMessage =
+ "<iq to='user@gmail.com/chromoting016DBB07' type='set' "
+ "from='user@gmail.com/chromiumsy5C6A652D' "
+ "xmlns='jabber:client'>"
+ "<jingle xmlns='urn:xmpp:jingle:1' "
+ "action='session-initiate' sid='2227053353' "
+ "initiator='user@gmail.com/chromiumsy5C6A652D'>"
+ "<content name='chromoting' creator='initiator'>"
+ "<description xmlns='google:remoting'>"
+ "<control transport='stream' version='2'/>"
+ "<event transport='stream' version='2'/>"
+ "<video transport='stream' version='2' codec='vp8'/>"
+ "<audio transport='stream' version='2' codec='verbatim'/>"
+ "<authentication><auth-token>"
+ "j7whCMii0Z0AAPwj7whCM/j7whCMii0Z0AAPw="
+ "</auth-token></authentication>"
+ "</description>"
+ "</content>"
+ "</jingle>"
+ "</iq>";
+
+ JingleMessage message;
+ ParseJingleMessageFromXml(kTestSessionInitiateMessage, &message);
+
+ EXPECT_EQ(message.action, JingleMessage::SESSION_INITIATE);
+ EXPECT_FALSE(message.description->config()->ice_supported());
+}
+
+// Session-accept message for current ICE-based protocol.
TEST(JingleMessageTest, SessionAccept) {
const char* kTestSessionAcceptMessage =
"<cli:iq from='user@gmail.com/chromoting016DBB07' "
"to='user@gmail.com/chromiumsy5C6A652D' type='set' "
"xmlns:cli='jabber:client'>"
"<jingle action='session-accept' sid='2227053353' "
- "xmlns='urn:xmpp:jingle:1'>i"
+ "xmlns='urn:xmpp:jingle:1'>"
"<content creator='initiator' name='chromoting'>"
"<description xmlns='google:remoting'>"
"<standard-ice/>"
@@ -150,7 +264,6 @@ TEST(JingleMessageTest, SessionAccept) {
"<event transport='stream' version='2'/>"
"<video codec='vp8' transport='stream' version='2'/>"
"<audio transport='stream' version='2' codec='verbatim'/>"
- "<initial-resolution height='480' width='640'/>"
"<authentication><certificate>"
"MIICpjCCAY6gW0Cert0TANBgkqhkiG9w0BAQUFA="
"</certificate></authentication>"
@@ -159,38 +272,56 @@ TEST(JingleMessageTest, SessionAccept) {
"</jingle>"
"</cli:iq>";
- scoped_ptr<XmlElement> source_message(
- XmlElement::ForStr(kTestSessionAcceptMessage));
- ASSERT_TRUE(source_message.get());
+ JingleMessage message;
+ ParseFormatAndCompare(kTestSessionAcceptMessage, &message);
- EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get()));
+ EXPECT_EQ(message.action, JingleMessage::SESSION_ACCEPT);
+ EXPECT_FALSE(message.description->config()->webrtc_supported());
+ EXPECT_TRUE(message.description->config()->ice_supported());
+}
+
+// Session-accept message for WebRTC-based protocol.
+TEST(JingleMessageTest, SessionAcceptWebrtc) {
+ const char* kTestSessionAcceptMessage =
+ "<cli:iq from='user@gmail.com/chromoting016DBB07' "
+ "to='user@gmail.com/chromiumsy5C6A652D' type='set' "
+ "xmlns:cli='jabber:client'>"
+ "<jingle action='session-accept' sid='2227053353' "
+ "xmlns='urn:xmpp:jingle:1'>"
+ "<content creator='initiator' name='chromoting'>"
+ "<description xmlns='google:remoting'>"
+ "<authentication><certificate>"
+ "MIICpjCCAY6gW0Cert0TANBgkqhkiG9w0BAQUFA="
+ "</certificate></authentication>"
+ "</description>"
+ "<transport xmlns='google:remoting:webrtc' />"
+ "</content>"
+ "</jingle>"
+ "</cli:iq>";
JingleMessage message;
- std::string error;
- EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error;
+ ParseFormatAndCompare(kTestSessionAcceptMessage, &message);
EXPECT_EQ(message.action, JingleMessage::SESSION_ACCEPT);
-
- scoped_ptr<XmlElement> formatted_message(message.ToXml());
- ASSERT_TRUE(formatted_message.get());
- EXPECT_TRUE(VerifyXml(source_message.get(), formatted_message.get(), &error))
- << error;
+ EXPECT_TRUE(message.description->config()->webrtc_supported());
+ EXPECT_FALSE(message.description->config()->ice_supported());
}
+// Old GICE session-accept message from older host that are no longer
+// supported.
TEST(JingleMessageTest, SessionAcceptNoIce) {
const char* kTestSessionAcceptMessage =
"<cli:iq from='user@gmail.com/chromoting016DBB07' "
"to='user@gmail.com/chromiumsy5C6A652D' type='set' "
"xmlns:cli='jabber:client'>"
"<jingle action='session-accept' sid='2227053353' "
- "xmlns='urn:xmpp:jingle:1'>i"
+ "xmlns='urn:xmpp:jingle:1'>"
"<content creator='initiator' name='chromoting'>"
"<description xmlns='google:remoting'>"
"<control transport='stream' version='2'/>"
"<event transport='stream' version='2'/>"
"<video codec='vp8' transport='stream' version='2'/>"
"<audio transport='stream' version='2' codec='verbatim'/>"
- "<initial-resolution height='480' width='640'/>"
"<authentication><certificate>"
"MIICpjCCAY6gW0Cert0TANBgkqhkiG9w0BAQUFA="
"</certificate></authentication>"
@@ -199,22 +330,12 @@ TEST(JingleMessageTest, SessionAcceptNoIce) {
"</jingle>"
"</cli:iq>";
- scoped_ptr<XmlElement> source_message(
- XmlElement::ForStr(kTestSessionAcceptMessage));
- ASSERT_TRUE(source_message.get());
-
- EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get()));
-
JingleMessage message;
- std::string error;
- EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error;
+ ParseJingleMessageFromXml(kTestSessionAcceptMessage, &message);
EXPECT_EQ(message.action, JingleMessage::SESSION_ACCEPT);
-
- scoped_ptr<XmlElement> formatted_message(message.ToXml());
- ASSERT_TRUE(formatted_message.get());
- EXPECT_TRUE(VerifyXml(source_message.get(), formatted_message.get(), &error))
- << error;
+ EXPECT_FALSE(message.description->config()->ice_supported());
+ EXPECT_FALSE(message.description->config()->webrtc_supported());
}
TEST(JingleMessageTest, IceTransportInfo) {
@@ -240,15 +361,8 @@ TEST(JingleMessageTest, IceTransportInfo) {
"</jingle>"
"</cli:iq>";
- scoped_ptr<XmlElement> source_message(
- XmlElement::ForStr(kTestIceTransportInfoMessage));
- ASSERT_TRUE(source_message.get());
-
- EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get()));
-
JingleMessage message;
- std::string error;
- EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error;
+ ParseFormatAndCompare(kTestIceTransportInfoMessage, &message);
EXPECT_EQ(message.action, JingleMessage::TRANSPORT_INFO);
@@ -256,11 +370,6 @@ TEST(JingleMessageTest, IceTransportInfo) {
EXPECT_TRUE(transport_info.ParseXml(message.transport_info.get()));
EXPECT_EQ(transport_info.ice_credentials.size(), 2U);
EXPECT_EQ(transport_info.candidates.size(), 2U);
-
- scoped_ptr<XmlElement> formatted_message(message.ToXml());
- ASSERT_TRUE(formatted_message.get());
- EXPECT_TRUE(VerifyXml(source_message.get(), formatted_message.get(), &error))
- << error;
}
TEST(JingleMessageTest, SessionTerminate) {
@@ -271,51 +380,26 @@ TEST(JingleMessageTest, SessionTerminate) {
"sid='2227053353' xmlns='urn:xmpp:jingle:1'><reason><success/>"
"</reason></jingle></cli:iq>";
- scoped_ptr<XmlElement> source_message(
- XmlElement::ForStr(kTestSessionTerminateMessage));
- ASSERT_TRUE(source_message.get());
-
- EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get()));
-
JingleMessage message;
- std::string error;
- EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error;
-
+ ParseFormatAndCompare(kTestSessionTerminateMessage, &message);
EXPECT_EQ(message.action, JingleMessage::SESSION_TERMINATE);
-
- scoped_ptr<XmlElement> formatted_message(message.ToXml());
- ASSERT_TRUE(formatted_message.get());
- EXPECT_TRUE(VerifyXml(source_message.get(), formatted_message.get(), &error))
- << error;
}
TEST(JingleMessageTest, SessionInfo) {
- const char* kTestSessionTerminateMessage =
+ const char* kTestSessionInfoMessage =
"<cli:iq from='user@gmail.com/chromoting016DBB07' "
"to='user@gmail.com/chromiumsy5C6A652D' type='set' "
"xmlns:cli='jabber:client'><jingle action='session-info' "
"sid='2227053353' xmlns='urn:xmpp:jingle:1'><test-info>TestMessage"
"</test-info></jingle></cli:iq>";
- scoped_ptr<XmlElement> source_message(
- XmlElement::ForStr(kTestSessionTerminateMessage));
- ASSERT_TRUE(source_message.get());
-
- EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get()));
-
JingleMessage message;
- std::string error;
- EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error;
+ ParseFormatAndCompare(kTestSessionInfoMessage, &message);
EXPECT_EQ(message.action, JingleMessage::SESSION_INFO);
ASSERT_TRUE(message.info.get() != nullptr);
EXPECT_TRUE(message.info->Name() ==
buzz::QName("urn:xmpp:jingle:1", "test-info"));
-
- scoped_ptr<XmlElement> formatted_message(message.ToXml());
- ASSERT_TRUE(formatted_message.get());
- EXPECT_TRUE(VerifyXml(source_message.get(), formatted_message.get(), &error))
- << error;
}
TEST(JingleMessageReplyTest, ToXml) {
@@ -397,7 +481,6 @@ TEST(JingleMessageTest, ErrorMessage) {
"<event transport='stream' version='2'/>"
"<video transport='stream' version='2' codec='vp8'/>"
"<audio transport='stream' version='2' codec='verbatim'/>"
- "<initial-resolution width='800' height='600'/>"
"<authentication><auth-token>"
"j7whCMii0Z0AAPwj7whCM/j7whCMii0Z0AAPw="
"</auth-token></authentication>"