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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 *error = "Unexpected <" + val_child->Name().Merged() + "> found"; | 89 *error = "Unexpected <" + val_child->Name().Merged() + "> found"; |
90 return false; | 90 return false; |
91 } | 91 } |
92 | 92 |
93 return true; | 93 return true; |
94 } | 94 } |
95 | 95 |
96 // Parses |message_text| to JingleMessage. | 96 // Parses |message_text| to JingleMessage. |
97 void ParseJingleMessageFromXml(const char* message_text, | 97 void ParseJingleMessageFromXml(const char* message_text, |
98 JingleMessage* parsed) { | 98 JingleMessage* parsed) { |
99 scoped_ptr<XmlElement> source_message( | 99 std::unique_ptr<XmlElement> source_message(XmlElement::ForStr(message_text)); |
100 XmlElement::ForStr(message_text)); | |
101 ASSERT_TRUE(source_message.get()); | 100 ASSERT_TRUE(source_message.get()); |
102 | 101 |
103 EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get())); | 102 EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get())); |
104 | 103 |
105 std::string error; | 104 std::string error; |
106 EXPECT_TRUE(parsed->ParseXml(source_message.get(), &error)) << error; | 105 EXPECT_TRUE(parsed->ParseXml(source_message.get(), &error)) << error; |
107 } | 106 } |
108 | 107 |
109 | 108 |
110 // Parses |message_text| to JingleMessage then attempts to format it to XML and | 109 // Parses |message_text| to JingleMessage then attempts to format it to XML and |
111 // verifies that the same XML content is generated. | 110 // verifies that the same XML content is generated. |
112 void ParseFormatAndCompare(const char* message_text, JingleMessage* parsed) { | 111 void ParseFormatAndCompare(const char* message_text, JingleMessage* parsed) { |
113 scoped_ptr<XmlElement> source_message( | 112 std::unique_ptr<XmlElement> source_message(XmlElement::ForStr(message_text)); |
114 XmlElement::ForStr(message_text)); | |
115 ASSERT_TRUE(source_message.get()); | 113 ASSERT_TRUE(source_message.get()); |
116 | 114 |
117 EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get())); | 115 EXPECT_TRUE(JingleMessage::IsJingleMessage(source_message.get())); |
118 | 116 |
119 std::string error; | 117 std::string error; |
120 EXPECT_TRUE(parsed->ParseXml(source_message.get(), &error)) << error; | 118 EXPECT_TRUE(parsed->ParseXml(source_message.get(), &error)) << error; |
121 | 119 |
122 scoped_ptr<XmlElement> formatted_message(parsed->ToXml()); | 120 std::unique_ptr<XmlElement> formatted_message(parsed->ToXml()); |
123 ASSERT_TRUE(formatted_message.get()); | 121 ASSERT_TRUE(formatted_message.get()); |
124 EXPECT_TRUE(VerifyXml(source_message.get(), formatted_message.get(), &error)) | 122 EXPECT_TRUE(VerifyXml(source_message.get(), formatted_message.get(), &error)) |
125 << error; | 123 << error; |
126 } | 124 } |
127 | 125 |
128 } // namespace | 126 } // namespace |
129 | 127 |
130 // Session-initiate message for current ICE-based protocol. | 128 // Session-initiate message for current ICE-based protocol. |
131 TEST(JingleMessageTest, SessionInitiate) { | 129 TEST(JingleMessageTest, SessionInitiate) { |
132 const char* kTestSessionInitiateMessage = | 130 const char* kTestSessionInitiateMessage = |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 buzz::QName("urn:xmpp:jingle:1", "test-info")); | 403 buzz::QName("urn:xmpp:jingle:1", "test-info")); |
406 } | 404 } |
407 | 405 |
408 TEST(JingleMessageReplyTest, ToXml) { | 406 TEST(JingleMessageReplyTest, ToXml) { |
409 const char* kTestIncomingMessage = | 407 const char* kTestIncomingMessage = |
410 "<cli:iq from='user@gmail.com/chromoting016DBB07' id='4' " | 408 "<cli:iq from='user@gmail.com/chromoting016DBB07' id='4' " |
411 "to='user@gmail.com/chromiumsy5C6A652D' type='set' " | 409 "to='user@gmail.com/chromiumsy5C6A652D' type='set' " |
412 "xmlns:cli='jabber:client'><jingle action='session-terminate' " | 410 "xmlns:cli='jabber:client'><jingle action='session-terminate' " |
413 "sid='2227053353' xmlns='urn:xmpp:jingle:1'><reason><success/>" | 411 "sid='2227053353' xmlns='urn:xmpp:jingle:1'><reason><success/>" |
414 "</reason></jingle></cli:iq>"; | 412 "</reason></jingle></cli:iq>"; |
415 scoped_ptr<XmlElement> incoming_message( | 413 std::unique_ptr<XmlElement> incoming_message( |
416 XmlElement::ForStr(kTestIncomingMessage)); | 414 XmlElement::ForStr(kTestIncomingMessage)); |
417 ASSERT_TRUE(incoming_message.get()); | 415 ASSERT_TRUE(incoming_message.get()); |
418 | 416 |
419 struct TestCase { | 417 struct TestCase { |
420 const JingleMessageReply::ErrorType error; | 418 const JingleMessageReply::ErrorType error; |
421 std::string error_text; | 419 std::string error_text; |
422 std::string expected_text; | 420 std::string expected_text; |
423 } tests[] = { | 421 } tests[] = { |
424 { JingleMessageReply::BAD_REQUEST, "", "<iq xmlns='jabber:client' " | 422 { JingleMessageReply::BAD_REQUEST, "", "<iq xmlns='jabber:client' " |
425 "to='user@gmail.com/chromoting016DBB07' id='4' type='error'><jingle " | 423 "to='user@gmail.com/chromoting016DBB07' id='4' type='error'><jingle " |
(...skipping 27 matching lines...) Expand all Loading... |
453 "<unexpected-request/></error></iq>" }, | 451 "<unexpected-request/></error></iq>" }, |
454 }; | 452 }; |
455 | 453 |
456 for (size_t i = 0; i < arraysize(tests); ++i) { | 454 for (size_t i = 0; i < arraysize(tests); ++i) { |
457 JingleMessageReply reply_msg; | 455 JingleMessageReply reply_msg; |
458 if (tests[i].error_text.empty()) { | 456 if (tests[i].error_text.empty()) { |
459 reply_msg = JingleMessageReply(tests[i].error); | 457 reply_msg = JingleMessageReply(tests[i].error); |
460 } else { | 458 } else { |
461 reply_msg = JingleMessageReply(tests[i].error, tests[i].error_text); | 459 reply_msg = JingleMessageReply(tests[i].error, tests[i].error_text); |
462 } | 460 } |
463 scoped_ptr<XmlElement> reply(reply_msg.ToXml(incoming_message.get())); | 461 std::unique_ptr<XmlElement> reply(reply_msg.ToXml(incoming_message.get())); |
464 | 462 |
465 scoped_ptr<XmlElement> expected(XmlElement::ForStr(tests[i].expected_text)); | 463 std::unique_ptr<XmlElement> expected( |
| 464 XmlElement::ForStr(tests[i].expected_text)); |
466 ASSERT_TRUE(expected.get()); | 465 ASSERT_TRUE(expected.get()); |
467 | 466 |
468 std::string error; | 467 std::string error; |
469 EXPECT_TRUE(VerifyXml(expected.get(), reply.get(), &error)) << error; | 468 EXPECT_TRUE(VerifyXml(expected.get(), reply.get(), &error)) << error; |
470 } | 469 } |
471 } | 470 } |
472 | 471 |
473 TEST(JingleMessageTest, ErrorMessage) { | 472 TEST(JingleMessageTest, ErrorMessage) { |
474 const char* kTestSessionInitiateErrorMessage = | 473 const char* kTestSessionInitiateErrorMessage = |
475 "<iq to='user@gmail.com/chromoting016DBB07' type='error' " | 474 "<iq to='user@gmail.com/chromoting016DBB07' type='error' " |
(...skipping 12 matching lines...) Expand all Loading... |
488 "j7whCMii0Z0AAPwj7whCM/j7whCMii0Z0AAPw=" | 487 "j7whCMii0Z0AAPwj7whCM/j7whCMii0Z0AAPw=" |
489 "</auth-token></authentication>" | 488 "</auth-token></authentication>" |
490 "</description>" | 489 "</description>" |
491 "</content>" | 490 "</content>" |
492 "</jingle>" | 491 "</jingle>" |
493 "<error code='501' type='cancel'>" | 492 "<error code='501' type='cancel'>" |
494 "<feature-not-implemented " | 493 "<feature-not-implemented " |
495 "xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" | 494 "xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>" |
496 "</error>" | 495 "</error>" |
497 "</iq>"; | 496 "</iq>"; |
498 scoped_ptr<XmlElement> source_message( | 497 std::unique_ptr<XmlElement> source_message( |
499 XmlElement::ForStr(kTestSessionInitiateErrorMessage)); | 498 XmlElement::ForStr(kTestSessionInitiateErrorMessage)); |
500 ASSERT_TRUE(source_message.get()); | 499 ASSERT_TRUE(source_message.get()); |
501 | 500 |
502 EXPECT_FALSE(JingleMessage::IsJingleMessage(source_message.get())); | 501 EXPECT_FALSE(JingleMessage::IsJingleMessage(source_message.get())); |
503 | 502 |
504 JingleMessage message; | 503 JingleMessage message; |
505 std::string error; | 504 std::string error; |
506 EXPECT_FALSE(message.ParseXml(source_message.get(), &error)); | 505 EXPECT_FALSE(message.ParseXml(source_message.get(), &error)); |
507 EXPECT_FALSE(error.empty()); | 506 EXPECT_FALSE(error.empty()); |
508 } | 507 } |
509 | 508 |
510 } // namespace protocol | 509 } // namespace protocol |
511 } // namespace remoting | 510 } // namespace remoting |
OLD | NEW |