| 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 |