| 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/webrtc/libjingle/xmllite/xmlelement.h" | 10 #include "third_party/webrtc/libjingle/xmllite/xmlelement.h" |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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'>" | 102 "xmlns='jabber:client'>" |
| 103 "<jingle xmlns='urn:xmpp:jingle:1' " | 103 "<jingle xmlns='urn:xmpp:jingle:1' " |
| 104 "action='session-initiate' sid='2227053353' " | 104 "action='session-initiate' sid='2227053353' " |
| 105 "initiator='user@gmail.com/chromiumsy5C6A652D'>" | 105 "initiator='user@gmail.com/chromiumsy5C6A652D'>" |
| 106 "<content name='chromoting' creator='initiator'>" | 106 "<content name='chromoting' creator='initiator'>" |
| 107 "<description xmlns='google:remoting'>" | 107 "<description xmlns='google:remoting'>" |
| 108 "<standard-ice/>" | |
| 109 "<control transport='stream' version='2'/>" | 108 "<control transport='stream' version='2'/>" |
| 110 "<event transport='stream' version='2'/>" | 109 "<event transport='stream' version='2'/>" |
| 111 "<video transport='stream' version='2' codec='vp8'/>" | 110 "<video transport='stream' version='2' codec='vp8'/>" |
| 112 "<audio transport='stream' version='2' codec='verbatim'/>" | 111 "<audio transport='stream' version='2' codec='verbatim'/>" |
| 113 "<initial-resolution width='640' height='480'/>" | 112 "<initial-resolution width='640' height='480'/>" |
| 114 "<authentication><auth-token>" | 113 "<authentication><auth-token>" |
| 115 "j7whCMii0Z0AAPwj7whCM/j7whCMii0Z0AAPw=" | 114 "j7whCMii0Z0AAPwj7whCM/j7whCMii0Z0AAPw=" |
| 116 "</auth-token></authentication>" | 115 "</auth-token></authentication>" |
| 117 "</description>" | 116 "</description>" |
| 118 "<transport xmlns='http://www.google.com/transport/p2p'/>" | 117 "<transport xmlns='http://www.google.com/transport/p2p'/>" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 134 scoped_ptr<XmlElement> formatted_message(message.ToXml()); | 133 scoped_ptr<XmlElement> formatted_message(message.ToXml()); |
| 135 ASSERT_TRUE(formatted_message.get()); | 134 ASSERT_TRUE(formatted_message.get()); |
| 136 EXPECT_TRUE(VerifyXml(formatted_message.get(), source_message.get(), &error)) | 135 EXPECT_TRUE(VerifyXml(formatted_message.get(), source_message.get(), &error)) |
| 137 << error; | 136 << error; |
| 138 } | 137 } |
| 139 | 138 |
| 140 TEST(JingleMessageTest, SessionAccept) { | 139 TEST(JingleMessageTest, SessionAccept) { |
| 141 const char* kTestSessionAcceptMessage = | 140 const char* kTestSessionAcceptMessage = |
| 142 "<cli:iq from='user@gmail.com/chromoting016DBB07' " | 141 "<cli:iq from='user@gmail.com/chromoting016DBB07' " |
| 143 "to='user@gmail.com/chromiumsy5C6A652D' type='set' " | 142 "to='user@gmail.com/chromiumsy5C6A652D' type='set' " |
| 144 "xmlns:cli='jabber:client'>" | |
| 145 "<jingle action='session-accept' sid='2227053353' " | |
| 146 "xmlns='urn:xmpp:jingle:1'>i" | |
| 147 "<content creator='initiator' name='chromoting'>" | |
| 148 "<description xmlns='google:remoting'>" | |
| 149 "<standard-ice/>" | |
| 150 "<control transport='stream' version='2'/>" | |
| 151 "<event transport='stream' version='2'/>" | |
| 152 "<video codec='vp8' transport='stream' version='2'/>" | |
| 153 "<audio transport='stream' version='2' codec='verbatim'/>" | |
| 154 "<initial-resolution height='480' width='640'/>" | |
| 155 "<authentication><certificate>" | |
| 156 "MIICpjCCAY6gW0Cert0TANBgkqhkiG9w0BAQUFA=" | |
| 157 "</certificate></authentication>" | |
| 158 "</description>" | |
| 159 "<transport xmlns='http://www.google.com/transport/p2p'/>" | |
| 160 "</content>" | |
| 161 "</jingle>" | |
| 162 "</cli:iq>"; | |
| 163 | |
| 164 scoped_ptr<XmlElement> source_message( | |
| 165 XmlElement::ForStr(kTestSessionAcceptMessage)); | |
| 166 ASSERT_TRUE(source_message.get()); | |
| 167 | |
| 168 EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get())); | |
| 169 | |
| 170 JingleMessage message; | |
| 171 std::string error; | |
| 172 EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error; | |
| 173 | |
| 174 EXPECT_EQ(message.action, JingleMessage::SESSION_ACCEPT); | |
| 175 | |
| 176 scoped_ptr<XmlElement> formatted_message(message.ToXml()); | |
| 177 ASSERT_TRUE(formatted_message.get()); | |
| 178 EXPECT_TRUE(VerifyXml(source_message.get(), formatted_message.get(), &error)) | |
| 179 << error; | |
| 180 } | |
| 181 | |
| 182 TEST(JingleMessageTest, SessionAcceptNoIce) { | |
| 183 const char* kTestSessionAcceptMessage = | |
| 184 "<cli:iq from='user@gmail.com/chromoting016DBB07' " | |
| 185 "to='user@gmail.com/chromiumsy5C6A652D' type='set' " | |
| 186 "xmlns:cli='jabber:client'>" | 143 "xmlns:cli='jabber:client'>" |
| 187 "<jingle action='session-accept' sid='2227053353' " | 144 "<jingle action='session-accept' sid='2227053353' " |
| 188 "xmlns='urn:xmpp:jingle:1'>i" | 145 "xmlns='urn:xmpp:jingle:1'>i" |
| 189 "<content creator='initiator' name='chromoting'>" | 146 "<content creator='initiator' name='chromoting'>" |
| 190 "<description xmlns='google:remoting'>" | 147 "<description xmlns='google:remoting'>" |
| 191 "<control transport='stream' version='2'/>" | 148 "<control transport='stream' version='2'/>" |
| 192 "<event transport='stream' version='2'/>" | 149 "<event transport='stream' version='2'/>" |
| 193 "<video codec='vp8' transport='stream' version='2'/>" | 150 "<video codec='vp8' transport='stream' version='2'/>" |
| 194 "<audio transport='stream' version='2' codec='verbatim'/>" | 151 "<audio transport='stream' version='2' codec='verbatim'/>" |
| 195 "<initial-resolution height='480' width='640'/>" | 152 "<initial-resolution height='480' width='640'/>" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 213 EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error; | 170 EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error; |
| 214 | 171 |
| 215 EXPECT_EQ(message.action, JingleMessage::SESSION_ACCEPT); | 172 EXPECT_EQ(message.action, JingleMessage::SESSION_ACCEPT); |
| 216 | 173 |
| 217 scoped_ptr<XmlElement> formatted_message(message.ToXml()); | 174 scoped_ptr<XmlElement> formatted_message(message.ToXml()); |
| 218 ASSERT_TRUE(formatted_message.get()); | 175 ASSERT_TRUE(formatted_message.get()); |
| 219 EXPECT_TRUE(VerifyXml(source_message.get(), formatted_message.get(), &error)) | 176 EXPECT_TRUE(VerifyXml(source_message.get(), formatted_message.get(), &error)) |
| 220 << error; | 177 << error; |
| 221 } | 178 } |
| 222 | 179 |
| 223 TEST(JingleMessageTest, IceTransportInfo) { | 180 TEST(JingleMessageTest, TransportInfo) { |
| 224 const char* kTestIceTransportInfoMessage = | 181 const char* kTestTransportInfoMessage = |
| 225 "<cli:iq to='user@gmail.com/chromoting016DBB07' type='set' " | 182 "<cli:iq to='user@gmail.com/chromoting016DBB07' type='set' " |
| 226 "xmlns:cli='jabber:client'>" | 183 "xmlns:cli='jabber:client'><jingle xmlns='urn:xmpp:jingle:1' " |
| 227 "<jingle xmlns='urn:xmpp:jingle:1' action='transport-info' " | 184 "action='transport-info' sid='2227053353'><content name='chromoting' " |
| 228 "sid='2227053353'>" | 185 "creator='initiator'><transport " |
| 229 "<content name='chromoting' creator='initiator'>" | 186 "xmlns='http://www.google.com/transport/p2p'><candidate name='event' " |
| 230 "<transport xmlns='google:remoting:ice'>" | 187 "address='172.23.164.186' port='57040' preference='1' " |
| 231 "<credentials channel='event' ufrag='tPUyEAmQrEw3y7hi' " | 188 "username='tPUyEAmQrEw3y7hi' protocol='udp' generation='0' " |
| 232 "password='2iRdhLfawKZC5ydJ'/>" | 189 "password='2iRdhLfawKZC5ydJ' type='local'/><candidate name='video' " |
| 233 "<credentials channel='video' ufrag='EPK3CXo5sTLJSez0' " | 190 "address='172.23.164.186' port='42171' preference='1' " |
| 234 "password='eM0VUfUkZ+1Pyi0M'/>" | 191 "username='EPK3CXo5sTLJSez0' protocol='udp' generation='0' " |
| 235 "<candidate name='event' foundation='725747215' " | 192 "password='eM0VUfUkZ+1Pyi0M' type='local'/></transport></content>" |
| 236 "address='172.23.164.186' port='59089' type='local' " | 193 "</jingle></cli:iq>"; |
| 237 "protocol='udp' priority='2122194688' generation='0'/>" | |
| 238 "<candidate name='video' foundation='3623806809' " | |
| 239 "address='172.23.164.186' port='57040' type='local' " | |
| 240 "protocol='udp' priority='2122194688' generation='0'/>" | |
| 241 "</transport>" | |
| 242 "</content>" | |
| 243 "</jingle>" | |
| 244 "</cli:iq>"; | |
| 245 | 194 |
| 246 scoped_ptr<XmlElement> source_message( | 195 scoped_ptr<XmlElement> source_message( |
| 247 XmlElement::ForStr(kTestIceTransportInfoMessage)); | 196 XmlElement::ForStr(kTestTransportInfoMessage)); |
| 248 ASSERT_TRUE(source_message.get()); | 197 ASSERT_TRUE(source_message.get()); |
| 249 | 198 |
| 250 EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get())); | 199 EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get())); |
| 251 | |
| 252 JingleMessage message; | |
| 253 std::string error; | |
| 254 EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error; | |
| 255 | |
| 256 EXPECT_EQ(message.action, JingleMessage::TRANSPORT_INFO); | |
| 257 EXPECT_EQ(message.candidates.size(), 2U); | |
| 258 | |
| 259 scoped_ptr<XmlElement> formatted_message(message.ToXml()); | |
| 260 ASSERT_TRUE(formatted_message.get()); | |
| 261 EXPECT_TRUE(VerifyXml(source_message.get(), formatted_message.get(), &error)) | |
| 262 << error; | |
| 263 } | |
| 264 | |
| 265 TEST(JingleMessageTest, GiceTransportInfo) { | |
| 266 const char* kTestGiceTransportInfoMessage = | |
| 267 "<cli:iq to='user@gmail.com/chromoting016DBB07' type='set' " | |
| 268 "xmlns:cli='jabber:client'>" | |
| 269 "<jingle xmlns='urn:xmpp:jingle:1' action='transport-info' " | |
| 270 "sid='2227053353'>" | |
| 271 "<content name='chromoting' creator='initiator'>" | |
| 272 "<transport xmlns='http://www.google.com/transport/p2p'>" | |
| 273 "<candidate name='event' address='172.23.164.186' port='57040' " | |
| 274 "preference='1' username='tPUyEAmQrEw3y7hi' " | |
| 275 "protocol='udp' generation='0' " | |
| 276 "password='2iRdhLfawKZC5ydJ' type='local'/>" | |
| 277 "<candidate name='video' address='172.23.164.186' port='42171' " | |
| 278 "preference='1' username='EPK3CXo5sTLJSez0' " | |
| 279 "protocol='udp' generation='0' " | |
| 280 "password='eM0VUfUkZ+1Pyi0M' type='local'/>" | |
| 281 "</transport>" | |
| 282 "</content>" | |
| 283 "</jingle>" | |
| 284 "</cli:iq>"; | |
| 285 | |
| 286 scoped_ptr<XmlElement> source_message( | |
| 287 XmlElement::ForStr(kTestGiceTransportInfoMessage)); | |
| 288 ASSERT_TRUE(source_message.get()); | |
| 289 | |
| 290 EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get())); | |
| 291 | 200 |
| 292 JingleMessage message; | 201 JingleMessage message; |
| 293 std::string error; | 202 std::string error; |
| 294 EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error; | 203 EXPECT_TRUE(message.ParseXml(source_message.get(), &error)) << error; |
| 295 | 204 |
| 296 EXPECT_EQ(message.action, JingleMessage::TRANSPORT_INFO); | 205 EXPECT_EQ(message.action, JingleMessage::TRANSPORT_INFO); |
| 297 EXPECT_EQ(message.candidates.size(), 2U); | 206 EXPECT_EQ(message.candidates.size(), 2U); |
| 298 | 207 |
| 299 scoped_ptr<XmlElement> formatted_message(message.ToXml()); | 208 scoped_ptr<XmlElement> formatted_message(message.ToXml()); |
| 300 ASSERT_TRUE(formatted_message.get()); | 209 ASSERT_TRUE(formatted_message.get()); |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 456 EXPECT_FALSE(JingleMessage::IsJingleMessage(source_message.get())); | 365 EXPECT_FALSE(JingleMessage::IsJingleMessage(source_message.get())); |
| 457 | 366 |
| 458 JingleMessage message; | 367 JingleMessage message; |
| 459 std::string error; | 368 std::string error; |
| 460 EXPECT_FALSE(message.ParseXml(source_message.get(), &error)); | 369 EXPECT_FALSE(message.ParseXml(source_message.get(), &error)); |
| 461 EXPECT_FALSE(error.empty()); | 370 EXPECT_FALSE(error.empty()); |
| 462 } | 371 } |
| 463 | 372 |
| 464 } // namespace protocol | 373 } // namespace protocol |
| 465 } // namespace remoting | 374 } // namespace remoting |
| OLD | NEW |