Chromium Code Reviews| Index: chrome/browser/chromeos/policy/consumer_management_service_unittest.cc |
| diff --git a/chrome/browser/chromeos/policy/consumer_management_service_unittest.cc b/chrome/browser/chromeos/policy/consumer_management_service_unittest.cc |
| index c4063d4d79b8b951dc41da0f7a3e0fa4cd1a2134..d96966c434f7f6d15b0678065deb5a512634d2d2 100644 |
| --- a/chrome/browser/chromeos/policy/consumer_management_service_unittest.cc |
| +++ b/chrome/browser/chromeos/policy/consumer_management_service_unittest.cc |
| @@ -7,6 +7,7 @@ |
| #include "base/bind.h" |
| #include "base/bind_helpers.h" |
| #include "base/callback.h" |
| +#include "base/memory/scoped_ptr.h" |
|
bartfab (slow)
2014/08/21 11:39:35
Actually, I missed it that the header already incl
davidyu
2014/08/22 05:14:13
Done.
|
| #include "base/prefs/pref_registry_simple.h" |
| #include "base/prefs/pref_service.h" |
| #include "base/prefs/testing_pref_service.h" |
| @@ -18,8 +19,10 @@ |
| #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" |
| #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
| #include "chrome/browser/chromeos/policy/device_cloud_policy_initializer.h" |
| +#include "chrome/browser/chromeos/policy/device_policy_builder.h" |
| #include "chrome/browser/chromeos/policy/enrollment_status_chromeos.h" |
| #include "chrome/browser/chromeos/policy/fake_device_cloud_policy_initializer.h" |
| +#include "chrome/browser/chromeos/settings/device_settings_test_helper.h" |
| #include "chrome/browser/notifications/notification_ui_manager.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/signin/fake_profile_oauth2_token_service.h" |
| @@ -28,6 +31,7 @@ |
| #include "chrome/browser/signin/signin_manager_factory.h" |
| #include "chrome/common/pref_names.h" |
| #include "chrome/test/base/browser_with_test_window_test.h" |
| +#include "chrome/test/base/scoped_testing_local_state.h" |
| #include "chrome/test/base/testing_browser_process.h" |
| #include "chrome/test/base/testing_profile.h" |
| #include "chrome/test/base/testing_profile_manager.h" |
| @@ -39,6 +43,7 @@ |
| #include "content/public/browser/notification_details.h" |
| #include "content/public/browser/notification_source.h" |
| #include "google_apis/gaia/google_service_auth_error.h" |
| +#include "policy/proto/device_management_backend.pb.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| @@ -47,6 +52,8 @@ using testing::NiceMock; |
| using testing::Return; |
| using testing::_; |
| +namespace em = enterprise_management; |
| + |
| namespace { |
| const char* kAttributeOwnerId = "consumer_management.owner_id"; |
| const char* kTestOwner = "test@chromium.org.test"; |
| @@ -79,7 +86,8 @@ class ConsumerManagementServiceTest : public BrowserWithTestWindowTest { |
| TestingBrowserProcess::GetGlobal())); |
| ASSERT_TRUE(testing_profile_manager_->SetUp()); |
| - service_.reset(new ConsumerManagementService(&mock_cryptohome_client_)); |
| + service_.reset(new ConsumerManagementService(&mock_cryptohome_client_, |
| + NULL)); |
| } |
| virtual void TearDown() OVERRIDE { |
| @@ -90,16 +98,15 @@ class ConsumerManagementServiceTest : public BrowserWithTestWindowTest { |
| BrowserWithTestWindowTest::TearDown(); |
| } |
| - ConsumerManagementService::ConsumerEnrollmentState GetEnrollmentState() { |
| - return static_cast<ConsumerManagementService::ConsumerEnrollmentState>( |
| + ConsumerManagementService::EnrollmentStage GetEnrollmentStage() { |
| + return static_cast<ConsumerManagementService::EnrollmentStage>( |
| g_browser_process->local_state()->GetInteger( |
| - prefs::kConsumerManagementEnrollmentState)); |
| + prefs::kConsumerManagementEnrollmentStage)); |
| } |
| - void SetEnrollmentState( |
| - ConsumerManagementService::ConsumerEnrollmentState state) { |
| + void SetEnrollmentStage(ConsumerManagementService::EnrollmentStage stage) { |
| g_browser_process->local_state()->SetInteger( |
| - prefs::kConsumerManagementEnrollmentState, state); |
| + prefs::kConsumerManagementEnrollmentStage, stage); |
| } |
| void MockGetBootAttribute( |
| @@ -130,37 +137,42 @@ class ConsumerManagementServiceTest : public BrowserWithTestWindowTest { |
| set_owner_status_ = status; |
| } |
| + // Variables for building the service. |
| NiceMock<chromeos::MockCryptohomeClient> mock_cryptohome_client_; |
| scoped_ptr<ConsumerManagementService> service_; |
| scoped_ptr<TestingProfileManager> testing_profile_manager_; |
| + |
| + // Variables for setting the return value or catching the arguments of mock |
| + // functions. |
| chromeos::DBusMethodCallStatus cryptohome_status_; |
| bool cryptohome_result_; |
| cryptohome::BaseReply cryptohome_reply_; |
| cryptohome::GetBootAttributeRequest get_boot_attribute_request_; |
| cryptohome::SetBootAttributeRequest set_boot_attribute_request_; |
| - |
| std::string owner_; |
| bool set_owner_status_; |
| }; |
| -TEST_F(ConsumerManagementServiceTest, CanGetEnrollmentState) { |
| - EXPECT_EQ(ConsumerManagementService::ENROLLMENT_NONE, |
| - service_->GetEnrollmentState()); |
| +TEST_F(ConsumerManagementServiceTest, CanGetEnrollmentStage) { |
| + EXPECT_EQ(ConsumerManagementService::ENROLLMENT_STAGE_NONE, |
| + service_->GetEnrollmentStage()); |
| - SetEnrollmentState(ConsumerManagementService::ENROLLMENT_REQUESTED); |
| + SetEnrollmentStage(ConsumerManagementService::ENROLLMENT_STAGE_REQUESTED); |
| - EXPECT_EQ(ConsumerManagementService::ENROLLMENT_REQUESTED, |
| - service_->GetEnrollmentState()); |
| + EXPECT_EQ(ConsumerManagementService::ENROLLMENT_STAGE_REQUESTED, |
| + service_->GetEnrollmentStage()); |
| } |
| -TEST_F(ConsumerManagementServiceTest, CanSetEnrollmentState) { |
| - EXPECT_EQ(ConsumerManagementService::ENROLLMENT_NONE, GetEnrollmentState()); |
| +TEST_F(ConsumerManagementServiceTest, CanSetEnrollmentStage) { |
| + EXPECT_EQ(ConsumerManagementService::ENROLLMENT_STAGE_NONE, |
| + GetEnrollmentStage()); |
| - service_->SetEnrollmentState(ConsumerManagementService::ENROLLMENT_REQUESTED); |
| + service_->SetEnrollmentStage( |
| + ConsumerManagementService::ENROLLMENT_STAGE_REQUESTED); |
| - EXPECT_EQ(ConsumerManagementService::ENROLLMENT_REQUESTED, |
| - GetEnrollmentState()); |
| + EXPECT_EQ(ConsumerManagementService::ENROLLMENT_STAGE_REQUESTED, |
| + GetEnrollmentStage()); |
| } |
| TEST_F(ConsumerManagementServiceTest, CanGetOwner) { |
| @@ -224,7 +236,7 @@ class ConsumerManagementServiceEnrollmentTest |
| // Set up MockUserManager. The first user will be the owner. |
| mock_user_manager_->AddUser(kTestOwner); |
| - // Return false for IsCurrentUserOwner() so that the enrollment state is not |
| + // Return false for IsCurrentUserOwner() so that the enrollment stage is not |
| // reset. |
| ON_CALL(*mock_user_manager_, IsCurrentUserOwner()) |
| .WillByDefault(Return(false)); |
| @@ -252,9 +264,10 @@ class ConsumerManagementServiceEnrollmentTest |
| SigninManagerFactory::GetForProfile(profile())-> |
| SetAuthenticatedUsername(kTestOwner); |
| - // The service should continue the enrollment process if the state is |
| - // ENROLLMENT_OWNER_STORED. |
| - SetEnrollmentState(ConsumerManagementService::ENROLLMENT_OWNER_STORED); |
| + // The service should continue the enrollment process if the stage is |
| + // ENROLLMENT_STAGE_OWNER_STORED. |
| + SetEnrollmentStage( |
| + ConsumerManagementService::ENROLLMENT_STAGE_OWNER_STORED); |
| } |
| virtual void TearDown() OVERRIDE { |
| @@ -293,22 +306,23 @@ TEST_F(ConsumerManagementServiceEnrollmentTest, EnrollsSuccessfully) { |
| RunEnrollmentTest(); |
| EXPECT_TRUE(fake_initializer_->was_start_enrollment_called()); |
| - EXPECT_EQ(ConsumerManagementService::ENROLLMENT_SUCCESS, |
| - GetEnrollmentState()); |
| + EXPECT_EQ(ConsumerManagementService::ENROLLMENT_STAGE_SUCCESS, |
| + GetEnrollmentStage()); |
| EXPECT_FALSE(HasEnrollmentNotification()); |
| } |
| TEST_F(ConsumerManagementServiceEnrollmentTest, |
| - ShowsDesktopNotificationAndResetsEnrollmentStateIfCurrentUserIsOwner) { |
| - EXPECT_EQ(ConsumerManagementService::ENROLLMENT_OWNER_STORED, |
| - GetEnrollmentState()); |
| + ShowsDesktopNotificationAndResetsEnrollmentStageIfCurrentUserIsOwner) { |
| + EXPECT_EQ(ConsumerManagementService::ENROLLMENT_STAGE_OWNER_STORED, |
| + GetEnrollmentStage()); |
| EXPECT_FALSE(HasEnrollmentNotification()); |
| EXPECT_CALL(*mock_user_manager_, IsCurrentUserOwner()) |
| .WillOnce(Return(true)); |
| RunEnrollmentTest(); |
| - EXPECT_EQ(ConsumerManagementService::ENROLLMENT_NONE, GetEnrollmentState()); |
| + EXPECT_EQ(ConsumerManagementService::ENROLLMENT_STAGE_NONE, |
| + GetEnrollmentStage()); |
| EXPECT_TRUE(HasEnrollmentNotification()); |
| } |
| @@ -332,8 +346,8 @@ TEST_F(ConsumerManagementServiceEnrollmentTest, FailsToGetAccessToken) { |
| GoogleServiceAuthError(GoogleServiceAuthError::SERVICE_ERROR)); |
| EXPECT_FALSE(fake_initializer_->was_start_enrollment_called()); |
| - EXPECT_EQ(ConsumerManagementService::ENROLLMENT_GET_TOKEN_FAILED, |
| - GetEnrollmentState()); |
| + EXPECT_EQ(ConsumerManagementService::ENROLLMENT_STAGE_GET_TOKEN_FAILED, |
| + GetEnrollmentStage()); |
| } |
| TEST_F(ConsumerManagementServiceEnrollmentTest, FailsToRegister) { |
| @@ -344,20 +358,76 @@ TEST_F(ConsumerManagementServiceEnrollmentTest, FailsToRegister) { |
| RunEnrollmentTest(); |
| EXPECT_TRUE(fake_initializer_->was_start_enrollment_called()); |
| - EXPECT_EQ(ConsumerManagementService::ENROLLMENT_DM_SERVER_FAILED, |
| - GetEnrollmentState()); |
| + EXPECT_EQ(ConsumerManagementService::ENROLLMENT_STAGE_DM_SERVER_FAILED, |
| + GetEnrollmentStage()); |
| } |
| TEST_F(ConsumerManagementServiceEnrollmentTest, |
| ShowsDesktopNotificationOnlyIfEnrollmentIsAlreadyCompleted) { |
| - SetEnrollmentState(ConsumerManagementService::ENROLLMENT_CANCELED); |
| + SetEnrollmentStage(ConsumerManagementService::ENROLLMENT_STAGE_CANCELED); |
| EXPECT_FALSE(HasEnrollmentNotification()); |
| RunEnrollmentTest(); |
| EXPECT_FALSE(fake_initializer_->was_start_enrollment_called()); |
| - EXPECT_EQ(ConsumerManagementService::ENROLLMENT_NONE, GetEnrollmentState()); |
| + EXPECT_EQ(ConsumerManagementService::ENROLLMENT_STAGE_NONE, |
| + GetEnrollmentStage()); |
| EXPECT_TRUE(HasEnrollmentNotification()); |
| } |
| +class ConsumerManagementServiceStatusTest |
| + : public chromeos::DeviceSettingsTestBase { |
| + public: |
| + ConsumerManagementServiceStatusTest() |
| + : testing_local_state_(TestingBrowserProcess::GetGlobal()), |
| + service_(NULL, &device_settings_service_) { |
| + } |
| + |
| + void SetEnrollmentStage(ConsumerManagementService::EnrollmentStage stage) { |
| + testing_local_state_.Get()->SetInteger( |
| + prefs::kConsumerManagementEnrollmentStage, stage); |
| + } |
| + |
| + void SetManagementMode(em::PolicyData::ManagementMode mode) { |
| + device_policy_.policy_data().set_management_mode(mode); |
| + device_policy_.Build(); |
| + device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob()); |
| + ReloadDeviceSettings(); |
| + } |
| + |
| + ScopedTestingLocalState testing_local_state_; |
| + ConsumerManagementService service_; |
| +}; |
| + |
| +TEST_F(ConsumerManagementServiceStatusTest, GetStatusWorks) { |
| + EXPECT_EQ(ConsumerManagementService::STATUS_UNKNOWN, service_.GetStatus()); |
| + |
| + SetManagementMode(em::PolicyData::NOT_MANAGED); |
| + SetEnrollmentStage(ConsumerManagementService::ENROLLMENT_STAGE_NONE); |
| + |
| + EXPECT_EQ(ConsumerManagementService::STATUS_UNENROLLED, service_.GetStatus()); |
| + |
| + SetEnrollmentStage(ConsumerManagementService::ENROLLMENT_STAGE_REQUESTED); |
| + |
| + EXPECT_EQ(ConsumerManagementService::STATUS_ENROLLING, service_.GetStatus()); |
| + |
| + SetManagementMode(em::PolicyData::CONSUMER_MANAGED); |
| + SetEnrollmentStage(ConsumerManagementService::ENROLLMENT_STAGE_SUCCESS); |
| + |
| + EXPECT_EQ(ConsumerManagementService::STATUS_ENROLLED, service_.GetStatus()); |
| + |
| + // TODO(davidyu): Test for STATUS_UNENROLLING when it is implemented. |
| + // http://crbug.com/353050. |
| +} |
| + |
| +TEST_F(ConsumerManagementServiceStatusTest, GetStatusStringWorks) { |
| + EXPECT_EQ("STATUS_UNKNOWN", |
| + ConsumerManagementService::GetStatusString( |
| + ConsumerManagementService::STATUS_UNKNOWN)); |
| + |
| + EXPECT_EQ("STATUS_UNENROLLED", |
| + ConsumerManagementService::GetStatusString( |
| + ConsumerManagementService::STATUS_UNENROLLED)); |
| +} |
| + |
| } // namespace policy |