| Index: chrome/browser/component_updater/test/crx_downloader_unittest.cc
|
| diff --git a/chrome/browser/component_updater/test/crx_downloader_unittest.cc b/chrome/browser/component_updater/test/crx_downloader_unittest.cc
|
| index 9f21240742d4a98acbcdb6e8d9730d352a753e6b..eb5bf3f813ae5dc9cd00edfeb59da2fff0d25dda 100644
|
| --- a/chrome/browser/component_updater/test/crx_downloader_unittest.cc
|
| +++ b/chrome/browser/component_updater/test/crx_downloader_unittest.cc
|
| @@ -20,6 +20,7 @@
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| using content::BrowserThread;
|
| +using base::ContentsEqual;
|
|
|
| namespace component_updater {
|
|
|
| @@ -28,7 +29,9 @@ namespace {
|
| // Intercepts HTTP GET requests sent to "localhost".
|
| typedef content::URLLocalHostRequestPrepackagedInterceptor GetInterceptor;
|
|
|
| -base::FilePath test_file(const char* file) {
|
| +const char kTestFileName[] = "jebgalgnebhfojomionfpkfelancnnkf.crx";
|
| +
|
| +base::FilePath MakeTestFilePath(const char* file) {
|
| base::FilePath path;
|
| PathService::Get(chrome::DIR_TEST_DATA, &path);
|
| return path.AppendASCII("components").AppendASCII(file);
|
| @@ -57,10 +60,9 @@ class CrxDownloaderTest : public testing::Test {
|
| CrxDownloader::DownloadCallback callback_;
|
|
|
| int crx_context_;
|
| - int error_;
|
| - base::FilePath response_;
|
|
|
| - int num_calls_;
|
| + int num_download_complete_calls_;
|
| + CrxDownloader::Result download_complete_result_;
|
|
|
| // A magic value for the context to be used in the tests.
|
| static const int kExpectedContext = 0xaabb;
|
| @@ -79,8 +81,7 @@ CrxDownloaderTest::CrxDownloaderTest()
|
| base::Unretained(this),
|
| kExpectedContext)),
|
| crx_context_(0),
|
| - error_(0),
|
| - num_calls_(0),
|
| + num_download_complete_calls_(0),
|
| blocking_task_runner_(BrowserThread::GetBlockingPool()->
|
| GetSequencedTaskRunnerWithShutdownBehavior(
|
| BrowserThread::GetBlockingPool()->GetSequenceToken(),
|
| @@ -95,7 +96,8 @@ CrxDownloaderTest::~CrxDownloaderTest() {
|
| }
|
|
|
| void CrxDownloaderTest::SetUp() {
|
| - num_calls_ = 0;
|
| + num_download_complete_calls_ = 0;
|
| + download_complete_result_ = CrxDownloader::Result();
|
| crx_downloader_.reset(CrxDownloader::Create(
|
| false, // Do not use the background downloader in these tests.
|
| context_.get(),
|
| @@ -110,13 +112,11 @@ void CrxDownloaderTest::Quit() {
|
| quit_closure_.Run();
|
| }
|
|
|
| -void CrxDownloaderTest::DownloadComplete(
|
| - int crx_context,
|
| - const CrxDownloader::Result& result) {
|
| - ++num_calls_;
|
| +void CrxDownloaderTest::DownloadComplete(int crx_context,
|
| + const CrxDownloader::Result& result) {
|
| + ++num_download_complete_calls_;
|
| crx_context_ = crx_context;
|
| - error_ = result.error;
|
| - response_ = result.response;
|
| + download_complete_result_ = result;
|
| Quit();
|
| }
|
|
|
| @@ -140,12 +140,12 @@ void CrxDownloaderTest::RunThreadsUntilIdle() {
|
| TEST_F(CrxDownloaderTest, NoUrl) {
|
| std::vector<GURL> urls;
|
| crx_downloader_->StartDownload(urls, callback_);
|
| -
|
| RunThreadsUntilIdle();
|
| - EXPECT_EQ(-1, error_);
|
| - EXPECT_EQ(kExpectedContext, crx_context_);
|
|
|
| - EXPECT_EQ(1, num_calls_);
|
| + EXPECT_EQ(1, num_download_complete_calls_);
|
| + EXPECT_EQ(kExpectedContext, crx_context_);
|
| + EXPECT_EQ(-1, download_complete_result_.error);
|
| + EXPECT_TRUE(download_complete_result_.response.empty());
|
| }
|
|
|
| // Tests that downloading from one url is successful.
|
| @@ -153,19 +153,21 @@ TEST_F(CrxDownloaderTest, OneUrl) {
|
| const GURL expected_crx_url =
|
| GURL("http://localhost/download/jebgalgnebhfojomionfpkfelancnnkf.crx");
|
|
|
| + const base::FilePath test_file(MakeTestFilePath(kTestFileName));
|
| GetInterceptor interceptor;
|
| - interceptor.SetResponse(
|
| - expected_crx_url,
|
| - test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| + interceptor.SetResponse(expected_crx_url, test_file);
|
|
|
| crx_downloader_->StartDownloadFromUrl(expected_crx_url, callback_);
|
| -
|
| RunThreads();
|
| +
|
| EXPECT_EQ(1, interceptor.GetHitCount());
|
| - EXPECT_EQ(0, error_);
|
| +
|
| + EXPECT_EQ(1, num_download_complete_calls_);
|
| EXPECT_EQ(kExpectedContext, crx_context_);
|
| + EXPECT_EQ(0, download_complete_result_.error);
|
| + EXPECT_TRUE(ContentsEqual(download_complete_result_.response, test_file));
|
|
|
| - EXPECT_EQ(1, num_calls_);
|
| + EXPECT_TRUE(base::DeleteFile(download_complete_result_.response, false));
|
| }
|
|
|
| // Tests that specifying from two urls has no side effects. Expect a successful
|
| @@ -180,23 +182,25 @@ TEST_F(CrxDownloaderTest, MAYBE_TwoUrls) {
|
| const GURL expected_crx_url =
|
| GURL("http://localhost/download/jebgalgnebhfojomionfpkfelancnnkf.crx");
|
|
|
| + const base::FilePath test_file(MakeTestFilePath(kTestFileName));
|
| GetInterceptor interceptor;
|
| - interceptor.SetResponse(
|
| - expected_crx_url,
|
| - test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| + interceptor.SetResponse(expected_crx_url, test_file);
|
|
|
| std::vector<GURL> urls;
|
| urls.push_back(expected_crx_url);
|
| urls.push_back(expected_crx_url);
|
|
|
| crx_downloader_->StartDownload(urls, callback_);
|
| -
|
| RunThreads();
|
| +
|
| EXPECT_EQ(1, interceptor.GetHitCount());
|
| - EXPECT_EQ(0, error_);
|
| +
|
| + EXPECT_EQ(1, num_download_complete_calls_);
|
| EXPECT_EQ(kExpectedContext, crx_context_);
|
| + EXPECT_EQ(0, download_complete_result_.error);
|
| + EXPECT_TRUE(ContentsEqual(download_complete_result_.response, test_file));
|
|
|
| - EXPECT_EQ(1, num_calls_);
|
| + EXPECT_TRUE(base::DeleteFile(download_complete_result_.response, false));
|
| }
|
|
|
| // Tests that an invalid host results in a download error.
|
| @@ -204,22 +208,22 @@ TEST_F(CrxDownloaderTest, OneUrl_InvalidHost) {
|
| const GURL expected_crx_url =
|
| GURL("http://localhost/download/jebgalgnebhfojomionfpkfelancnnkf.crx");
|
|
|
| + const base::FilePath test_file(MakeTestFilePath(kTestFileName));
|
| GetInterceptor interceptor;
|
| - interceptor.SetResponse(
|
| - expected_crx_url,
|
| - test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| + interceptor.SetResponse(expected_crx_url, test_file);
|
|
|
| crx_downloader_->StartDownloadFromUrl(
|
| GURL("http://no.such.host"
|
| "/download/jebgalgnebhfojomionfpkfelancnnkf.crx"),
|
| callback_);
|
| -
|
| RunThreads();
|
| +
|
| EXPECT_EQ(0, interceptor.GetHitCount());
|
| - EXPECT_NE(0, error_);
|
| - EXPECT_EQ(kExpectedContext, crx_context_);
|
|
|
| - EXPECT_EQ(1, num_calls_);
|
| + EXPECT_EQ(1, num_download_complete_calls_);
|
| + EXPECT_EQ(kExpectedContext, crx_context_);
|
| + EXPECT_NE(0, download_complete_result_.error);
|
| + EXPECT_TRUE(download_complete_result_.response.empty());
|
| }
|
|
|
| // Tests that an invalid path results in a download error.
|
| @@ -227,21 +231,21 @@ TEST_F(CrxDownloaderTest, OneUrl_InvalidPath) {
|
| const GURL expected_crx_url =
|
| GURL("http://localhost/download/jebgalgnebhfojomionfpkfelancnnkf.crx");
|
|
|
| + const base::FilePath test_file(MakeTestFilePath(kTestFileName));
|
| GetInterceptor interceptor;
|
| - interceptor.SetResponse(
|
| - expected_crx_url,
|
| - test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| + interceptor.SetResponse(expected_crx_url, test_file);
|
|
|
| crx_downloader_->StartDownloadFromUrl(
|
| GURL("http://localhost/no/such/file"),
|
| callback_);
|
| -
|
| RunThreads();
|
| +
|
| EXPECT_EQ(0, interceptor.GetHitCount());
|
| - EXPECT_NE(0, error_);
|
| - EXPECT_EQ(kExpectedContext, crx_context_);
|
|
|
| - EXPECT_EQ(1, num_calls_);
|
| + EXPECT_EQ(1, num_download_complete_calls_);
|
| + EXPECT_EQ(kExpectedContext, crx_context_);
|
| + EXPECT_NE(0, download_complete_result_.error);
|
| + EXPECT_TRUE(download_complete_result_.response.empty());
|
| }
|
|
|
| // Tests that the fallback to a valid url is successful.
|
| @@ -255,23 +259,25 @@ TEST_F(CrxDownloaderTest, MAYBE_TwoUrls_FirstInvalid) {
|
| const GURL expected_crx_url =
|
| GURL("http://localhost/download/jebgalgnebhfojomionfpkfelancnnkf.crx");
|
|
|
| + const base::FilePath test_file(MakeTestFilePath(kTestFileName));
|
| GetInterceptor interceptor;
|
| - interceptor.SetResponse(
|
| - expected_crx_url,
|
| - test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| + interceptor.SetResponse(expected_crx_url, test_file);
|
|
|
| std::vector<GURL> urls;
|
| urls.push_back(GURL("http://localhost/no/such/file"));
|
| urls.push_back(expected_crx_url);
|
|
|
| crx_downloader_->StartDownload(urls, callback_);
|
| -
|
| RunThreads();
|
| +
|
| EXPECT_EQ(1, interceptor.GetHitCount());
|
| - EXPECT_EQ(0, error_);
|
| +
|
| + EXPECT_EQ(1, num_download_complete_calls_);
|
| EXPECT_EQ(kExpectedContext, crx_context_);
|
| + EXPECT_EQ(0, download_complete_result_.error);
|
| + EXPECT_TRUE(ContentsEqual(download_complete_result_.response, test_file));
|
|
|
| - EXPECT_EQ(1, num_calls_);
|
| + EXPECT_TRUE(base::DeleteFile(download_complete_result_.response, false));
|
| }
|
|
|
| // Tests that the download succeeds if the first url is correct and the
|
| @@ -280,23 +286,25 @@ TEST_F(CrxDownloaderTest, TwoUrls_SecondInvalid) {
|
| const GURL expected_crx_url =
|
| GURL("http://localhost/download/jebgalgnebhfojomionfpkfelancnnkf.crx");
|
|
|
| + const base::FilePath test_file(MakeTestFilePath(kTestFileName));
|
| GetInterceptor interceptor;
|
| - interceptor.SetResponse(
|
| - expected_crx_url,
|
| - test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| + interceptor.SetResponse(expected_crx_url, test_file);
|
|
|
| std::vector<GURL> urls;
|
| urls.push_back(expected_crx_url);
|
| urls.push_back(GURL("http://localhost/no/such/file"));
|
|
|
| crx_downloader_->StartDownload(urls, callback_);
|
| -
|
| RunThreads();
|
| +
|
| EXPECT_EQ(1, interceptor.GetHitCount());
|
| - EXPECT_EQ(0, error_);
|
| +
|
| + EXPECT_EQ(1, num_download_complete_calls_);
|
| EXPECT_EQ(kExpectedContext, crx_context_);
|
| + EXPECT_EQ(0, download_complete_result_.error);
|
| + EXPECT_TRUE(ContentsEqual(download_complete_result_.response, test_file));
|
|
|
| - EXPECT_EQ(1, num_calls_);
|
| + EXPECT_TRUE(base::DeleteFile(download_complete_result_.response, false));
|
| }
|
|
|
| // Tests that the download fails if both urls are bad.
|
| @@ -304,10 +312,9 @@ TEST_F(CrxDownloaderTest, TwoUrls_BothInvalid) {
|
| const GURL expected_crx_url =
|
| GURL("http://localhost/download/jebgalgnebhfojomionfpkfelancnnkf.crx");
|
|
|
| + const base::FilePath test_file(MakeTestFilePath(kTestFileName));
|
| GetInterceptor interceptor;
|
| - interceptor.SetResponse(
|
| - expected_crx_url,
|
| - test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| + interceptor.SetResponse(expected_crx_url, test_file);
|
|
|
| std::vector<GURL> urls;
|
| urls.push_back(GURL("http://localhost/no/such/file"));
|
| @@ -315,13 +322,14 @@ TEST_F(CrxDownloaderTest, TwoUrls_BothInvalid) {
|
| "/download/jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
|
|
| crx_downloader_->StartDownload(urls, callback_);
|
| -
|
| RunThreads();
|
| +
|
| EXPECT_EQ(0, interceptor.GetHitCount());
|
| - EXPECT_NE(0, error_);
|
| - EXPECT_EQ(kExpectedContext, crx_context_);
|
|
|
| - EXPECT_EQ(1, num_calls_);
|
| + EXPECT_EQ(1, num_download_complete_calls_);
|
| + EXPECT_EQ(kExpectedContext, crx_context_);
|
| + EXPECT_NE(0, download_complete_result_.error);
|
| + EXPECT_TRUE(download_complete_result_.response.empty());
|
| }
|
|
|
| } // namespace component_updater
|
|
|