diff options
author | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-25 03:51:56 +0000 |
---|---|---|
committer | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-25 03:51:56 +0000 |
commit | 740d451cf5222a5046d63029a88e58c7204c6ba2 (patch) | |
tree | 43b3a71eb8c9d23e48f31434cc3c2ef2e85ef877 /remoting/jingle_glue/iq_sender_unittest.cc | |
parent | 426199abc7929b84c80df803b828f3f9c47b4b6d (diff) | |
download | chromium_src-740d451cf5222a5046d63029a88e58c7204c6ba2.zip chromium_src-740d451cf5222a5046d63029a88e58c7204c6ba2.tar.gz chromium_src-740d451cf5222a5046d63029a88e58c7204c6ba2.tar.bz2 |
Revert 123635 - Implement timeouts for IQ requests.
Now the IqRequest class supports setting timeouts for each request, and
JingleSession uses it to disconnect if no response is receive within 10
secons from a request.
BUG=107925
Review URL: http://codereview.chromium.org/9452038
TBR=sergeyu@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9447087
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@123638 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/jingle_glue/iq_sender_unittest.cc')
-rw-r--r-- | remoting/jingle_glue/iq_sender_unittest.cc | 105 |
1 files changed, 23 insertions, 82 deletions
diff --git a/remoting/jingle_glue/iq_sender_unittest.cc b/remoting/jingle_glue/iq_sender_unittest.cc index 06730f5..e14cf2a 100644 --- a/remoting/jingle_glue/iq_sender_unittest.cc +++ b/remoting/jingle_glue/iq_sender_unittest.cc @@ -4,7 +4,6 @@ #include "base/bind.h" #include "base/memory/ref_counted.h" -#include "base/message_loop.h" #include "base/stringprintf.h" #include "remoting/jingle_glue/iq_sender.h" #include "remoting/jingle_glue/mock_objects.h" @@ -15,7 +14,6 @@ using ::testing::_; using ::testing::DeleteArg; -using ::testing::InvokeWithoutArgs; using ::testing::NotNull; using ::testing::Return; using ::testing::SaveArg; @@ -36,7 +34,7 @@ const char kTo[] = "user@domain.com"; class MockCallback { public: - MOCK_METHOD2(OnReply, void(IqRequest* request, const XmlElement* reply)); + MOCK_METHOD1(OnReply, void(const XmlElement* reply)); }; } // namespace @@ -51,100 +49,43 @@ class IqSenderTest : public testing::Test { } protected: - void SendTestMessage() { - scoped_ptr<XmlElement> iq_body( - new XmlElement(QName(kNamespace, kBodyTag))); - XmlElement* sent_stanza; - EXPECT_CALL(signal_strategy_, GetNextId()) - .WillOnce(Return(kStanzaId)); - EXPECT_CALL(signal_strategy_, SendStanzaPtr(_)) - .WillOnce(DoAll(SaveArg<0>(&sent_stanza), Return(true))); - request_ = sender_->SendIq(kType, kTo, iq_body.Pass(), base::Bind( - &MockCallback::OnReply, base::Unretained(&callback_))); - - std::string expected_xml_string = - base::StringPrintf( - "<cli:iq type=\"%s\" to=\"%s\" id=\"%s\" " - "xmlns:cli=\"jabber:client\">" - "<%s:%s xmlns:%s=\"%s\"/>" - "</cli:iq>", - kType, kTo, kStanzaId, kNamespacePrefix, kBodyTag, - kNamespacePrefix, kNamespace); - EXPECT_EQ(expected_xml_string, sent_stanza->Str()); - delete sent_stanza; - } - - MessageLoop message_loop_; MockSignalStrategy signal_strategy_; scoped_ptr<IqSender> sender_; MockCallback callback_; - scoped_ptr<IqRequest> request_; }; TEST_F(IqSenderTest, SendIq) { - ASSERT_NO_FATAL_FAILURE({ - SendTestMessage(); - }); - - scoped_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ)); - response->AddAttr(QName("", "type"), "result"); - response->AddAttr(QName("", "id"), kStanzaId); - response->AddAttr(QName("", "from"), kTo); - - XmlElement* result = new XmlElement( - QName("test:namespace", "response-body")); - response->AddElement(result); - - EXPECT_CALL(callback_, OnReply(request_.get(), response.get())); - EXPECT_TRUE(sender_->OnSignalStrategyIncomingStanza(response.get())); -} - -TEST_F(IqSenderTest, Timeout) { - ASSERT_NO_FATAL_FAILURE({ - SendTestMessage(); - }); - - request_->SetTimeout(base::TimeDelta::FromMilliseconds(2)); - - EXPECT_CALL(callback_, OnReply(request_.get(), NULL)) - .WillOnce(InvokeWithoutArgs(&message_loop_, &MessageLoop::Quit)); - message_loop_.Run(); -} - -TEST_F(IqSenderTest, InvalidFrom) { - ASSERT_NO_FATAL_FAILURE({ - SendTestMessage(); - }); + scoped_ptr<XmlElement> iq_body( + new XmlElement(QName(kNamespace, kBodyTag))); + XmlElement* sent_stanza; + EXPECT_CALL(signal_strategy_, GetNextId()) + .WillOnce(Return(kStanzaId)); + EXPECT_CALL(signal_strategy_, SendStanzaPtr(_)) + .WillOnce(DoAll(SaveArg<0>(&sent_stanza), Return(true))); + scoped_ptr<IqRequest> request = + sender_->SendIq(kType, kTo, iq_body.Pass(), base::Bind( + &MockCallback::OnReply, base::Unretained(&callback_))); + + std::string expected_xml_string = + base::StringPrintf( + "<cli:iq type=\"%s\" to=\"%s\" id=\"%s\" " + "xmlns:cli=\"jabber:client\">" + "<%s:%s xmlns:%s=\"%s\"/>" + "</cli:iq>", + kType, kTo, kStanzaId, kNamespacePrefix, kBodyTag, + kNamespacePrefix, kNamespace); + EXPECT_EQ(expected_xml_string, sent_stanza->Str()); + delete sent_stanza; scoped_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ)); response->AddAttr(QName("", "type"), "result"); response->AddAttr(QName("", "id"), kStanzaId); - response->AddAttr(QName("", "from"), "different_user@domain.com"); - - XmlElement* result = new XmlElement( - QName("test:namespace", "response-body")); - response->AddElement(result); - - EXPECT_CALL(callback_, OnReply(request_.get(), response.get())) - .Times(0); - EXPECT_FALSE(sender_->OnSignalStrategyIncomingStanza(response.get())); -} - -TEST_F(IqSenderTest, IdMatchingHack) { - ASSERT_NO_FATAL_FAILURE({ - SendTestMessage(); - }); - - scoped_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ)); - response->AddAttr(QName("", "type"), "result"); - response->AddAttr(QName("", "id"), "DIFFERENT_ID"); - response->AddAttr(QName("", "from"), kTo); XmlElement* result = new XmlElement( QName("test:namespace", "response-body")); response->AddElement(result); - EXPECT_CALL(callback_, OnReply(request_.get(), response.get())); + EXPECT_CALL(callback_, OnReply(response.get())); EXPECT_TRUE(sender_->OnSignalStrategyIncomingStanza(response.get())); } |