Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2533)

Unified Diff: chrome/browser/component_updater/test/supervised_user_whitelist_installer_unittest.cc

Issue 1102103002: Move the unit tests files side-by-side with the corresponding .cc files. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/component_updater/test/supervised_user_whitelist_installer_unittest.cc
diff --git a/chrome/browser/component_updater/test/supervised_user_whitelist_installer_unittest.cc b/chrome/browser/component_updater/test/supervised_user_whitelist_installer_unittest.cc
deleted file mode 100644
index c6266a255f3cc2cab9e09c9489a20508c6a17fa1..0000000000000000000000000000000000000000
--- a/chrome/browser/component_updater/test/supervised_user_whitelist_installer_unittest.cc
+++ /dev/null
@@ -1,369 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/bind.h"
-#include "base/callback.h"
-#include "base/files/file_path.h"
-#include "base/files/file_util.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/json/json_file_value_serializer.h"
-#include "base/json/json_writer.h"
-#include "base/message_loop/message_loop.h"
-#include "base/path_service.h"
-#include "base/prefs/testing_pref_service.h"
-#include "base/run_loop.h"
-#include "base/sequenced_task_runner.h"
-#include "base/strings/string_util.h"
-#include "base/test/scoped_path_override.h"
-#include "base/values.h"
-#include "chrome/browser/component_updater/supervised_user_whitelist_installer.h"
-#include "chrome/common/pref_names.h"
-#include "components/component_updater/component_updater_paths.h"
-#include "components/component_updater/component_updater_service.h"
-#include "components/crx_file/id_util.h"
-#include "components/update_client/crx_update_item.h"
-#include "components/update_client/update_client.h"
-#include "components/update_client/utils.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using update_client::CrxComponent;
-using update_client::CrxUpdateItem;
-
-namespace component_updater {
-
-namespace {
-
-const char kClientId[] = "client-id";
-const char kCrxId[] = "abcdefghijklmnopponmlkjihgfedcba";
-const char kName[] = "Some Whitelist";
-const char kOtherClientId[] = "other-client-id";
-const char kVersion[] = "1.2.3.4";
-const char kWhitelistContents[] = "{\"foo\": \"bar\"}";
-const char kWhitelistFile[] = "whitelist.json";
-
-std::string CrxIdToHashToCrxId(const std::string& kCrxId) {
- CrxComponent component;
- component.pk_hash =
- SupervisedUserWhitelistInstaller::GetHashFromCrxId(kCrxId);
- EXPECT_EQ(16u, component.pk_hash.size());
- return GetCrxComponentID(component);
-}
-
-std::string JsonToString(const base::DictionaryValue* dict) {
- std::string json;
- base::JSONWriter::Write(dict, &json);
- return json;
-}
-
-class MockComponentUpdateService : public ComponentUpdateService,
- public OnDemandUpdater {
- public:
- MockComponentUpdateService(
- const scoped_refptr<base::SequencedTaskRunner>& task_runner)
- : task_runner_(task_runner), on_demand_update_called_(false) {}
-
- ~MockComponentUpdateService() override {}
-
- bool on_demand_update_called() const { return on_demand_update_called_; }
-
- const CrxComponent* registered_component() { return component_.get(); }
-
- void set_registration_callback(const base::Closure& registration_callback) {
- registration_callback_ = registration_callback;
- }
-
- // ComponentUpdateService implementation:
- void AddObserver(Observer* observer) override { ADD_FAILURE(); }
- void RemoveObserver(Observer* observer) override { ADD_FAILURE(); }
-
- Status Start() override {
- ADD_FAILURE();
- return Status::kError;
- }
-
- Status Stop() override {
- ADD_FAILURE();
- return Status::kError;
- }
-
- std::vector<std::string> GetComponentIDs() const override {
- ADD_FAILURE();
- return std::vector<std::string>();
- }
-
- Status RegisterComponent(const CrxComponent& component) override {
- EXPECT_EQ(nullptr, component_.get());
- component_.reset(new CrxComponent(component));
- if (!registration_callback_.is_null())
- registration_callback_.Run();
-
- return Status::kOk;
- }
-
- Status UnregisterComponent(const std::string& crx_id) override {
- if (!component_) {
- ADD_FAILURE();
- return Status::kError;
- }
-
- EXPECT_EQ(GetCrxComponentID(*component_), crx_id);
- if (!component_->installer->Uninstall()) {
- ADD_FAILURE();
- return Status::kError;
- }
-
- component_.reset();
- return Status::kOk;
- }
-
- OnDemandUpdater& GetOnDemandUpdater() override { return *this; }
-
- void MaybeThrottle(const std::string& kCrxId,
- const base::Closure& callback) override {
- ADD_FAILURE();
- }
-
- scoped_refptr<base::SequencedTaskRunner> GetSequencedTaskRunner() override {
- return task_runner_;
- }
-
- bool GetComponentDetails(const std::string& component_id,
- CrxUpdateItem* item) const override {
- ADD_FAILURE();
- return false;
- }
-
- // OnDemandUpdater implementation:
- Status OnDemandUpdate(const std::string& crx_id) override {
- on_demand_update_called_ = true;
-
- if (!component_) {
- ADD_FAILURE() << "Trying to update unregistered component " << crx_id;
- return Status::kError;
- }
-
- EXPECT_EQ(GetCrxComponentID(*component_), crx_id);
- return Status::kOk;
- }
-
- private:
- scoped_refptr<base::SequencedTaskRunner> task_runner_;
- scoped_ptr<CrxComponent> component_;
- base::Closure registration_callback_;
- bool on_demand_update_called_;
-};
-
-class WhitelistLoadObserver {
- public:
- explicit WhitelistLoadObserver(SupervisedUserWhitelistInstaller* installer)
- : weak_ptr_factory_(this) {
- installer->Subscribe(base::Bind(&WhitelistLoadObserver::OnWhitelistReady,
- weak_ptr_factory_.GetWeakPtr()));
- }
-
- void Wait() { run_loop_.Run(); }
-
- const base::FilePath& whitelist_path() { return whitelist_path_; }
-
- private:
- void OnWhitelistReady(const std::string& crx_id,
- const base::FilePath& whitelist_path) {
- EXPECT_EQ(base::FilePath::StringType(), whitelist_path_.value());
- whitelist_path_ = whitelist_path;
- run_loop_.Quit();
- }
-
- base::FilePath whitelist_path_;
-
- base::RunLoop run_loop_;
- base::WeakPtrFactory<WhitelistLoadObserver> weak_ptr_factory_;
-};
-
-} // namespace
-
-class SupervisedUserWhitelistInstallerTest : public testing::Test {
- public:
- SupervisedUserWhitelistInstallerTest()
- : path_override_(DIR_SUPERVISED_USER_WHITELISTS),
- component_update_service_(message_loop_.task_runner()),
- installer_(
- SupervisedUserWhitelistInstaller::Create(&component_update_service_,
- nullptr,
- &local_state_)) {}
-
- ~SupervisedUserWhitelistInstallerTest() override {}
-
- void SetUp() override {
- SupervisedUserWhitelistInstaller::RegisterPrefs(local_state_.registry());
-
- ASSERT_TRUE(PathService::Get(DIR_SUPERVISED_USER_WHITELISTS,
- &whitelist_base_directory_));
- whitelist_directory_ = whitelist_base_directory_.AppendASCII(kCrxId);
- whitelist_version_directory_ = whitelist_directory_.AppendASCII(kVersion);
- whitelist_path_ = whitelist_version_directory_.AppendASCII(kWhitelistFile);
-
- scoped_ptr<base::DictionaryValue> contentPackDict(
- new base::DictionaryValue);
- contentPackDict->SetString("sites", kWhitelistFile);
- manifest_.Set("content_pack", contentPackDict.release());
- manifest_.SetString("version", kVersion);
-
- scoped_ptr<base::DictionaryValue> whitelist_dict(new base::DictionaryValue);
- whitelist_dict->SetString("name", kName);
- scoped_ptr<base::ListValue> clients(new base::ListValue);
- clients->AppendString(kClientId);
- clients->AppendString(kOtherClientId);
- whitelist_dict->Set("clients", clients.release());
- pref_.Set(kCrxId, whitelist_dict.release());
- }
-
- protected:
- void PrepareWhitelistDirectory(const base::FilePath& whitelist_directory) {
- base::FilePath whitelist_path =
- whitelist_directory.AppendASCII(kWhitelistFile);
- size_t whitelist_contents_length = sizeof(kWhitelistContents) - 1;
- ASSERT_EQ(static_cast<int>(whitelist_contents_length),
- base::WriteFile(whitelist_path, kWhitelistContents,
- whitelist_contents_length));
- base::FilePath manifest_file =
- whitelist_directory.AppendASCII("manifest.json");
- ASSERT_TRUE(JSONFileValueSerializer(manifest_file).Serialize(manifest_));
- }
-
- void RegisterExistingComponents() {
- local_state_.Set(prefs::kRegisteredSupervisedUserWhitelists, pref_);
- base::RunLoop run_loop;
- installer_->RegisterComponents();
- run_loop.RunUntilIdle();
- }
-
- void CheckRegisteredComponent(const char* version) {
- const CrxComponent* component =
- component_update_service_.registered_component();
- ASSERT_TRUE(component);
- EXPECT_EQ(kName, component->name);
- EXPECT_EQ(kCrxId, GetCrxComponentID(*component));
- EXPECT_EQ(version, component->version.GetString());
- }
-
- base::MessageLoop message_loop_;
- base::ScopedPathOverride path_override_;
- MockComponentUpdateService component_update_service_;
- TestingPrefServiceSimple local_state_;
- scoped_ptr<SupervisedUserWhitelistInstaller> installer_;
- base::FilePath whitelist_base_directory_;
- base::FilePath whitelist_directory_;
- base::FilePath whitelist_version_directory_;
- base::FilePath whitelist_path_;
- base::DictionaryValue manifest_;
- base::DictionaryValue pref_;
-};
-
-TEST_F(SupervisedUserWhitelistInstallerTest, GetHashFromCrxId) {
- {
- std::string extension_id = "abcdefghijklmnopponmlkjihgfedcba";
- ASSERT_EQ(extension_id, CrxIdToHashToCrxId(extension_id));
- }
-
- {
- std::string extension_id = "aBcDeFgHiJkLmNoPpOnMlKjIhGfEdCbA";
- ASSERT_EQ(base::StringToLowerASCII(extension_id),
- CrxIdToHashToCrxId(extension_id));
- }
-
- {
- std::string extension_id = crx_file::id_util::GenerateId("Moose");
- ASSERT_EQ(extension_id, CrxIdToHashToCrxId(extension_id));
- }
-}
-
-TEST_F(SupervisedUserWhitelistInstallerTest, InstallNewWhitelist) {
- base::RunLoop registration_run_loop;
- component_update_service_.set_registration_callback(
- registration_run_loop.QuitClosure());
-
- WhitelistLoadObserver observer(installer_.get());
- installer_->RegisterWhitelist(kClientId, kCrxId, kName);
- registration_run_loop.Run();
-
- ASSERT_NO_FATAL_FAILURE(CheckRegisteredComponent("0.0.0.0"));
- EXPECT_TRUE(component_update_service_.on_demand_update_called());
-
- // Registering the same whitelist for another client should not do anything.
- installer_->RegisterWhitelist(kOtherClientId, kCrxId, kName);
-
- base::ScopedTempDir temp_dir;
- ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
- base::FilePath unpacked_path = temp_dir.path();
- ASSERT_NO_FATAL_FAILURE(PrepareWhitelistDirectory(unpacked_path));
-
- const CrxComponent* component =
- component_update_service_.registered_component();
- ASSERT_TRUE(component);
- ASSERT_TRUE(component->installer->Install(manifest_, unpacked_path));
- observer.Wait();
- EXPECT_EQ(whitelist_path_.value(), observer.whitelist_path().value());
-
- std::string whitelist_contents;
- ASSERT_TRUE(base::ReadFileToString(whitelist_path_, &whitelist_contents));
- EXPECT_EQ(kWhitelistContents, whitelist_contents);
-
- EXPECT_EQ(JsonToString(&pref_),
- JsonToString(local_state_.GetDictionary(
- prefs::kRegisteredSupervisedUserWhitelists)));
-}
-
-TEST_F(SupervisedUserWhitelistInstallerTest,
- RegisterAndUninstallExistingWhitelist) {
- ASSERT_TRUE(base::CreateDirectory(whitelist_version_directory_));
- ASSERT_NO_FATAL_FAILURE(
- PrepareWhitelistDirectory(whitelist_version_directory_));
-
- // Create another whitelist directory, with an ID that is not registered.
- base::FilePath other_directory =
- whitelist_base_directory_.AppendASCII("paobncmdlekfjgihhigjfkeldmcnboap");
- ASSERT_TRUE(base::CreateDirectory(other_directory));
- ASSERT_NO_FATAL_FAILURE(PrepareWhitelistDirectory(other_directory));
-
- // Create a directory that is not a valid whitelist directory.
- base::FilePath non_whitelist_directory =
- whitelist_base_directory_.AppendASCII("Not a whitelist");
- ASSERT_TRUE(base::CreateDirectory(non_whitelist_directory));
-
- RegisterExistingComponents();
-
- ASSERT_NO_FATAL_FAILURE(CheckRegisteredComponent(kVersion));
- EXPECT_FALSE(component_update_service_.on_demand_update_called());
-
- // Check that unregistered whitelists have been removed:
- // The registered whitelist directory should still exist.
- EXPECT_TRUE(base::DirectoryExists(whitelist_directory_));
-
- // The other directory should be gone.
- EXPECT_FALSE(base::DirectoryExists(other_directory));
-
- // The non-whitelist directory should still exist as well.
- EXPECT_TRUE(base::DirectoryExists(non_whitelist_directory));
-
- // Unregistering for the first client should do nothing.
- {
- base::RunLoop run_loop;
- installer_->UnregisterWhitelist(kClientId, kCrxId);
- run_loop.RunUntilIdle();
- }
- EXPECT_TRUE(component_update_service_.registered_component());
- EXPECT_TRUE(base::DirectoryExists(whitelist_version_directory_));
-
- // Unregistering for the second client should uninstall the whitelist.
- {
- base::RunLoop run_loop;
- installer_->UnregisterWhitelist(kOtherClientId, kCrxId);
- run_loop.RunUntilIdle();
- }
- EXPECT_FALSE(component_update_service_.registered_component());
- EXPECT_FALSE(base::DirectoryExists(whitelist_directory_));
-}
-
-} // namespace component_updater

Powered by Google App Engine
This is Rietveld 408576698