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

Unified Diff: chrome/browser/chromeos/policy/consumer_unenrollment_handler_unittest.cc

Issue 751703003: Implemented consumer management unenrollment. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dcpm
Patch Set: Rebase. Created 5 years, 11 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/chromeos/policy/consumer_unenrollment_handler_unittest.cc
diff --git a/chrome/browser/chromeos/policy/consumer_unenrollment_handler_unittest.cc b/chrome/browser/chromeos/policy/consumer_unenrollment_handler_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..cacf39604d8b261a5425e82c7f1767e091b7fb2c
--- /dev/null
+++ b/chrome/browser/chromeos/policy/consumer_unenrollment_handler_unittest.cc
@@ -0,0 +1,128 @@
+// 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 "chrome/browser/chromeos/policy/consumer_unenrollment_handler.h"
+
+#include "base/bind.h"
+#include "base/bind_helpers.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/thread_task_runner_handle.h"
+#include "chrome/browser/chromeos/ownership/fake_owner_settings_service.h"
+#include "chrome/browser/chromeos/policy/consumer_management_service.h"
+#include "chrome/browser/chromeos/policy/consumer_management_stage.h"
+#include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h"
+#include "chrome/browser/chromeos/policy/enterprise_install_attributes.h"
+#include "chrome/browser/chromeos/policy/fake_consumer_management_service.h"
+#include "chrome/browser/chromeos/policy/fake_device_cloud_policy_manager.h"
+#include "chrome/browser/chromeos/settings/device_settings_service.h"
+#include "chrome/browser/chromeos/settings/device_settings_test_helper.h"
+#include "chrome/test/base/testing_profile.h"
+#include "chromeos/dbus/fake_cryptohome_client.h"
+#include "components/ownership/mock_owner_key_util.h"
+#include "policy/proto/device_management_backend.pb.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace policy {
+
+class ConsumerUnenrollmentHandlerTest
+ : public chromeos::DeviceSettingsTestBase {
+ public:
+ ConsumerUnenrollmentHandlerTest()
+ : fake_service_(new FakeConsumerManagementService()),
+ fake_cryptohome_client_(new chromeos::FakeCryptohomeClient()),
+ install_attributes_(
+ new EnterpriseInstallAttributes(fake_cryptohome_client_.get())) {
+ // Set up FakeConsumerManagementService.
+ fake_service_->SetStatusAndStage(
+ ConsumerManagementService::STATUS_ENROLLED,
+ ConsumerManagementStage::None());
+ }
+
+ void SetUp() override {
+ DeviceSettingsTestBase::SetUp();
+
+ // Set up the ownership, so that we can modify device settings.
+ owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey());
+ InitOwner(device_policy_.policy_data().username(), true);
+ FlushDeviceSettings();
+
+
+ // Set up FakeDeviceCloudPolicyManager.
+ scoped_ptr<DeviceCloudPolicyStoreChromeOS> store_(
+ new DeviceCloudPolicyStoreChromeOS(
+ &device_settings_service_,
+ install_attributes_.get(),
+ base::ThreadTaskRunnerHandle::Get()));
+ fake_manager_.reset(new FakeDeviceCloudPolicyManager(
+ store_.Pass(),
+ base::ThreadTaskRunnerHandle::Get()));
+
+ // Set up FakeOwnerSettingsService.
+ fake_owner_settings_service_.reset(
+ new chromeos::FakeOwnerSettingsService(
+ profile_.get(), owner_key_util_));
+ chromeos::OwnerSettingsServiceChromeOS::ManagementSettings settings;
+ settings.management_mode = policy::MANAGEMENT_MODE_CONSUMER_MANAGED;
+ settings.request_token = "fake_request_token";
+ settings.device_id = "fake_device_id";
+ fake_owner_settings_service_->SetManagementSettings(
+ settings,
+ base::Bind(&ConsumerUnenrollmentHandlerTest::OnManagementSettingsSet,
+ base::Unretained(this)));
+ }
+
+ void OnManagementSettingsSet(bool success) {
+ EXPECT_TRUE(success);
+ }
+
+ void RunUnenrollment() {
+ handler_.reset(new ConsumerUnenrollmentHandler(
+ &device_settings_service_,
+ fake_service_.get(),
+ fake_manager_.get(),
+ fake_owner_settings_service_.get()));
+ handler_->Start();
+ FlushDeviceSettings();
+ }
+
+ scoped_ptr<FakeConsumerManagementService> fake_service_;
+ scoped_ptr<chromeos::FakeCryptohomeClient> fake_cryptohome_client_;
+ scoped_ptr<EnterpriseInstallAttributes> install_attributes_;
+ scoped_ptr<FakeDeviceCloudPolicyManager> fake_manager_;
+ scoped_ptr<chromeos::FakeOwnerSettingsService> fake_owner_settings_service_;
+
+ scoped_ptr<ConsumerUnenrollmentHandler> handler_;
+};
+
+TEST_F(ConsumerUnenrollmentHandlerTest, UnenrollmentSucceeds) {
+ EXPECT_EQ(ConsumerManagementStage::None(), fake_service_->GetStage());
+
+ RunUnenrollment();
+
+ EXPECT_EQ(ConsumerManagementStage::UnenrollmentSuccess(),
+ fake_service_->GetStage());
+ const chromeos::OwnerSettingsServiceChromeOS::ManagementSettings& settings =
+ fake_owner_settings_service_->last_settings();
+ EXPECT_EQ(policy::MANAGEMENT_MODE_LOCAL_OWNER, settings.management_mode);
+ EXPECT_EQ("", settings.request_token);
+ EXPECT_EQ("", settings.device_id);
+}
+
+TEST_F(ConsumerUnenrollmentHandlerTest,
+ UnenrollmentFailsOnServerError) {
+ EXPECT_EQ(ConsumerManagementStage::None(), fake_service_->GetStage());
+ fake_manager_->set_unregister_result(false);
+
+ RunUnenrollment();
+
+ EXPECT_EQ(ConsumerManagementStage::UnenrollmentDMServerFailed(),
+ fake_service_->GetStage());
+ const chromeos::OwnerSettingsServiceChromeOS::ManagementSettings& settings =
+ fake_owner_settings_service_->last_settings();
+ EXPECT_EQ(policy::MANAGEMENT_MODE_CONSUMER_MANAGED, settings.management_mode);
+ EXPECT_EQ("fake_request_token", settings.request_token);
+ EXPECT_EQ("fake_device_id", settings.device_id);
+}
+
+} // namespace policy

Powered by Google App Engine
This is Rietveld 408576698