OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright 2011 The WebRTC Project Authors. All rights reserved. | |
3 * | |
4 * Use of this source code is governed by a BSD-style license | |
5 * that can be found in the LICENSE file in the root of the source | |
6 * tree. An additional intellectual property rights grant can be found | |
7 * in the file PATENTS. All contributing project authors may | |
8 * be found in the AUTHORS file in the root of the source tree. | |
9 */ | |
10 | |
11 #include <string> | |
12 #include <vector> | |
13 | |
14 #include "webrtc/libjingle/xmllite/xmlelement.h" | |
15 #include "webrtc/libjingle/xmpp/constants.h" | |
16 #include "webrtc/libjingle/xmpp/fakexmppclient.h" | |
17 #include "webrtc/libjingle/xmpp/mucroomconfigtask.h" | |
18 #include "webrtc/base/faketaskrunner.h" | |
19 #include "webrtc/base/gunit.h" | |
20 #include "webrtc/base/sigslot.h" | |
21 | |
22 class MucRoomConfigListener : public sigslot::has_slots<> { | |
23 public: | |
24 MucRoomConfigListener() : result_count(0), error_count(0) {} | |
25 | |
26 void OnResult(buzz::MucRoomConfigTask*) { | |
27 ++result_count; | |
28 } | |
29 | |
30 void OnError(buzz::IqTask* task, | |
31 const buzz::XmlElement* error) { | |
32 ++error_count; | |
33 } | |
34 | |
35 int result_count; | |
36 int error_count; | |
37 }; | |
38 | |
39 class MucRoomConfigTaskTest : public testing::Test { | |
40 public: | |
41 MucRoomConfigTaskTest() : | |
42 room_jid("muc-jid-ponies@domain.com"), | |
43 room_name("ponies") { | |
44 } | |
45 | |
46 virtual void SetUp() { | |
47 runner = new rtc::FakeTaskRunner(); | |
48 xmpp_client = new buzz::FakeXmppClient(runner); | |
49 listener = new MucRoomConfigListener(); | |
50 } | |
51 | |
52 virtual void TearDown() { | |
53 delete listener; | |
54 // delete xmpp_client; Deleted by deleting runner. | |
55 delete runner; | |
56 } | |
57 | |
58 rtc::FakeTaskRunner* runner; | |
59 buzz::FakeXmppClient* xmpp_client; | |
60 MucRoomConfigListener* listener; | |
61 buzz::Jid room_jid; | |
62 std::string room_name; | |
63 }; | |
64 | |
65 TEST_F(MucRoomConfigTaskTest, TestConfigEnterprise) { | |
66 ASSERT_EQ(0U, xmpp_client->sent_stanzas().size()); | |
67 | |
68 std::vector<std::string> room_features; | |
69 room_features.push_back("feature1"); | |
70 room_features.push_back("feature2"); | |
71 buzz::MucRoomConfigTask* task = new buzz::MucRoomConfigTask( | |
72 xmpp_client, room_jid, "ponies", room_features); | |
73 EXPECT_EQ(room_jid, task->room_jid()); | |
74 | |
75 task->SignalResult.connect(listener, &MucRoomConfigListener::OnResult); | |
76 task->Start(); | |
77 | |
78 std::string expected_iq = | |
79 "<cli:iq type=\"set\" to=\"muc-jid-ponies@domain.com\" id=\"0\" " | |
80 "xmlns:cli=\"jabber:client\">" | |
81 "<query xmlns=\"http://jabber.org/protocol/muc#owner\">" | |
82 "<x xmlns=\"jabber:x:data\" type=\"form\">" | |
83 "<field var=\"muc#roomconfig_roomname\" type=\"text-single\">" | |
84 "<value>ponies</value>" | |
85 "</field>" | |
86 "<field var=\"muc#roomconfig_features\" type=\"list-multi\">" | |
87 "<value>feature1</value>" | |
88 "<value>feature2</value>" | |
89 "</field>" | |
90 "</x>" | |
91 "</query>" | |
92 "</cli:iq>"; | |
93 | |
94 ASSERT_EQ(1U, xmpp_client->sent_stanzas().size()); | |
95 EXPECT_EQ(expected_iq, xmpp_client->sent_stanzas()[0]->Str()); | |
96 | |
97 EXPECT_EQ(0, listener->result_count); | |
98 EXPECT_EQ(0, listener->error_count); | |
99 | |
100 std::string response_iq = | |
101 "<iq xmlns='jabber:client' id='0' type='result'" | |
102 " from='muc-jid-ponies@domain.com'>" | |
103 "</iq>"; | |
104 | |
105 xmpp_client->HandleStanza(buzz::XmlElement::ForStr(response_iq)); | |
106 | |
107 EXPECT_EQ(1, listener->result_count); | |
108 EXPECT_EQ(0, listener->error_count); | |
109 } | |
110 | |
111 TEST_F(MucRoomConfigTaskTest, TestError) { | |
112 std::vector<std::string> room_features; | |
113 buzz::MucRoomConfigTask* task = new buzz::MucRoomConfigTask( | |
114 xmpp_client, room_jid, "ponies", room_features); | |
115 task->SignalError.connect(listener, &MucRoomConfigListener::OnError); | |
116 task->Start(); | |
117 | |
118 std::string error_iq = | |
119 "<iq xmlns='jabber:client' id='0' type='error'" | |
120 " from='muc-jid-ponies@domain.com'>" | |
121 "</iq>"; | |
122 | |
123 xmpp_client->HandleStanza(buzz::XmlElement::ForStr(error_iq)); | |
124 | |
125 EXPECT_EQ(0, listener->result_count); | |
126 EXPECT_EQ(1, listener->error_count); | |
127 } | |
OLD | NEW |