| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "remoting/protocol/jingle_messages.h" | 5 #include "remoting/protocol/jingle_messages.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "testing/gmock/include/gmock/gmock.h" | 8 #include "testing/gmock/include/gmock/gmock.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include "third_party/libjingle/source/talk/xmllite/xmlelement.h" | 10 #include "third_party/libjingle/source/talk/xmllite/xmlelement.h" |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 | 91 |
| 92 } // namespace | 92 } // namespace |
| 93 | 93 |
| 94 // Each of the tests below try to parse a message, format it again, | 94 // Each of the tests below try to parse a message, format it again, |
| 95 // and then verify that the formatted message is the same as the | 95 // and then verify that the formatted message is the same as the |
| 96 // original stanza. The sample messages were generated by libjingle. | 96 // original stanza. The sample messages were generated by libjingle. |
| 97 | 97 |
| 98 TEST(JingleMessageTest, SessionInitiate) { | 98 TEST(JingleMessageTest, SessionInitiate) { |
| 99 const char* kTestSessionInitiateMessage = | 99 const char* kTestSessionInitiateMessage = |
| 100 "<iq to='user@gmail.com/chromoting016DBB07' type='set' " | 100 "<iq to='user@gmail.com/chromoting016DBB07' type='set' " |
| 101 "from='user@gmail.com/chromiumsy5C6A652D' " | 101 "from='user@gmail.com/chromiumsy5C6A652D' " |
| 102 "xmlns='jabber:client'><jingle xmlns='urn:xmpp:jingle:1' " | 102 "xmlns='jabber:client'>" |
| 103 "action='session-initiate' sid='2227053353' " | 103 "<jingle xmlns='urn:xmpp:jingle:1' " |
| 104 "initiator='user@gmail.com/chromiumsy5C6A652D'><content " | 104 "action='session-initiate' sid='2227053353' " |
| 105 "name='chromoting' creator='initiator'><description " | 105 "initiator='user@gmail.com/chromiumsy5C6A652D'>" |
| 106 "xmlns='google:remoting'><control transport='stream' version='2'/><event " | 106 "<content name='chromoting' creator='initiator'>" |
| 107 "transport='stream' version='2'/><video transport='stream' version='2' " | 107 "<description xmlns='google:remoting'>" |
| 108 "codec='vp8'/><initial-resolution width='640' height='480'/>" | 108 "<control transport='stream' version='2'/>" |
| 109 "<authentication><auth-token>j7whCMii0Z0AAPwj7whCM/j7whCMii0Z0AAPw=" | 109 "<event transport='stream' version='2'/>" |
| 110 "</auth-token></authentication></description><transport " | 110 "<video transport='stream' version='2' codec='vp8'/>" |
| 111 "xmlns='http://www.google.com/transport/p2p'/></content></jingle>" | 111 "<audio transport='stream' version='2' codec='verbatim'/>" |
| 112 "<initial-resolution width='640' height='480'/>" |
| 113 "<authentication><auth-token>" |
| 114 "j7whCMii0Z0AAPwj7whCM/j7whCMii0Z0AAPw=" |
| 115 "</auth-token></authentication>" |
| 116 "</description>" |
| 117 "<transport xmlns='http://www.google.com/transport/p2p'/>" |
| 118 "</content>" |
| 119 "</jingle>" |
| 112 "</iq>"; | 120 "</iq>"; |
| 113 scoped_ptr<XmlElement> source_message( | 121 scoped_ptr<XmlElement> source_message( |
| 114 XmlElement::ForStr(kTestSessionInitiateMessage)); | 122 XmlElement::ForStr(kTestSessionInitiateMessage)); |
| 115 ASSERT_TRUE(source_message.get()); | 123 ASSERT_TRUE(source_message.get()); |
| 116 | 124 |
| 117 EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get())); | 125 EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get())); |
| 118 | 126 |
| 119 JingleMessage message; | 127 JingleMessage message; |
| 120 std::string error; | 128 std::string error; |
| 121 EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error; | 129 EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error; |
| 122 | 130 |
| 123 EXPECT_EQ(message.action, JingleMessage::SESSION_INITIATE); | 131 EXPECT_EQ(message.action, JingleMessage::SESSION_INITIATE); |
| 124 | 132 |
| 125 scoped_ptr<XmlElement> formatted_message(message.ToXml()); | 133 scoped_ptr<XmlElement> formatted_message(message.ToXml()); |
| 126 ASSERT_TRUE(formatted_message.get()); | 134 ASSERT_TRUE(formatted_message.get()); |
| 127 EXPECT_TRUE(VerifyXml(formatted_message.get(), source_message.get(), &error)) | 135 EXPECT_TRUE(VerifyXml(formatted_message.get(), source_message.get(), &error)) |
| 128 << error; | 136 << error; |
| 129 } | 137 } |
| 130 | 138 |
| 131 TEST(JingleMessageTest, SessionAccept) { | 139 TEST(JingleMessageTest, SessionAccept) { |
| 132 const char* kTestSessionAcceptMessage = | 140 const char* kTestSessionAcceptMessage = |
| 133 "<cli:iq from='user@gmail.com/chromoting016DBB07' " | 141 "<cli:iq from='user@gmail.com/chromoting016DBB07' " |
| 134 "to='user@gmail.com/chromiumsy5C6A652D' type='set' " | 142 "to='user@gmail.com/chromiumsy5C6A652D' type='set' " |
| 135 "xmlns:cli='jabber:client'><jingle action='session-accept' " | 143 "xmlns:cli='jabber:client'>" |
| 136 "sid='2227053353' xmlns='urn:xmpp:jingle:1'><content creator='initiator' " | 144 "<jingle action='session-accept' sid='2227053353' " |
| 137 "name='chromoting'><description xmlns='google:remoting'><control " | 145 "xmlns='urn:xmpp:jingle:1'>i" |
| 138 "transport='stream' version='2'/><event transport='stream' version='2'/>" | 146 "<content creator='initiator' name='chromoting'>" |
| 139 "<video codec='vp8' transport='stream' version='2'/><initial-resolution " | 147 "<description xmlns='google:remoting'>" |
| 140 "height='480' width='640'/><authentication><certificate>" | 148 "<control transport='stream' version='2'/>" |
| 141 "MIICpjCCAY6gW0Cert0TANBgkqhkiG9w0BAQUFA=</certificate>" | 149 "<event transport='stream' version='2'/>" |
| 142 "</authentication></description><transport xmlns=" | 150 "<video codec='vp8' transport='stream' version='2'/>" |
| 143 "'http://www.google.com/transport/p2p'/></content></jingle></cli:iq>"; | 151 "<audio transport='stream' version='2' codec='verbatim'/>" |
| 152 "<initial-resolution height='480' width='640'/>" |
| 153 "<authentication><certificate>" |
| 154 "MIICpjCCAY6gW0Cert0TANBgkqhkiG9w0BAQUFA=" |
| 155 "</certificate></authentication>" |
| 156 "</description>" |
| 157 "<transport xmlns='http://www.google.com/transport/p2p'/>" |
| 158 "</content>" |
| 159 "</jingle>" |
| 160 "</cli:iq>"; |
| 144 | 161 |
| 145 scoped_ptr<XmlElement> source_message( | 162 scoped_ptr<XmlElement> source_message( |
| 146 XmlElement::ForStr(kTestSessionAcceptMessage)); | 163 XmlElement::ForStr(kTestSessionAcceptMessage)); |
| 147 ASSERT_TRUE(source_message.get()); | 164 ASSERT_TRUE(source_message.get()); |
| 148 | 165 |
| 149 EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get())); | 166 EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get())); |
| 150 | 167 |
| 151 JingleMessage message; | 168 JingleMessage message; |
| 152 std::string error; | 169 std::string error; |
| 153 EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error; | 170 EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error; |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 310 ASSERT_TRUE(expected.get()); | 327 ASSERT_TRUE(expected.get()); |
| 311 | 328 |
| 312 std::string error; | 329 std::string error; |
| 313 EXPECT_TRUE(VerifyXml(expected.get(), reply.get(), &error)) << error; | 330 EXPECT_TRUE(VerifyXml(expected.get(), reply.get(), &error)) << error; |
| 314 } | 331 } |
| 315 } | 332 } |
| 316 | 333 |
| 317 TEST(JingleMessageTest, ErrorMessage) { | 334 TEST(JingleMessageTest, ErrorMessage) { |
| 318 const char* kTestSessionInitiateErrorMessage = | 335 const char* kTestSessionInitiateErrorMessage = |
| 319 "<iq to='user@gmail.com/chromoting016DBB07' type='error' " | 336 "<iq to='user@gmail.com/chromoting016DBB07' type='error' " |
| 320 "from='user@gmail.com/chromiumsy5C6A652D' " | 337 "from='user@gmail.com/chromiumsy5C6A652D' " |
| 321 "xmlns='jabber:client'><jingle xmlns='urn:xmpp:jingle:1' " | 338 "xmlns='jabber:client'>" |
| 322 "action='session-initiate' sid='2227053353' " | 339 "<jingle xmlns='urn:xmpp:jingle:1' " |
| 323 "initiator='user@gmail.com/chromiumsy5C6A652D'><content " | 340 "action='session-initiate' sid='2227053353' " |
| 324 "name='chromoting' creator='initiator'><description " | 341 "initiator='user@gmail.com/chromiumsy5C6A652D'>" |
| 325 "xmlns='google:remoting'><control transport='stream' version='2'/><event " | 342 "<content name='chromoting' creator='initiator'>" |
| 326 "transport='stream' version='2'/><video transport='stream' version='2' " | 343 "<description xmlns='google:remoting'>" |
| 327 "codec='vp8'/><initial-resolution width='800' height='600'/>" | 344 "<control transport='stream' version='2'/>" |
| 328 "<authentication><auth-token>j7whCMii0Z0AAPwj7whCM/j7whCMii0Z0AAPw=" | 345 "<event transport='stream' version='2'/>" |
| 329 "</auth-token></authentication></description><transport " | 346 "<video transport='stream' version='2' codec='vp8'/>" |
| 330 "xmlns='http://www.google.com/transport/p2p'/></content></jingle>" | 347 "<audio transport='stream' version='2' codec='verbatim'/>" |
| 331 "<error code='501' type='cancel'><feature-not-implemented " | 348 "<initial-resolution width='800' height='600'/>" |
| 332 "xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error>" | 349 "<authentication><auth-token>" |
| 350 "j7whCMii0Z0AAPwj7whCM/j7whCMii0Z0AAPw=" |
| 351 "</auth-token></authentication>" |
| 352 "</description>" |
| 353 "<transport xmlns='http://www.google.com/transport/p2p'/>" |
| 354 "</content>" |
| 355 "</jingle>" |
| 356 "<error code='501' type='cancel'>" |
| 357 "<feature-not-implemented " |
| 358 "xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" |
| 359 "</error>" |
| 333 "</iq>"; | 360 "</iq>"; |
| 334 scoped_ptr<XmlElement> source_message( | 361 scoped_ptr<XmlElement> source_message( |
| 335 XmlElement::ForStr(kTestSessionInitiateErrorMessage)); | 362 XmlElement::ForStr(kTestSessionInitiateErrorMessage)); |
| 336 ASSERT_TRUE(source_message.get()); | 363 ASSERT_TRUE(source_message.get()); |
| 337 | 364 |
| 338 EXPECT_FALSE(JingleMessage::IsJingleMessage(source_message.get())); | 365 EXPECT_FALSE(JingleMessage::IsJingleMessage(source_message.get())); |
| 339 | 366 |
| 340 JingleMessage message; | 367 JingleMessage message; |
| 341 std::string error; | 368 std::string error; |
| 342 EXPECT_FALSE(message.ParseXml(source_message.get(), &error)); | 369 EXPECT_FALSE(message.ParseXml(source_message.get(), &error)); |
| 343 EXPECT_FALSE(error.empty()); | 370 EXPECT_FALSE(error.empty()); |
| 344 } | 371 } |
| 345 | 372 |
| 346 } // namespace protocol | 373 } // namespace protocol |
| 347 } // namespace remoting | 374 } // namespace remoting |
| OLD | NEW |