| Index: chrome/browser/chromeos/ownership/owner_settings_service_chromeos_unittest.cc
|
| diff --git a/chrome/browser/chromeos/ownership/owner_settings_service_chromeos_unittest.cc b/chrome/browser/chromeos/ownership/owner_settings_service_chromeos_unittest.cc
|
| index d559ef6b0d4dd4adab9983f2ae5894e12b545d0d..090ef89f7b5a0f95dd19811b740e95824ef87d98 100644
|
| --- a/chrome/browser/chromeos/ownership/owner_settings_service_chromeos_unittest.cc
|
| +++ b/chrome/browser/chromeos/ownership/owner_settings_service_chromeos_unittest.cc
|
| @@ -22,6 +22,8 @@
|
| #include "chromeos/settings/cros_settings_names.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +namespace em = enterprise_management;
|
| +
|
| namespace chromeos {
|
|
|
| namespace {
|
| @@ -83,7 +85,8 @@ class OwnerSettingsServiceChromeOSTest : public DeviceSettingsTestBase {
|
| OwnerSettingsServiceChromeOSTest()
|
| : service_(nullptr),
|
| local_state_(TestingBrowserProcess::GetGlobal()),
|
| - user_data_dir_override_(chrome::DIR_USER_DATA) {}
|
| + user_data_dir_override_(chrome::DIR_USER_DATA),
|
| + management_settings_set_(false) {}
|
|
|
| virtual void SetUp() override {
|
| DeviceSettingsTestBase::SetUp();
|
| @@ -110,10 +113,15 @@ class OwnerSettingsServiceChromeOSTest : public DeviceSettingsTestBase {
|
| checker.Wait();
|
| }
|
|
|
| + void OnManagementSettingsSet(bool success) {
|
| + management_settings_set_ = success;
|
| + }
|
| +
|
| OwnerSettingsServiceChromeOS* service_;
|
| ScopedTestingLocalState local_state_;
|
| scoped_ptr<DeviceSettingsProvider> provider_;
|
| base::ScopedPathOverride user_data_dir_override_;
|
| + bool management_settings_set_;
|
|
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSTest);
|
| @@ -158,6 +166,125 @@ TEST_F(OwnerSettingsServiceChromeOSTest, FailedSetRequest) {
|
| .release_channel());
|
| }
|
|
|
| +TEST_F(OwnerSettingsServiceChromeOSTest, SetManagementSettingsModeTransition) {
|
| + ReloadDeviceSettings();
|
| + EXPECT_EQ(DeviceSettingsService::STORE_SUCCESS,
|
| + device_settings_service_.status());
|
| +
|
| + owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey());
|
| + InitOwner(device_policy_.policy_data().username(), true);
|
| + FlushDeviceSettings();
|
| +
|
| + // The initial management mode should be LOCAL_OWNER.
|
| + EXPECT_EQ(em::PolicyData::LOCAL_OWNER,
|
| + device_settings_service_.policy_data()->management_mode());
|
| +
|
| + OwnerSettingsServiceChromeOS::ManagementSettingsSetRequest
|
| + management_settings;
|
| + management_settings.management_mode = em::PolicyData::CONSUMER_MANAGED;
|
| + management_settings.request_token = "fake_request_token";
|
| + management_settings.device_id = "fake_device_id";
|
| + management_settings.callback =
|
| + base::Bind(&OwnerSettingsServiceChromeOSTest::OnManagementSettingsSet,
|
| + base::Unretained(this));
|
| +
|
| + // LOCAL_OWNER -> CONSUMER_MANAGED: Okay.
|
| + service_->SetManagementSettings(management_settings);
|
| + FlushDeviceSettings();
|
| +
|
| + EXPECT_TRUE(management_settings_set_);
|
| + EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED,
|
| + device_settings_service_.policy_data()->management_mode());
|
| +
|
| + // CONSUMER_MANAGED -> ENTERPRISE_MANAGED: Invalid.
|
| + management_settings.management_mode = em::PolicyData::ENTERPRISE_MANAGED;
|
| + service_->SetManagementSettings(management_settings);
|
| + FlushDeviceSettings();
|
| +
|
| + EXPECT_FALSE(management_settings_set_);
|
| + EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED,
|
| + device_settings_service_.policy_data()->management_mode());
|
| +
|
| + // CONSUMER_MANAGED -> LOCAL_OWNER: Okay.
|
| + management_settings.management_mode = em::PolicyData::LOCAL_OWNER;
|
| + service_->SetManagementSettings(management_settings);
|
| + FlushDeviceSettings();
|
| +
|
| + EXPECT_TRUE(management_settings_set_);
|
| + EXPECT_EQ(em::PolicyData::LOCAL_OWNER,
|
| + device_settings_service_.policy_data()->management_mode());
|
| +
|
| + // LOCAL_OWNER -> ENTERPRISE_MANAGED: Invalid.
|
| + management_settings.management_mode = em::PolicyData::ENTERPRISE_MANAGED;
|
| + service_->SetManagementSettings(management_settings);
|
| + FlushDeviceSettings();
|
| +
|
| + EXPECT_FALSE(management_settings_set_);
|
| + EXPECT_EQ(em::PolicyData::LOCAL_OWNER,
|
| + device_settings_service_.policy_data()->management_mode());
|
| +
|
| + // Inject a policy data with management mode set to ENTERPRISE_MANAGED.
|
| + device_policy_.policy_data().set_management_mode(
|
| + em::PolicyData::ENTERPRISE_MANAGED);
|
| + device_policy_.Build();
|
| + device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob());
|
| + ReloadDeviceSettings();
|
| + EXPECT_EQ(em::PolicyData::ENTERPRISE_MANAGED,
|
| + device_settings_service_.policy_data()->management_mode());
|
| +
|
| + // ENTERPRISE_MANAGED -> LOCAL_OWNER: Invalid.
|
| + management_settings.management_mode = em::PolicyData::LOCAL_OWNER;
|
| + service_->SetManagementSettings(management_settings);
|
| + FlushDeviceSettings();
|
| +
|
| + EXPECT_FALSE(management_settings_set_);
|
| + EXPECT_EQ(em::PolicyData::ENTERPRISE_MANAGED,
|
| + device_settings_service_.policy_data()->management_mode());
|
| +
|
| + // ENTERPRISE_MANAGED -> CONSUMER_MANAGED: Invalid.
|
| + management_settings.management_mode = em::PolicyData::CONSUMER_MANAGED;
|
| + service_->SetManagementSettings(management_settings);
|
| + FlushDeviceSettings();
|
| +
|
| + EXPECT_FALSE(management_settings_set_);
|
| + EXPECT_EQ(em::PolicyData::ENTERPRISE_MANAGED,
|
| + device_settings_service_.policy_data()->management_mode());
|
| +}
|
| +
|
| +TEST_F(OwnerSettingsServiceChromeOSTest, SetManagementSettingsSuccess) {
|
| + ReloadDeviceSettings();
|
| + EXPECT_EQ(DeviceSettingsService::STORE_SUCCESS,
|
| + device_settings_service_.status());
|
| +
|
| + owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey());
|
| + InitOwner(device_policy_.policy_data().username(), true);
|
| + FlushDeviceSettings();
|
| +
|
| + OwnerSettingsServiceChromeOS::ManagementSettingsSetRequest request;
|
| + request.management_mode = em::PolicyData::CONSUMER_MANAGED;
|
| + request.request_token = "fake_request_token";
|
| + request.device_id = "fake_device_id";
|
| + request.callback =
|
| + base::Bind(&OwnerSettingsServiceChromeOSTest::OnManagementSettingsSet,
|
| + base::Unretained(this));
|
| + service_->SetManagementSettings(request);
|
| + FlushDeviceSettings();
|
| +
|
| + EXPECT_EQ(DeviceSettingsService::STORE_SUCCESS,
|
| + device_settings_service_.status());
|
| + ASSERT_TRUE(device_settings_service_.device_settings());
|
| +
|
| + // Check that the loaded policy_data contains the expected values.
|
| + const em::PolicyData* policy_data = device_settings_service_.policy_data();
|
| + EXPECT_EQ(policy::dm_protocol::kChromeDevicePolicyType,
|
| + policy_data->policy_type());
|
| + EXPECT_EQ(device_settings_service_.GetUsername(),
|
| + policy_data->username());
|
| + EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED, policy_data->management_mode());
|
| + EXPECT_EQ("fake_request_token", policy_data->request_token());
|
| + EXPECT_EQ("fake_device_id", policy_data->device_id());
|
| +}
|
| +
|
| class OwnerSettingsServiceChromeOSNoOwnerTest
|
| : public OwnerSettingsServiceChromeOSTest {
|
| public:
|
|
|