OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/signaling/xmpp_signal_strategy.h" | 5 #include "remoting/signaling/xmpp_signal_strategy.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/base64.h" | 9 #include "base/base64.h" |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 const int kDefaultPort = 443; | 113 const int kDefaultPort = 443; |
114 | 114 |
115 class XmppSignalStrategyTest : public testing::Test, | 115 class XmppSignalStrategyTest : public testing::Test, |
116 public SignalStrategy::Listener { | 116 public SignalStrategy::Listener { |
117 public: | 117 public: |
118 XmppSignalStrategyTest() : message_loop_(base::MessageLoop::TYPE_IO) {} | 118 XmppSignalStrategyTest() : message_loop_(base::MessageLoop::TYPE_IO) {} |
119 | 119 |
120 void SetUp() override { | 120 void SetUp() override { |
121 request_context_getter_ = new net::TestURLRequestContextGetter( | 121 request_context_getter_ = new net::TestURLRequestContextGetter( |
122 message_loop_.task_runner(), | 122 message_loop_.task_runner(), |
123 base::WrapUnique(new net::TestURLRequestContext())); | 123 base::MakeUnique<net::TestURLRequestContext>()); |
124 } | 124 } |
125 | 125 |
126 void CreateSignalStrategy(int port) { | 126 void CreateSignalStrategy(int port) { |
127 XmppSignalStrategy::XmppServerConfig config; | 127 XmppSignalStrategy::XmppServerConfig config; |
128 config.host = "talk.google.com"; | 128 config.host = "talk.google.com"; |
129 config.port = port; | 129 config.port = port; |
130 config.username = kTestUsername; | 130 config.username = kTestUsername; |
131 config.auth_token = kTestAuthToken; | 131 config.auth_token = kTestAuthToken; |
132 signal_strategy_.reset(new XmppSignalStrategy( | 132 signal_strategy_.reset(new XmppSignalStrategy( |
133 &client_socket_factory_, request_context_getter_, config)); | 133 &client_socket_factory_, request_context_getter_, config)); |
134 signal_strategy_->AddListener(this); | 134 signal_strategy_->AddListener(this); |
135 } | 135 } |
136 | 136 |
137 void TearDown() override { | 137 void TearDown() override { |
138 signal_strategy_->RemoveListener(this); | 138 signal_strategy_->RemoveListener(this); |
139 signal_strategy_.reset(); | 139 signal_strategy_.reset(); |
140 base::RunLoop().RunUntilIdle(); | 140 base::RunLoop().RunUntilIdle(); |
141 } | 141 } |
142 | 142 |
143 void OnSignalStrategyStateChange(SignalStrategy::State state) override { | 143 void OnSignalStrategyStateChange(SignalStrategy::State state) override { |
144 state_history_.push_back(state); | 144 state_history_.push_back(state); |
145 } | 145 } |
146 | 146 |
147 bool OnSignalStrategyIncomingStanza(const buzz::XmlElement* stanza) override { | 147 bool OnSignalStrategyIncomingStanza(const buzz::XmlElement* stanza) override { |
148 received_messages_.push_back( | 148 received_messages_.push_back(base::MakeUnique<buzz::XmlElement>(*stanza)); |
149 base::WrapUnique(new buzz::XmlElement(*stanza))); | |
150 return true; | 149 return true; |
151 } | 150 } |
152 | 151 |
153 void Connect(bool success); | 152 void Connect(bool success); |
154 | 153 |
155 protected: | 154 protected: |
156 base::MessageLoop message_loop_; | 155 base::MessageLoop message_loop_; |
157 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; | 156 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; |
158 MockClientSocketFactory client_socket_factory_; | 157 MockClientSocketFactory client_socket_factory_; |
159 std::unique_ptr<XmppSocketDataProvider> socket_data_provider_; | 158 std::unique_ptr<XmppSocketDataProvider> socket_data_provider_; |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 "<iq type=\"result\" id=\"1\"/>"); | 265 "<iq type=\"result\" id=\"1\"/>"); |
267 | 266 |
268 EXPECT_EQ(2U, state_history_.size()); | 267 EXPECT_EQ(2U, state_history_.size()); |
269 EXPECT_EQ(SignalStrategy::CONNECTED, state_history_[1]); | 268 EXPECT_EQ(SignalStrategy::CONNECTED, state_history_[1]); |
270 } | 269 } |
271 | 270 |
272 TEST_F(XmppSignalStrategyTest, SendAndReceive) { | 271 TEST_F(XmppSignalStrategyTest, SendAndReceive) { |
273 CreateSignalStrategy(kDefaultPort); | 272 CreateSignalStrategy(kDefaultPort); |
274 Connect(true); | 273 Connect(true); |
275 | 274 |
276 EXPECT_TRUE(signal_strategy_->SendStanza(base::WrapUnique( | 275 EXPECT_TRUE(signal_strategy_->SendStanza( |
277 new buzz::XmlElement(buzz::QName(std::string(), "hello"))))); | 276 base::MakeUnique<buzz::XmlElement>(buzz::QName(std::string(), "hello")))); |
278 EXPECT_EQ("<hello/>", socket_data_provider_->GetAndClearWrittenData()); | 277 EXPECT_EQ("<hello/>", socket_data_provider_->GetAndClearWrittenData()); |
279 | 278 |
280 socket_data_provider_->ReceiveData("<hi xmlns=\"hello\"/>"); | 279 socket_data_provider_->ReceiveData("<hi xmlns=\"hello\"/>"); |
281 EXPECT_EQ(1U, received_messages_.size()); | 280 EXPECT_EQ(1U, received_messages_.size()); |
282 EXPECT_EQ("<hi xmlns=\"hello\"/>", received_messages_[0]->Str()); | 281 EXPECT_EQ("<hi xmlns=\"hello\"/>", received_messages_[0]->Str()); |
283 } | 282 } |
284 | 283 |
285 TEST_F(XmppSignalStrategyTest, AuthError) { | 284 TEST_F(XmppSignalStrategyTest, AuthError) { |
286 CreateSignalStrategy(kDefaultPort); | 285 CreateSignalStrategy(kDefaultPort); |
287 Connect(false); | 286 Connect(false); |
288 } | 287 } |
289 | 288 |
290 TEST_F(XmppSignalStrategyTest, ConnectionClosed) { | 289 TEST_F(XmppSignalStrategyTest, ConnectionClosed) { |
291 CreateSignalStrategy(kDefaultPort); | 290 CreateSignalStrategy(kDefaultPort); |
292 Connect(true); | 291 Connect(true); |
293 | 292 |
294 socket_data_provider_->Close(); | 293 socket_data_provider_->Close(); |
295 | 294 |
296 EXPECT_EQ(3U, state_history_.size()); | 295 EXPECT_EQ(3U, state_history_.size()); |
297 EXPECT_EQ(SignalStrategy::DISCONNECTED, state_history_[2]); | 296 EXPECT_EQ(SignalStrategy::DISCONNECTED, state_history_[2]); |
298 EXPECT_EQ(SignalStrategy::DISCONNECTED, signal_strategy_->GetState()); | 297 EXPECT_EQ(SignalStrategy::DISCONNECTED, signal_strategy_->GetState()); |
299 EXPECT_EQ(SignalStrategy::OK, signal_strategy_->GetError()); | 298 EXPECT_EQ(SignalStrategy::OK, signal_strategy_->GetError()); |
300 | 299 |
301 // Can't send messages anymore. | 300 // Can't send messages anymore. |
302 EXPECT_FALSE(signal_strategy_->SendStanza(base::WrapUnique( | 301 EXPECT_FALSE(signal_strategy_->SendStanza( |
303 new buzz::XmlElement(buzz::QName(std::string(), "hello"))))); | 302 base::MakeUnique<buzz::XmlElement>(buzz::QName(std::string(), "hello")))); |
304 | 303 |
305 // Try connecting again. | 304 // Try connecting again. |
306 Connect(true); | 305 Connect(true); |
307 } | 306 } |
308 | 307 |
309 TEST_F(XmppSignalStrategyTest, NetworkReadError) { | 308 TEST_F(XmppSignalStrategyTest, NetworkReadError) { |
310 CreateSignalStrategy(kDefaultPort); | 309 CreateSignalStrategy(kDefaultPort); |
311 Connect(true); | 310 Connect(true); |
312 | 311 |
313 socket_data_provider_->SimulateAsyncReadError(); | 312 socket_data_provider_->SimulateAsyncReadError(); |
314 | 313 |
315 EXPECT_EQ(3U, state_history_.size()); | 314 EXPECT_EQ(3U, state_history_.size()); |
316 EXPECT_EQ(SignalStrategy::DISCONNECTED, state_history_[2]); | 315 EXPECT_EQ(SignalStrategy::DISCONNECTED, state_history_[2]); |
317 EXPECT_EQ(SignalStrategy::NETWORK_ERROR, signal_strategy_->GetError()); | 316 EXPECT_EQ(SignalStrategy::NETWORK_ERROR, signal_strategy_->GetError()); |
318 | 317 |
319 // Can't send messages anymore. | 318 // Can't send messages anymore. |
320 EXPECT_FALSE(signal_strategy_->SendStanza(base::WrapUnique( | 319 EXPECT_FALSE(signal_strategy_->SendStanza( |
321 new buzz::XmlElement(buzz::QName(std::string(), "hello"))))); | 320 base::MakeUnique<buzz::XmlElement>(buzz::QName(std::string(), "hello")))); |
322 | 321 |
323 // Try connecting again. | 322 // Try connecting again. |
324 Connect(true); | 323 Connect(true); |
325 } | 324 } |
326 | 325 |
327 TEST_F(XmppSignalStrategyTest, NetworkWriteError) { | 326 TEST_F(XmppSignalStrategyTest, NetworkWriteError) { |
328 CreateSignalStrategy(kDefaultPort); | 327 CreateSignalStrategy(kDefaultPort); |
329 Connect(true); | 328 Connect(true); |
330 | 329 |
331 socket_data_provider_->set_write_error(net::ERR_FAILED); | 330 socket_data_provider_->set_write_error(net::ERR_FAILED); |
332 | 331 |
333 // Next SendMessage() will call Write() which will fail. | 332 // Next SendMessage() will call Write() which will fail. |
334 EXPECT_FALSE(signal_strategy_->SendStanza(base::WrapUnique( | 333 EXPECT_FALSE(signal_strategy_->SendStanza( |
335 new buzz::XmlElement(buzz::QName(std::string(), "hello"))))); | 334 base::MakeUnique<buzz::XmlElement>(buzz::QName(std::string(), "hello")))); |
336 | 335 |
337 EXPECT_EQ(3U, state_history_.size()); | 336 EXPECT_EQ(3U, state_history_.size()); |
338 EXPECT_EQ(SignalStrategy::DISCONNECTED, state_history_[2]); | 337 EXPECT_EQ(SignalStrategy::DISCONNECTED, state_history_[2]); |
339 EXPECT_EQ(SignalStrategy::NETWORK_ERROR, signal_strategy_->GetError()); | 338 EXPECT_EQ(SignalStrategy::NETWORK_ERROR, signal_strategy_->GetError()); |
340 | 339 |
341 // Try connecting again. | 340 // Try connecting again. |
342 Connect(true); | 341 Connect(true); |
343 } | 342 } |
344 | 343 |
345 TEST_F(XmppSignalStrategyTest, StartTlsWithPendingWrite) { | 344 TEST_F(XmppSignalStrategyTest, StartTlsWithPendingWrite) { |
(...skipping 28 matching lines...) Expand all Loading... |
374 "<proceed xmlns=\"urn:ietf:params:xml:ns:xmpp-tls\"/>"); | 373 "<proceed xmlns=\"urn:ietf:params:xml:ns:xmpp-tls\"/>"); |
375 | 374 |
376 // Verify that SSL is connected only after write is finished. | 375 // Verify that SSL is connected only after write is finished. |
377 EXPECT_FALSE(client_socket_factory_.ssl_socket_created()); | 376 EXPECT_FALSE(client_socket_factory_.ssl_socket_created()); |
378 socket_data_provider_->CompletePendingWrite(); | 377 socket_data_provider_->CompletePendingWrite(); |
379 EXPECT_TRUE(client_socket_factory_.ssl_socket_created()); | 378 EXPECT_TRUE(client_socket_factory_.ssl_socket_created()); |
380 } | 379 } |
381 | 380 |
382 | 381 |
383 } // namespace remoting | 382 } // namespace remoting |
OLD | NEW |