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/host/heartbeat_sender.h" | 5 #include "remoting/host/heartbeat_sender.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 | 169 |
170 XmlElement* sent_iq2 = NULL; | 170 XmlElement* sent_iq2 = NULL; |
171 EXPECT_CALL(signal_strategy_, GetLocalJid()) | 171 EXPECT_CALL(signal_strategy_, GetLocalJid()) |
172 .WillRepeatedly(Return(kTestJid)); | 172 .WillRepeatedly(Return(kTestJid)); |
173 EXPECT_CALL(signal_strategy_, GetNextId()) | 173 EXPECT_CALL(signal_strategy_, GetNextId()) |
174 .WillOnce(Return(kStanzaId + 1)); | 174 .WillOnce(Return(kStanzaId + 1)); |
175 EXPECT_CALL(signal_strategy_, SendStanzaPtr(NotNull())) | 175 EXPECT_CALL(signal_strategy_, SendStanzaPtr(NotNull())) |
176 .WillOnce(DoAll(SaveArg<0>(&sent_iq2), Return(true))); | 176 .WillOnce(DoAll(SaveArg<0>(&sent_iq2), Return(true))); |
177 | 177 |
178 scoped_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ)); | 178 scoped_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ)); |
179 response->AddAttr(QName("", "type"), "result"); | 179 response->AddAttr(QName(std::string(), "type"), "result"); |
180 XmlElement* result = new XmlElement( | 180 XmlElement* result = |
181 QName(kChromotingXmlNamespace, "heartbeat-result")); | 181 new XmlElement(QName(kChromotingXmlNamespace, "heartbeat-result")); |
182 response->AddElement(result); | 182 response->AddElement(result); |
183 XmlElement* expected_sequence_id = new XmlElement( | 183 XmlElement* expected_sequence_id = new XmlElement( |
184 QName(kChromotingXmlNamespace, "expected-sequence-id")); | 184 QName(kChromotingXmlNamespace, "expected-sequence-id")); |
185 result->AddElement(expected_sequence_id); | 185 result->AddElement(expected_sequence_id); |
186 const int kExpectedSequenceId = 456; | 186 const int kExpectedSequenceId = 456; |
187 expected_sequence_id->AddText(base::IntToString(kExpectedSequenceId)); | 187 expected_sequence_id->AddText(base::IntToString(kExpectedSequenceId)); |
188 heartbeat_sender_->ProcessResponse(NULL, response.get()); | 188 heartbeat_sender_->ProcessResponse(NULL, response.get()); |
189 message_loop_.RunUntilIdle(); | 189 message_loop_.RunUntilIdle(); |
190 | 190 |
191 scoped_ptr<XmlElement> stanza2(sent_iq2); | 191 scoped_ptr<XmlElement> stanza2(sent_iq2); |
192 ASSERT_TRUE(stanza2 != NULL); | 192 ASSERT_TRUE(stanza2 != NULL); |
193 ValidateHeartbeatStanza(stanza2.get(), | 193 ValidateHeartbeatStanza(stanza2.get(), |
194 base::IntToString(kExpectedSequenceId).c_str()); | 194 base::IntToString(kExpectedSequenceId).c_str()); |
195 | 195 |
196 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::DISCONNECTED); | 196 heartbeat_sender_->OnSignalStrategyStateChange(SignalStrategy::DISCONNECTED); |
197 message_loop_.RunUntilIdle(); | 197 message_loop_.RunUntilIdle(); |
198 } | 198 } |
199 | 199 |
200 // Verify that ProcessResponse parses set-interval result. | 200 // Verify that ProcessResponse parses set-interval result. |
201 TEST_F(HeartbeatSenderTest, ProcessResponseSetInterval) { | 201 TEST_F(HeartbeatSenderTest, ProcessResponseSetInterval) { |
202 scoped_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ)); | 202 scoped_ptr<XmlElement> response(new XmlElement(buzz::QN_IQ)); |
203 response->AddAttr(QName("", "type"), "result"); | 203 response->AddAttr(QName(std::string(), "type"), "result"); |
204 | 204 |
205 XmlElement* result = new XmlElement( | 205 XmlElement* result = new XmlElement( |
206 QName(kChromotingXmlNamespace, "heartbeat-result")); | 206 QName(kChromotingXmlNamespace, "heartbeat-result")); |
207 response->AddElement(result); | 207 response->AddElement(result); |
208 | 208 |
209 XmlElement* set_interval = new XmlElement( | 209 XmlElement* set_interval = new XmlElement( |
210 QName(kChromotingXmlNamespace, "set-interval")); | 210 QName(kChromotingXmlNamespace, "set-interval")); |
211 result->AddElement(set_interval); | 211 result->AddElement(set_interval); |
212 | 212 |
213 const int kTestInterval = 123; | 213 const int kTestInterval = 123; |
214 set_interval->AddText(base::IntToString(kTestInterval)); | 214 set_interval->AddText(base::IntToString(kTestInterval)); |
215 | 215 |
216 heartbeat_sender_->ProcessResponse(NULL, response.get()); | 216 heartbeat_sender_->ProcessResponse(NULL, response.get()); |
217 | 217 |
218 EXPECT_EQ(kTestInterval * 1000, heartbeat_sender_->interval_ms_); | 218 EXPECT_EQ(kTestInterval * 1000, heartbeat_sender_->interval_ms_); |
219 } | 219 } |
220 | 220 |
221 // Validate a heartbeat stanza. | 221 // Validate a heartbeat stanza. |
222 void HeartbeatSenderTest::ValidateHeartbeatStanza( | 222 void HeartbeatSenderTest::ValidateHeartbeatStanza( |
223 XmlElement* stanza, const char* expectedSequenceId) { | 223 XmlElement* stanza, const char* expectedSequenceId) { |
224 EXPECT_EQ(stanza->Attr(buzz::QName("", "to")), | 224 EXPECT_EQ(stanza->Attr(buzz::QName(std::string(), "to")), |
225 std::string(kTestBotJid)); | 225 std::string(kTestBotJid)); |
226 EXPECT_EQ(stanza->Attr(buzz::QName("", "type")), "set"); | 226 EXPECT_EQ(stanza->Attr(buzz::QName(std::string(), "type")), "set"); |
227 XmlElement* heartbeat_stanza = | 227 XmlElement* heartbeat_stanza = |
228 stanza->FirstNamed(QName(kChromotingXmlNamespace, "heartbeat")); | 228 stanza->FirstNamed(QName(kChromotingXmlNamespace, "heartbeat")); |
229 ASSERT_TRUE(heartbeat_stanza != NULL); | 229 ASSERT_TRUE(heartbeat_stanza != NULL); |
230 EXPECT_EQ(expectedSequenceId, heartbeat_stanza->Attr( | 230 EXPECT_EQ(expectedSequenceId, heartbeat_stanza->Attr( |
231 buzz::QName(kChromotingXmlNamespace, "sequence-id"))); | 231 buzz::QName(kChromotingXmlNamespace, "sequence-id"))); |
232 EXPECT_EQ(std::string(kHostId), | 232 EXPECT_EQ(std::string(kHostId), |
233 heartbeat_stanza->Attr(QName(kChromotingXmlNamespace, "hostid"))); | 233 heartbeat_stanza->Attr(QName(kChromotingXmlNamespace, "hostid"))); |
234 | 234 |
235 QName signature_tag(kChromotingXmlNamespace, "signature"); | 235 QName signature_tag(kChromotingXmlNamespace, "signature"); |
236 XmlElement* signature = heartbeat_stanza->FirstNamed(signature_tag); | 236 XmlElement* signature = heartbeat_stanza->FirstNamed(signature_tag); |
237 ASSERT_TRUE(signature != NULL); | 237 ASSERT_TRUE(signature != NULL); |
238 EXPECT_TRUE(heartbeat_stanza->NextNamed(signature_tag) == NULL); | 238 EXPECT_TRUE(heartbeat_stanza->NextNamed(signature_tag) == NULL); |
239 | 239 |
240 scoped_refptr<RsaKeyPair> key_pair = RsaKeyPair::FromString(kTestRsaKeyPair); | 240 scoped_refptr<RsaKeyPair> key_pair = RsaKeyPair::FromString(kTestRsaKeyPair); |
241 ASSERT_TRUE(key_pair); | 241 ASSERT_TRUE(key_pair); |
242 std::string expected_signature = | 242 std::string expected_signature = |
243 key_pair->SignMessage(std::string(kTestJid) + ' ' + expectedSequenceId); | 243 key_pair->SignMessage(std::string(kTestJid) + ' ' + expectedSequenceId); |
244 EXPECT_EQ(expected_signature, signature->BodyText()); | 244 EXPECT_EQ(expected_signature, signature->BodyText()); |
245 } | 245 } |
246 | 246 |
247 } // namespace remoting | 247 } // namespace remoting |
OLD | NEW |