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/mucroomlookuptask.h" | |
18 #include "webrtc/base/faketaskrunner.h" | |
19 #include "webrtc/base/gunit.h" | |
20 #include "webrtc/base/sigslot.h" | |
21 | |
22 class MucRoomLookupListener : public sigslot::has_slots<> { | |
23 public: | |
24 MucRoomLookupListener() : error_count(0) {} | |
25 | |
26 void OnResult(buzz::MucRoomLookupTask* task, | |
27 const buzz::MucRoomInfo& room) { | |
28 last_room = room; | |
29 } | |
30 | |
31 void OnError(buzz::IqTask* task, | |
32 const buzz::XmlElement* error) { | |
33 ++error_count; | |
34 } | |
35 | |
36 buzz::MucRoomInfo last_room; | |
37 int error_count; | |
38 }; | |
39 | |
40 class MucRoomLookupTaskTest : public testing::Test { | |
41 public: | |
42 MucRoomLookupTaskTest() : | |
43 lookup_server_jid("lookup@domain.com"), | |
44 room_jid("muc-jid-ponies@domain.com"), | |
45 room_name("ponies"), | |
46 room_domain("domain.com"), | |
47 room_full_name("ponies@domain.com"), | |
48 hangout_id("some_hangout_id") { | |
49 } | |
50 | |
51 virtual void SetUp() { | |
52 runner = new rtc::FakeTaskRunner(); | |
53 xmpp_client = new buzz::FakeXmppClient(runner); | |
54 listener = new MucRoomLookupListener(); | |
55 } | |
56 | |
57 virtual void TearDown() { | |
58 delete listener; | |
59 // delete xmpp_client; Deleted by deleting runner. | |
60 delete runner; | |
61 } | |
62 | |
63 rtc::FakeTaskRunner* runner; | |
64 buzz::FakeXmppClient* xmpp_client; | |
65 MucRoomLookupListener* listener; | |
66 buzz::Jid lookup_server_jid; | |
67 buzz::Jid room_jid; | |
68 std::string room_name; | |
69 std::string room_domain; | |
70 std::string room_full_name; | |
71 std::string hangout_id; | |
72 }; | |
73 | |
74 TEST_F(MucRoomLookupTaskTest, TestLookupName) { | |
75 ASSERT_EQ(0U, xmpp_client->sent_stanzas().size()); | |
76 | |
77 buzz::MucRoomLookupTask* task = | |
78 buzz::MucRoomLookupTask::CreateLookupTaskForRoomName( | |
79 xmpp_client, lookup_server_jid, room_name, room_domain); | |
80 task->SignalResult.connect(listener, &MucRoomLookupListener::OnResult); | |
81 task->Start(); | |
82 | |
83 std::string expected_iq = | |
84 "<cli:iq type=\"set\" to=\"lookup@domain.com\" id=\"0\" " | |
85 "xmlns:cli=\"jabber:client\">" | |
86 "<query xmlns=\"jabber:iq:search\">" | |
87 "<room-name>ponies</room-name>" | |
88 "<room-domain>domain.com</room-domain>" | |
89 "</query>" | |
90 "</cli:iq>"; | |
91 | |
92 ASSERT_EQ(1U, xmpp_client->sent_stanzas().size()); | |
93 EXPECT_EQ(expected_iq, xmpp_client->sent_stanzas()[0]->Str()); | |
94 | |
95 EXPECT_EQ("", listener->last_room.name); | |
96 | |
97 std::string response_iq = | |
98 "<iq xmlns='jabber:client' from='lookup@domain.com' id='0' type='result'>" | |
99 " <query xmlns='jabber:iq:search'>" | |
100 " <item jid='muc-jid-ponies@domain.com'>" | |
101 " <room-name>ponies</room-name>" | |
102 " <room-domain>domain.com</room-domain>" | |
103 " </item>" | |
104 " </query>" | |
105 "</iq>"; | |
106 | |
107 xmpp_client->HandleStanza(buzz::XmlElement::ForStr(response_iq)); | |
108 | |
109 EXPECT_EQ(room_name, listener->last_room.name); | |
110 EXPECT_EQ(room_domain, listener->last_room.domain); | |
111 EXPECT_EQ(room_jid, listener->last_room.jid); | |
112 EXPECT_EQ(room_full_name, listener->last_room.full_name()); | |
113 EXPECT_EQ(0, listener->error_count); | |
114 } | |
115 | |
116 TEST_F(MucRoomLookupTaskTest, TestLookupHangoutId) { | |
117 ASSERT_EQ(0U, xmpp_client->sent_stanzas().size()); | |
118 | |
119 buzz::MucRoomLookupTask* task = buzz::MucRoomLookupTask::CreateLookupTaskForHa
ngoutId( | |
120 xmpp_client, lookup_server_jid, hangout_id); | |
121 task->SignalResult.connect(listener, &MucRoomLookupListener::OnResult); | |
122 task->Start(); | |
123 | |
124 std::string expected_iq = | |
125 "<cli:iq type=\"set\" to=\"lookup@domain.com\" id=\"0\" " | |
126 "xmlns:cli=\"jabber:client\">" | |
127 "<query xmlns=\"jabber:iq:search\">" | |
128 "<hangout-id>some_hangout_id</hangout-id>" | |
129 "</query>" | |
130 "</cli:iq>"; | |
131 | |
132 ASSERT_EQ(1U, xmpp_client->sent_stanzas().size()); | |
133 EXPECT_EQ(expected_iq, xmpp_client->sent_stanzas()[0]->Str()); | |
134 | |
135 EXPECT_EQ("", listener->last_room.name); | |
136 | |
137 std::string response_iq = | |
138 "<iq xmlns='jabber:client' from='lookup@domain.com' id='0' type='result'>" | |
139 " <query xmlns='jabber:iq:search'>" | |
140 " <item jid='muc-jid-ponies@domain.com'>" | |
141 " <room-name>some_hangout_id</room-name>" | |
142 " <room-domain>domain.com</room-domain>" | |
143 " </item>" | |
144 " </query>" | |
145 "</iq>"; | |
146 | |
147 xmpp_client->HandleStanza(buzz::XmlElement::ForStr(response_iq)); | |
148 | |
149 EXPECT_EQ(hangout_id, listener->last_room.name); | |
150 EXPECT_EQ(room_domain, listener->last_room.domain); | |
151 EXPECT_EQ(room_jid, listener->last_room.jid); | |
152 EXPECT_EQ(0, listener->error_count); | |
153 } | |
154 | |
155 TEST_F(MucRoomLookupTaskTest, TestError) { | |
156 buzz::MucRoomLookupTask* task = buzz::MucRoomLookupTask::CreateLookupTaskForRo
omName( | |
157 xmpp_client, lookup_server_jid, room_name, room_domain); | |
158 task->SignalError.connect(listener, &MucRoomLookupListener::OnError); | |
159 task->Start(); | |
160 | |
161 std::string error_iq = | |
162 "<iq xmlns='jabber:client' id='0' type='error'" | |
163 " from='lookup@domain.com'>" | |
164 "</iq>"; | |
165 | |
166 EXPECT_EQ(0, listener->error_count); | |
167 xmpp_client->HandleStanza(buzz::XmlElement::ForStr(error_iq)); | |
168 EXPECT_EQ(1, listener->error_count); | |
169 } | |
170 | |
171 TEST_F(MucRoomLookupTaskTest, TestBadJid) { | |
172 buzz::MucRoomLookupTask* task = buzz::MucRoomLookupTask::CreateLookupTaskForRo
omName( | |
173 xmpp_client, lookup_server_jid, room_name, room_domain); | |
174 task->SignalError.connect(listener, &MucRoomLookupListener::OnError); | |
175 task->Start(); | |
176 | |
177 std::string response_iq = | |
178 "<iq xmlns='jabber:client' from='lookup@domain.com' id='0' type='result'>" | |
179 " <query xmlns='jabber:iq:search'>" | |
180 " <item/>" | |
181 " </query>" | |
182 "</iq>"; | |
183 | |
184 EXPECT_EQ(0, listener->error_count); | |
185 xmpp_client->HandleStanza(buzz::XmlElement::ForStr(response_iq)); | |
186 EXPECT_EQ(1, listener->error_count); | |
187 } | |
OLD | NEW |