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 |