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/test/host_list_fetcher.h" | 5 #include "remoting/test/host_list_fetcher.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 DISALLOW_COPY_AND_ASSIGN(HostListFetcherTest); | 199 DISALLOW_COPY_AND_ASSIGN(HostListFetcherTest); |
200 }; | 200 }; |
201 | 201 |
202 void HostListFetcherTest::SetUp() { | 202 void HostListFetcherTest::SetUp() { |
203 DCHECK(!message_loop_); | 203 DCHECK(!message_loop_); |
204 message_loop_.reset(new base::MessageLoopForIO); | 204 message_loop_.reset(new base::MessageLoopForIO); |
205 | 205 |
206 SetFakeResponse(GURL(kHostListProdRequestUrl), | 206 SetFakeResponse(GURL(kHostListProdRequestUrl), |
207 kHostListEmptyResponse, net::HTTP_NOT_FOUND, | 207 kHostListEmptyResponse, net::HTTP_NOT_FOUND, |
208 net::URLRequestStatus::FAILED); | 208 net::URLRequestStatus::FAILED); |
| 209 |
| 210 SetFakeResponse(GURL(kHostListTestRequestUrl), kHostListEmptyResponse, |
| 211 net::HTTP_NOT_FOUND, net::URLRequestStatus::FAILED); |
209 } | 212 } |
210 | 213 |
211 void HostListFetcherTest::SetFakeResponse( | 214 void HostListFetcherTest::SetFakeResponse( |
212 const GURL& url, | 215 const GURL& url, |
213 const std::string& data, | 216 const std::string& data, |
214 net::HttpStatusCode code, | 217 net::HttpStatusCode code, |
215 net::URLRequestStatus::Status status) { | 218 net::URLRequestStatus::Status status) { |
216 url_fetcher_factory_.SetFakeResponse(url, data, code, status); | 219 url_fetcher_factory_.SetFakeResponse(url, data, code, status); |
217 } | 220 } |
218 | 221 |
219 TEST_F(HostListFetcherTest, RetrieveHostListFromProd) { | 222 TEST_F(HostListFetcherTest, RetrieveHostListFromProd) { |
220 SetFakeResponse(GURL(kHostListProdRequestUrl), | 223 SetFakeResponse(GURL(kHostListProdRequestUrl), |
221 kHostListReadyResponse, net::HTTP_OK, | 224 kHostListReadyResponse, net::HTTP_OK, |
222 net::URLRequestStatus::SUCCESS); | 225 net::URLRequestStatus::SUCCESS); |
223 | 226 |
224 std::vector<HostInfo> hostlist; | 227 std::vector<HostInfo> hostlist; |
225 | 228 |
226 base::RunLoop run_loop; | 229 base::RunLoop run_loop; |
227 HostListFetcher::HostlistCallback host_list_callback = | 230 HostListFetcher::HostlistCallback host_list_callback = |
228 base::Bind(&OnHostlistRetrieved, run_loop.QuitClosure(), &hostlist); | 231 base::Bind(&OnHostlistRetrieved, run_loop.QuitClosure(), &hostlist); |
229 | 232 |
230 HostListFetcher host_list_fetcher; | 233 HostListFetcher host_list_fetcher; |
231 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, host_list_callback); | 234 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, kHostListProdRequestUrl, |
| 235 host_list_callback); |
232 | 236 |
233 run_loop.Run(); | 237 run_loop.Run(); |
234 | 238 |
| 239 EXPECT_EQ(hostlist.size(), kExpectedHostListSize); |
| 240 |
| 241 HostInfo online_host_info = hostlist.at(0); |
| 242 EXPECT_EQ(online_host_info.token_url_patterns.size(), kExpectedPatternsSize); |
| 243 EXPECT_FALSE(online_host_info.host_id.empty()); |
| 244 EXPECT_FALSE(online_host_info.host_jid.empty()); |
| 245 EXPECT_FALSE(online_host_info.host_name.empty()); |
| 246 EXPECT_EQ(online_host_info.status, HostStatus::kHostStatusOnline); |
| 247 EXPECT_TRUE(online_host_info.offline_reason.empty()); |
| 248 EXPECT_FALSE(online_host_info.public_key.empty()); |
| 249 |
| 250 HostInfo offline_host_info = hostlist.at(1); |
| 251 EXPECT_TRUE(offline_host_info.token_url_patterns.empty()); |
| 252 EXPECT_FALSE(offline_host_info.host_id.empty()); |
| 253 EXPECT_FALSE(offline_host_info.host_jid.empty()); |
| 254 EXPECT_FALSE(offline_host_info.host_name.empty()); |
| 255 EXPECT_EQ(offline_host_info.status, HostStatus::kHostStatusOffline); |
| 256 EXPECT_FALSE(offline_host_info.offline_reason.empty()); |
| 257 EXPECT_FALSE(offline_host_info.public_key.empty()); |
| 258 } |
| 259 |
| 260 TEST_F(HostListFetcherTest, RetrieveHostListFromTest) { |
| 261 SetFakeResponse(GURL(kHostListTestRequestUrl), kHostListReadyResponse, |
| 262 net::HTTP_OK, net::URLRequestStatus::SUCCESS); |
| 263 |
| 264 std::vector<HostInfo> hostlist; |
| 265 |
| 266 base::RunLoop run_loop; |
| 267 HostListFetcher::HostlistCallback host_list_callback = |
| 268 base::Bind(&OnHostlistRetrieved, run_loop.QuitClosure(), &hostlist); |
| 269 |
| 270 HostListFetcher host_list_fetcher; |
| 271 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, kHostListTestRequestUrl, |
| 272 host_list_callback); |
| 273 |
| 274 run_loop.Run(); |
| 275 |
235 EXPECT_EQ(hostlist.size(), kExpectedHostListSize); | 276 EXPECT_EQ(hostlist.size(), kExpectedHostListSize); |
236 | 277 |
237 HostInfo online_host_info = hostlist.at(0); | 278 HostInfo online_host_info = hostlist.at(0); |
238 EXPECT_EQ(online_host_info.token_url_patterns.size(), kExpectedPatternsSize); | 279 EXPECT_EQ(online_host_info.token_url_patterns.size(), kExpectedPatternsSize); |
239 EXPECT_FALSE(online_host_info.host_id.empty()); | 280 EXPECT_FALSE(online_host_info.host_id.empty()); |
240 EXPECT_FALSE(online_host_info.host_jid.empty()); | 281 EXPECT_FALSE(online_host_info.host_jid.empty()); |
241 EXPECT_FALSE(online_host_info.host_name.empty()); | 282 EXPECT_FALSE(online_host_info.host_name.empty()); |
242 EXPECT_EQ(online_host_info.status, HostStatus::kHostStatusOnline); | 283 EXPECT_EQ(online_host_info.status, HostStatus::kHostStatusOnline); |
243 EXPECT_TRUE(online_host_info.offline_reason.empty()); | 284 EXPECT_TRUE(online_host_info.offline_reason.empty()); |
244 EXPECT_FALSE(online_host_info.public_key.empty()); | 285 EXPECT_FALSE(online_host_info.public_key.empty()); |
(...skipping 13 matching lines...) Expand all Loading... |
258 kHostListEmptyTokenUrlPatternsResponse, net::HTTP_OK, | 299 kHostListEmptyTokenUrlPatternsResponse, net::HTTP_OK, |
259 net::URLRequestStatus::SUCCESS); | 300 net::URLRequestStatus::SUCCESS); |
260 | 301 |
261 std::vector<HostInfo> hostlist; | 302 std::vector<HostInfo> hostlist; |
262 | 303 |
263 base::RunLoop run_loop; | 304 base::RunLoop run_loop; |
264 HostListFetcher::HostlistCallback host_list_callback = | 305 HostListFetcher::HostlistCallback host_list_callback = |
265 base::Bind(&OnHostlistRetrieved, run_loop.QuitClosure(), &hostlist); | 306 base::Bind(&OnHostlistRetrieved, run_loop.QuitClosure(), &hostlist); |
266 | 307 |
267 HostListFetcher host_list_fetcher; | 308 HostListFetcher host_list_fetcher; |
268 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, host_list_callback); | 309 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, kHostListProdRequestUrl, |
| 310 host_list_callback); |
269 | 311 |
270 run_loop.Run(); | 312 run_loop.Run(); |
271 | 313 |
272 EXPECT_EQ(hostlist.size(), kExpectedEmptyPatternsHostListSize); | 314 EXPECT_EQ(hostlist.size(), kExpectedEmptyPatternsHostListSize); |
273 | 315 |
274 // While this is unlikely to happen, empty token url patterns are handled. | 316 // While this is unlikely to happen, empty token url patterns are handled. |
275 HostInfo online_host_info = hostlist.at(0); | 317 HostInfo online_host_info = hostlist.at(0); |
276 EXPECT_TRUE(online_host_info.token_url_patterns.empty()); | 318 EXPECT_TRUE(online_host_info.token_url_patterns.empty()); |
277 EXPECT_FALSE(online_host_info.host_id.empty()); | 319 EXPECT_FALSE(online_host_info.host_id.empty()); |
278 EXPECT_FALSE(online_host_info.host_jid.empty()); | 320 EXPECT_FALSE(online_host_info.host_jid.empty()); |
279 EXPECT_FALSE(online_host_info.host_name.empty()); | 321 EXPECT_FALSE(online_host_info.host_name.empty()); |
280 EXPECT_EQ(online_host_info.status, HostStatus::kHostStatusOnline); | 322 EXPECT_EQ(online_host_info.status, HostStatus::kHostStatusOnline); |
281 EXPECT_TRUE(online_host_info.offline_reason.empty()); | 323 EXPECT_TRUE(online_host_info.offline_reason.empty()); |
282 EXPECT_FALSE(online_host_info.public_key.empty()); | 324 EXPECT_FALSE(online_host_info.public_key.empty()); |
283 } | 325 } |
284 | 326 |
285 TEST_F(HostListFetcherTest, | 327 TEST_F(HostListFetcherTest, |
286 RetrieveHostListMissingParametersResponse) { | 328 RetrieveHostListMissingParametersResponse) { |
287 SetFakeResponse(GURL(kHostListProdRequestUrl), | 329 SetFakeResponse(GURL(kHostListProdRequestUrl), |
288 kHostListMissingParametersResponse, net::HTTP_OK, | 330 kHostListMissingParametersResponse, net::HTTP_OK, |
289 net::URLRequestStatus::SUCCESS); | 331 net::URLRequestStatus::SUCCESS); |
290 | 332 |
291 std::vector<HostInfo> hostlist; | 333 std::vector<HostInfo> hostlist; |
292 | 334 |
293 base::RunLoop run_loop; | 335 base::RunLoop run_loop; |
294 HostListFetcher::HostlistCallback host_list_callback = | 336 HostListFetcher::HostlistCallback host_list_callback = |
295 base::Bind(&OnHostlistRetrieved, run_loop.QuitClosure(), &hostlist); | 337 base::Bind(&OnHostlistRetrieved, run_loop.QuitClosure(), &hostlist); |
296 | 338 |
297 HostListFetcher host_list_fetcher; | 339 HostListFetcher host_list_fetcher; |
298 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, host_list_callback); | 340 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, kHostListProdRequestUrl, |
| 341 host_list_callback); |
299 run_loop.Run(); | 342 run_loop.Run(); |
300 | 343 |
301 EXPECT_EQ(hostlist.size(), kExpectedHostListSize); | 344 EXPECT_EQ(hostlist.size(), kExpectedHostListSize); |
302 | 345 |
303 HostInfo no_jid_host_info = hostlist.at(0); | 346 HostInfo no_jid_host_info = hostlist.at(0); |
304 EXPECT_EQ(no_jid_host_info.token_url_patterns.size(), kExpectedPatternsSize); | 347 EXPECT_EQ(no_jid_host_info.token_url_patterns.size(), kExpectedPatternsSize); |
305 EXPECT_FALSE(no_jid_host_info.host_id.empty()); | 348 EXPECT_FALSE(no_jid_host_info.host_id.empty()); |
306 EXPECT_TRUE(no_jid_host_info.host_jid.empty()); | 349 EXPECT_TRUE(no_jid_host_info.host_jid.empty()); |
307 EXPECT_FALSE(no_jid_host_info.host_name.empty()); | 350 EXPECT_FALSE(no_jid_host_info.host_name.empty()); |
308 EXPECT_EQ(no_jid_host_info.status, HostStatus::kHostStatusOffline); | 351 EXPECT_EQ(no_jid_host_info.status, HostStatus::kHostStatusOffline); |
(...skipping 13 matching lines...) Expand all Loading... |
322 | 365 |
323 TEST_F(HostListFetcherTest, RetrieveHostListNetworkError) { | 366 TEST_F(HostListFetcherTest, RetrieveHostListNetworkError) { |
324 base::RunLoop run_loop; | 367 base::RunLoop run_loop; |
325 | 368 |
326 std::vector<HostInfo> hostlist; | 369 std::vector<HostInfo> hostlist; |
327 | 370 |
328 HostListFetcher::HostlistCallback host_list_callback = | 371 HostListFetcher::HostlistCallback host_list_callback = |
329 base::Bind(&OnHostlistRetrieved, run_loop.QuitClosure(), &hostlist); | 372 base::Bind(&OnHostlistRetrieved, run_loop.QuitClosure(), &hostlist); |
330 | 373 |
331 HostListFetcher host_list_fetcher; | 374 HostListFetcher host_list_fetcher; |
332 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, host_list_callback); | 375 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, kHostListProdRequestUrl, |
| 376 host_list_callback); |
333 run_loop.Run(); | 377 run_loop.Run(); |
334 | 378 |
335 // If there was a network error retrieving the host list, then the host list | 379 // If there was a network error retrieving the host list, then the host list |
336 // should be empty. | 380 // should be empty. |
337 EXPECT_TRUE(hostlist.empty()); | 381 EXPECT_TRUE(hostlist.empty()); |
338 } | 382 } |
339 | 383 |
340 TEST_F(HostListFetcherTest, RetrieveHostListEmptyItemsResponse) { | 384 TEST_F(HostListFetcherTest, RetrieveHostListEmptyItemsResponse) { |
341 SetFakeResponse(GURL(kHostListProdRequestUrl), | 385 SetFakeResponse(GURL(kHostListProdRequestUrl), |
342 kHostListEmptyItemsResponse, net::HTTP_OK, | 386 kHostListEmptyItemsResponse, net::HTTP_OK, |
343 net::URLRequestStatus::SUCCESS); | 387 net::URLRequestStatus::SUCCESS); |
344 | 388 |
345 base::RunLoop run_loop; | 389 base::RunLoop run_loop; |
346 | 390 |
347 std::vector<HostInfo> hostlist; | 391 std::vector<HostInfo> hostlist; |
348 | 392 |
349 HostListFetcher::HostlistCallback host_list_callback = | 393 HostListFetcher::HostlistCallback host_list_callback = |
350 base::Bind(&OnHostlistRetrieved, run_loop.QuitClosure(), &hostlist); | 394 base::Bind(&OnHostlistRetrieved, run_loop.QuitClosure(), &hostlist); |
351 | 395 |
352 HostListFetcher host_list_fetcher; | 396 HostListFetcher host_list_fetcher; |
353 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, host_list_callback); | 397 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, kHostListProdRequestUrl, |
| 398 host_list_callback); |
354 run_loop.Run(); | 399 run_loop.Run(); |
355 | 400 |
356 // If we received an empty items response, then host list should be empty. | 401 // If we received an empty items response, then host list should be empty. |
357 EXPECT_TRUE(hostlist.empty()); | 402 EXPECT_TRUE(hostlist.empty()); |
358 } | 403 } |
359 | 404 |
360 TEST_F(HostListFetcherTest, RetrieveHostListEmptyResponse) { | 405 TEST_F(HostListFetcherTest, RetrieveHostListEmptyResponse) { |
361 SetFakeResponse(GURL(kHostListProdRequestUrl), | 406 SetFakeResponse(GURL(kHostListProdRequestUrl), |
362 kHostListEmptyResponse, net::HTTP_OK, | 407 kHostListEmptyResponse, net::HTTP_OK, |
363 net::URLRequestStatus::SUCCESS); | 408 net::URLRequestStatus::SUCCESS); |
364 | 409 |
365 base::RunLoop run_loop; | 410 base::RunLoop run_loop; |
366 | 411 |
367 std::vector<HostInfo> hostlist; | 412 std::vector<HostInfo> hostlist; |
368 | 413 |
369 HostListFetcher::HostlistCallback host_list_callback = | 414 HostListFetcher::HostlistCallback host_list_callback = |
370 base::Bind(&OnHostlistRetrieved, run_loop.QuitClosure(), &hostlist); | 415 base::Bind(&OnHostlistRetrieved, run_loop.QuitClosure(), &hostlist); |
371 | 416 |
372 HostListFetcher host_list_fetcher; | 417 HostListFetcher host_list_fetcher; |
373 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, host_list_callback); | 418 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, kHostListProdRequestUrl, |
| 419 host_list_callback); |
374 run_loop.Run(); | 420 run_loop.Run(); |
375 | 421 |
376 // If we received an empty response, then host list should be empty. | 422 // If we received an empty response, then host list should be empty. |
377 EXPECT_TRUE(hostlist.empty()); | 423 EXPECT_TRUE(hostlist.empty()); |
378 } | 424 } |
379 | 425 |
380 TEST_F(HostListFetcherTest, MultipleRetrieveHostListRequests) { | 426 TEST_F(HostListFetcherTest, MultipleRetrieveHostListRequests) { |
381 // First, we will retrieve a valid response from the directory service. | 427 // First, we will retrieve a valid response from the directory service. |
382 SetFakeResponse(GURL(kHostListProdRequestUrl), | 428 SetFakeResponse(GURL(kHostListProdRequestUrl), |
383 kHostListReadyResponse, net::HTTP_OK, | 429 kHostListReadyResponse, net::HTTP_OK, |
384 net::URLRequestStatus::SUCCESS); | 430 net::URLRequestStatus::SUCCESS); |
385 | 431 |
386 std::vector<HostInfo> ready_hostlist; | 432 std::vector<HostInfo> ready_hostlist; |
387 | 433 |
388 base::RunLoop ready_run_loop; | 434 base::RunLoop ready_run_loop; |
389 HostListFetcher::HostlistCallback ready_host_list_callback = | 435 HostListFetcher::HostlistCallback ready_host_list_callback = |
390 base::Bind(&OnHostlistRetrieved, | 436 base::Bind(&OnHostlistRetrieved, |
391 ready_run_loop.QuitClosure(), | 437 ready_run_loop.QuitClosure(), |
392 &ready_hostlist); | 438 &ready_hostlist); |
393 | 439 |
394 HostListFetcher host_list_fetcher; | 440 HostListFetcher host_list_fetcher; |
395 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, | 441 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, kHostListProdRequestUrl, |
396 ready_host_list_callback); | 442 ready_host_list_callback); |
397 | 443 |
398 ready_run_loop.Run(); | 444 ready_run_loop.Run(); |
399 | 445 |
400 EXPECT_EQ(ready_hostlist.size(), kExpectedHostListSize); | 446 EXPECT_EQ(ready_hostlist.size(), kExpectedHostListSize); |
401 | 447 |
402 HostInfo online_host_info = ready_hostlist.at(0); | 448 HostInfo online_host_info = ready_hostlist.at(0); |
403 EXPECT_EQ(online_host_info.token_url_patterns.size(), kExpectedPatternsSize); | 449 EXPECT_EQ(online_host_info.token_url_patterns.size(), kExpectedPatternsSize); |
404 EXPECT_FALSE(online_host_info.host_id.empty()); | 450 EXPECT_FALSE(online_host_info.host_id.empty()); |
405 EXPECT_FALSE(online_host_info.host_jid.empty()); | 451 EXPECT_FALSE(online_host_info.host_jid.empty()); |
(...skipping 19 matching lines...) Expand all Loading... |
425 std::vector<HostInfo> empty_items_hostlist; | 471 std::vector<HostInfo> empty_items_hostlist; |
426 | 472 |
427 base::RunLoop empty_items_run_loop; | 473 base::RunLoop empty_items_run_loop; |
428 | 474 |
429 HostListFetcher::HostlistCallback empty_host_list_callback = | 475 HostListFetcher::HostlistCallback empty_host_list_callback = |
430 base::Bind(&OnHostlistRetrieved, | 476 base::Bind(&OnHostlistRetrieved, |
431 empty_items_run_loop.QuitClosure(), | 477 empty_items_run_loop.QuitClosure(), |
432 &empty_items_hostlist); | 478 &empty_items_hostlist); |
433 | 479 |
434 // Re-use the same host_list_fetcher. | 480 // Re-use the same host_list_fetcher. |
435 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, | 481 host_list_fetcher.RetrieveHostlist(kAccessTokenValue, kHostListProdRequestUrl, |
436 empty_host_list_callback); | 482 empty_host_list_callback); |
437 | 483 |
438 empty_items_run_loop.Run(); | 484 empty_items_run_loop.Run(); |
439 | 485 |
440 // If we received an empty items response, then host list should be empty. | 486 // If we received an empty items response, then host list should be empty. |
441 EXPECT_TRUE(empty_items_hostlist.empty()); | 487 EXPECT_TRUE(empty_items_hostlist.empty()); |
442 } | 488 } |
443 | 489 |
444 } // namespace test | 490 } // namespace test |
445 } // namespace remoting | 491 } // namespace remoting |
OLD | NEW |