| 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 |