summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/settings/device_settings_service_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/chromeos/settings/device_settings_service_unittest.cc')
-rw-r--r--chrome/browser/chromeos/settings/device_settings_service_unittest.cc114
1 files changed, 114 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/settings/device_settings_service_unittest.cc b/chrome/browser/chromeos/settings/device_settings_service_unittest.cc
index 0f0037b..727a34f 100644
--- a/chrome/browser/chromeos/settings/device_settings_service_unittest.cc
+++ b/chrome/browser/chromeos/settings/device_settings_service_unittest.cc
@@ -223,6 +223,120 @@ TEST_F(DeviceSettingsServiceTest, SignAndStoreSuccess) {
policy_data->username());
}
+TEST_F(DeviceSettingsServiceTest, SetManagementSettingsModeTransition) {
+ ReloadDeviceSettings();
+ EXPECT_EQ(DeviceSettingsService::STORE_SUCCESS,
+ device_settings_service_.status());
+
+ owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey());
+ device_settings_service_.SetUsername(device_policy_.policy_data().username());
+ FlushDeviceSettings();
+
+ // The initial management mode should be NOT_MANAGED.
+ EXPECT_EQ(em::PolicyData::NOT_MANAGED,
+ device_settings_service_.policy_data()->management_mode());
+
+ // NOT_MANAGED -> CONSUMER_MANAGED: Okay.
+ device_settings_service_.SetManagementSettings(
+ em::PolicyData::CONSUMER_MANAGED,
+ "fake_request_token",
+ "fake_device_id",
+ base::Bind(&DeviceSettingsServiceTest::SetOperationCompleted,
+ base::Unretained(this)));
+ FlushDeviceSettings();
+
+ EXPECT_TRUE(operation_completed_);
+ EXPECT_EQ(DeviceSettingsService::STORE_SUCCESS,
+ device_settings_service_.status());
+ EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED,
+ device_settings_service_.policy_data()->management_mode());
+
+ // CONSUMER_MANAGED -> ENTERPRISE_MANAGED: Invalid.
+ device_settings_service_.SetManagementSettings(
+ em::PolicyData::ENTERPRISE_MANAGED,
+ "fake_request_token",
+ "fake_device_id",
+ base::Bind(&DeviceSettingsServiceTest::SetOperationCompleted,
+ base::Unretained(this)));
+ FlushDeviceSettings();
+
+ EXPECT_TRUE(operation_completed_);
+ EXPECT_EQ(DeviceSettingsService::STORE_POLICY_ERROR,
+ device_settings_service_.status());
+ EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED,
+ device_settings_service_.policy_data()->management_mode());
+
+ // CONSUMER_MANAGED -> NOT_MANAGED: Okay.
+ device_settings_service_.SetManagementSettings(
+ em::PolicyData::NOT_MANAGED,
+ "fake_request_token",
+ "fake_device_id",
+ base::Bind(&DeviceSettingsServiceTest::SetOperationCompleted,
+ base::Unretained(this)));
+ FlushDeviceSettings();
+
+ EXPECT_TRUE(operation_completed_);
+ EXPECT_EQ(DeviceSettingsService::STORE_SUCCESS,
+ device_settings_service_.status());
+ EXPECT_EQ(em::PolicyData::NOT_MANAGED,
+ device_settings_service_.policy_data()->management_mode());
+
+ // NOT_MANAGED -> ENTERPRISE_MANAGED: Invalid.
+ device_settings_service_.SetManagementSettings(
+ em::PolicyData::ENTERPRISE_MANAGED,
+ "fake_request_token",
+ "fake_device_id",
+ base::Bind(&DeviceSettingsServiceTest::SetOperationCompleted,
+ base::Unretained(this)));
+ FlushDeviceSettings();
+
+ EXPECT_TRUE(operation_completed_);
+ EXPECT_EQ(DeviceSettingsService::STORE_POLICY_ERROR,
+ device_settings_service_.status());
+ EXPECT_EQ(em::PolicyData::NOT_MANAGED,
+ 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 -> NOT_MANAGED: Invalid.
+ device_settings_service_.SetManagementSettings(
+ em::PolicyData::NOT_MANAGED,
+ "fake_request_token",
+ "fake_device_id",
+ base::Bind(&DeviceSettingsServiceTest::SetOperationCompleted,
+ base::Unretained(this)));
+ FlushDeviceSettings();
+
+ EXPECT_TRUE(operation_completed_);
+ EXPECT_EQ(DeviceSettingsService::STORE_POLICY_ERROR,
+ device_settings_service_.status());
+ EXPECT_EQ(em::PolicyData::ENTERPRISE_MANAGED,
+ device_settings_service_.policy_data()->management_mode());
+
+ // ENTERPRISE_MANAGED -> CONSUMER_MANAGED: Invalid.
+ device_settings_service_.SetManagementSettings(
+ em::PolicyData::CONSUMER_MANAGED,
+ "fake_request_token",
+ "fake_device_id",
+ base::Bind(&DeviceSettingsServiceTest::SetOperationCompleted,
+ base::Unretained(this)));
+ FlushDeviceSettings();
+
+ EXPECT_TRUE(operation_completed_);
+ EXPECT_EQ(DeviceSettingsService::STORE_POLICY_ERROR,
+ device_settings_service_.status());
+ EXPECT_EQ(em::PolicyData::ENTERPRISE_MANAGED,
+ device_settings_service_.policy_data()->management_mode());
+
+}
+
TEST_F(DeviceSettingsServiceTest, SetManagementSettingsSuccess) {
ReloadDeviceSettings();
EXPECT_EQ(DeviceSettingsService::STORE_SUCCESS,