| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
| 7 #include "base/files/file_path.h" | 7 #include "base/files/file_path.h" |
| 8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
| 9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 11 #include "base/message_loop/message_loop.h" | 11 #include "base/message_loop/message_loop.h" |
| 12 #include "base/path_service.h" | 12 #include "base/path_service.h" |
| 13 #include "base/run_loop.h" | 13 #include "base/run_loop.h" |
| 14 #include "components/component_updater/crx_downloader.h" | 14 #include "components/update_client/crx_downloader.h" |
| 15 #include "net/base/net_errors.h" | 15 #include "net/base/net_errors.h" |
| 16 #include "net/url_request/test_url_request_interceptor.h" | 16 #include "net/url_request/test_url_request_interceptor.h" |
| 17 #include "net/url_request/url_request_test_util.h" | 17 #include "net/url_request/url_request_test_util.h" |
| 18 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
| 19 | 19 |
| 20 using base::ContentsEqual; | 20 using base::ContentsEqual; |
| 21 | 21 |
| 22 namespace component_updater { | 22 namespace update_client { |
| 23 | 23 |
| 24 namespace { | 24 namespace { |
| 25 | 25 |
| 26 // Intercepts HTTP GET requests sent to "localhost". | 26 // Intercepts HTTP GET requests sent to "localhost". |
| 27 typedef net::LocalHostTestURLRequestInterceptor GetInterceptor; | 27 typedef net::LocalHostTestURLRequestInterceptor GetInterceptor; |
| 28 | 28 |
| 29 const char kTestFileName[] = "jebgalgnebhfojomionfpkfelancnnkf.crx"; | 29 const char kTestFileName[] = "jebgalgnebhfojomionfpkfelancnnkf.crx"; |
| 30 | 30 |
| 31 base::FilePath MakeTestFilePath(const char* file) { | 31 base::FilePath MakeTestFilePath(const char* file) { |
| 32 base::FilePath path; | 32 base::FilePath path; |
| 33 PathService::Get(base::DIR_SOURCE_ROOT, &path); | 33 PathService::Get(base::DIR_SOURCE_ROOT, &path); |
| 34 return path.AppendASCII("components").AppendASCII("test").AppendASCII("data") | 34 return path.AppendASCII("components") |
| 35 .AppendASCII("component_updater").AppendASCII(file); | 35 .AppendASCII("test") |
| 36 .AppendASCII("data") |
| 37 .AppendASCII("update_client") |
| 38 .AppendASCII(file); |
| 36 } | 39 } |
| 37 | 40 |
| 38 } // namespace | 41 } // namespace |
| 39 | 42 |
| 40 class CrxDownloaderTest : public testing::Test { | 43 class CrxDownloaderTest : public testing::Test { |
| 41 public: | 44 public: |
| 42 CrxDownloaderTest(); | 45 CrxDownloaderTest(); |
| 43 ~CrxDownloaderTest() override; | 46 ~CrxDownloaderTest() override; |
| 44 | 47 |
| 45 // Overrides from testing::Test. | 48 // Overrides from testing::Test. |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 } | 108 } |
| 106 | 109 |
| 107 void CrxDownloaderTest::SetUp() { | 110 void CrxDownloaderTest::SetUp() { |
| 108 num_download_complete_calls_ = 0; | 111 num_download_complete_calls_ = 0; |
| 109 download_complete_result_ = CrxDownloader::Result(); | 112 download_complete_result_ = CrxDownloader::Result(); |
| 110 num_progress_calls_ = 0; | 113 num_progress_calls_ = 0; |
| 111 download_progress_result_ = CrxDownloader::Result(); | 114 download_progress_result_ = CrxDownloader::Result(); |
| 112 | 115 |
| 113 crx_downloader_.reset(CrxDownloader::Create( | 116 crx_downloader_.reset(CrxDownloader::Create( |
| 114 false, // Do not use the background downloader in these tests. | 117 false, // Do not use the background downloader in these tests. |
| 115 context_.get(), | 118 context_.get(), base::MessageLoopProxy::current(), |
| 116 base::MessageLoopProxy::current(), | |
| 117 NULL)); // No |background_task_runner| because no background downloader. | 119 NULL)); // No |background_task_runner| because no background downloader. |
| 118 crx_downloader_->set_progress_callback(progress_callback_); | 120 crx_downloader_->set_progress_callback(progress_callback_); |
| 119 | 121 |
| 120 get_interceptor_.reset(new GetInterceptor(base::MessageLoopProxy::current(), | 122 get_interceptor_.reset(new GetInterceptor(base::MessageLoopProxy::current(), |
| 121 base::MessageLoopProxy::current())); | 123 base::MessageLoopProxy::current())); |
| 122 } | 124 } |
| 123 | 125 |
| 124 void CrxDownloaderTest::TearDown() { | 126 void CrxDownloaderTest::TearDown() { |
| 125 crx_downloader_.reset(); | 127 crx_downloader_.reset(); |
| 126 } | 128 } |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 | 244 |
| 243 // Tests that an invalid host results in a download error. | 245 // Tests that an invalid host results in a download error. |
| 244 TEST_F(CrxDownloaderTest, OneUrl_InvalidHost) { | 246 TEST_F(CrxDownloaderTest, OneUrl_InvalidHost) { |
| 245 const GURL expected_crx_url = | 247 const GURL expected_crx_url = |
| 246 GURL("http://localhost/download/jebgalgnebhfojomionfpkfelancnnkf.crx"); | 248 GURL("http://localhost/download/jebgalgnebhfojomionfpkfelancnnkf.crx"); |
| 247 | 249 |
| 248 const base::FilePath test_file(MakeTestFilePath(kTestFileName)); | 250 const base::FilePath test_file(MakeTestFilePath(kTestFileName)); |
| 249 get_interceptor_->SetResponse(expected_crx_url, test_file); | 251 get_interceptor_->SetResponse(expected_crx_url, test_file); |
| 250 | 252 |
| 251 crx_downloader_->StartDownloadFromUrl( | 253 crx_downloader_->StartDownloadFromUrl( |
| 252 GURL("http://no.such.host" | 254 GURL( |
| 253 "/download/jebgalgnebhfojomionfpkfelancnnkf.crx"), | 255 "http://no.such.host" |
| 256 "/download/jebgalgnebhfojomionfpkfelancnnkf.crx"), |
| 254 callback_); | 257 callback_); |
| 255 RunThreads(); | 258 RunThreads(); |
| 256 | 259 |
| 257 EXPECT_EQ(0, get_interceptor_->GetHitCount()); | 260 EXPECT_EQ(0, get_interceptor_->GetHitCount()); |
| 258 | 261 |
| 259 EXPECT_EQ(1, num_download_complete_calls_); | 262 EXPECT_EQ(1, num_download_complete_calls_); |
| 260 EXPECT_EQ(kExpectedContext, crx_context_); | 263 EXPECT_EQ(kExpectedContext, crx_context_); |
| 261 EXPECT_NE(0, download_complete_result_.error); | 264 EXPECT_NE(0, download_complete_result_.error); |
| 262 EXPECT_TRUE(download_complete_result_.response.empty()); | 265 EXPECT_TRUE(download_complete_result_.response.empty()); |
| 263 } | 266 } |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 // Tests that the download fails if both urls are bad. | 357 // Tests that the download fails if both urls are bad. |
| 355 TEST_F(CrxDownloaderTest, TwoUrls_BothInvalid) { | 358 TEST_F(CrxDownloaderTest, TwoUrls_BothInvalid) { |
| 356 const GURL expected_crx_url = | 359 const GURL expected_crx_url = |
| 357 GURL("http://localhost/download/jebgalgnebhfojomionfpkfelancnnkf.crx"); | 360 GURL("http://localhost/download/jebgalgnebhfojomionfpkfelancnnkf.crx"); |
| 358 | 361 |
| 359 const base::FilePath test_file(MakeTestFilePath(kTestFileName)); | 362 const base::FilePath test_file(MakeTestFilePath(kTestFileName)); |
| 360 get_interceptor_->SetResponse(expected_crx_url, test_file); | 363 get_interceptor_->SetResponse(expected_crx_url, test_file); |
| 361 | 364 |
| 362 std::vector<GURL> urls; | 365 std::vector<GURL> urls; |
| 363 urls.push_back(GURL("http://localhost/no/such/file")); | 366 urls.push_back(GURL("http://localhost/no/such/file")); |
| 364 urls.push_back(GURL("http://no.such.host/" | 367 urls.push_back(GURL( |
| 365 "/download/jebgalgnebhfojomionfpkfelancnnkf.crx")); | 368 "http://no.such.host/" |
| 369 "/download/jebgalgnebhfojomionfpkfelancnnkf.crx")); |
| 366 | 370 |
| 367 crx_downloader_->StartDownload(urls, callback_); | 371 crx_downloader_->StartDownload(urls, callback_); |
| 368 RunThreads(); | 372 RunThreads(); |
| 369 | 373 |
| 370 EXPECT_EQ(0, get_interceptor_->GetHitCount()); | 374 EXPECT_EQ(0, get_interceptor_->GetHitCount()); |
| 371 | 375 |
| 372 EXPECT_EQ(1, num_download_complete_calls_); | 376 EXPECT_EQ(1, num_download_complete_calls_); |
| 373 EXPECT_EQ(kExpectedContext, crx_context_); | 377 EXPECT_EQ(kExpectedContext, crx_context_); |
| 374 EXPECT_NE(0, download_complete_result_.error); | 378 EXPECT_NE(0, download_complete_result_.error); |
| 375 EXPECT_TRUE(download_complete_result_.response.empty()); | 379 EXPECT_TRUE(download_complete_result_.response.empty()); |
| 376 } | 380 } |
| 377 | 381 |
| 378 } // namespace component_updater | 382 } // namespace update_client |
| OLD | NEW |