Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(201)

Side by Side Diff: remoting/jingle_glue/iq_sender_unittest.cc

Issue 8432009: Refactor IqRequest. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/bind.h"
6 #include "base/memory/ref_counted.h"
7 #include "base/stringprintf.h"
8 #include "remoting/jingle_glue/iq_sender.h"
9 #include "remoting/jingle_glue/mock_objects.h"
10 #include "testing/gmock/include/gmock/gmock.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "third_party/libjingle/source/talk/xmllite/xmlelement.h"
13 #include "third_party/libjingle/source/talk/xmpp/constants.h"
14
15 using ::testing::_;
16 using ::testing::DeleteArg;
17 using ::testing::NotNull;
18 using ::testing::Return;
19 using ::testing::SaveArg;
20
21 using ::buzz::QName;
22 using ::buzz::XmlElement;
23
24 namespace remoting {
25
26 namespace {
27
28 const char kStanzaId[] = "123";
29 const char kNamespace[] = "chromium:testns";
30 const char kNamespacePrefix[] = "tes";
31 const char kBodyTag[] = "test";
32 const char kType[] = "get";
33 const char kTo[] = "user@domain.com";
34
35 class MockCallback {
36 public:
37 MOCK_METHOD1(OnReply, void(const XmlElement* reply));
38 };
39
40 } // namespace
41
42 class IqSenderTest : public testing::Test {
43 public:
44 IqSenderTest() {
45 EXPECT_CALL(signal_strategy_, AddListener(NotNull()));
46 sender_.reset(new IqSender(&signal_strategy_));
47 EXPECT_CALL(signal_strategy_, RemoveListener(
48 static_cast<SignalStrategy::Listener*>(sender_.get())));
49 }
50
51 protected:
52 MockSignalStrategy signal_strategy_;
53 scoped_ptr<IqSender> sender_;
54 MockCallback callback_;
55 };
56
57 TEST_F(IqSenderTest, SendIq) {
58 XmlElement* iq_body =
59 new XmlElement(QName(kNamespace, kBodyTag));
60 XmlElement* sent_stanza;
61 EXPECT_CALL(signal_strategy_, GetNextId())
62 .WillOnce(Return(kStanzaId));
63 EXPECT_CALL(signal_strategy_, SendStanza(_))
64 .WillOnce(DoAll(SaveArg<0>(&sent_stanza), Return(true)));
65 sender_->SendIq(kType, kTo, iq_body, base::Bind(
66 &MockCallback::OnReply, base::Unretained(&callback_)));
67
68 std::string expected_xml_string =
69 base::StringPrintf(
70 "<cli:iq type=\"%s\" to=\"%s\" id=\"%s\" "
71 "xmlns:cli=\"jabber:client\">"
72 "<%s:%s xmlns:%s=\"%s\"/>"
73 "</cli:iq>",
74 kType, kTo, kStanzaId, kNamespacePrefix, kBodyTag,
75 kNamespacePrefix, kNamespace);
76 EXPECT_EQ(expected_xml_string, sent_stanza->Str());
77 delete sent_stanza;
78
79 scoped_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ));
80 response->AddAttr(QName("", "type"), "result");
81 response->AddAttr(QName("", "id"), kStanzaId);
82
83 XmlElement* result = new XmlElement(
84 QName("test:namespace", "response-body"));
85 response->AddElement(result);
86
87 EXPECT_CALL(callback_, OnReply(response.get()));
88 EXPECT_TRUE(sender_->OnIncomingStanza(response.get()));
89 }
90
91 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698