diff options
author | sergeyu <sergeyu@chromium.org> | 2015-12-02 13:50:19 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-02 21:51:59 +0000 |
commit | 76391f06c692a4c3c8730798ebe95ba2f2f2d70c (patch) | |
tree | ebf2814a13251d59a058d5452c7578cec6d3c1d5 /remoting/protocol/jingle_messages_unittest.cc | |
parent | 2c0532a0a6a7d97f95169ae8951a9943fb64839e (diff) | |
download | chromium_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.cc | 253 |
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>" |