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

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

Issue 468873002: Show a desktop notification when the enrollment is completed or failed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix broken build and un-inline virtual functions. Created 6 years, 4 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
« no previous file with comments | « chrome/browser/chromeos/policy/consumer_management_service.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 65d6a0a0f2084a6f74046c44d599eca899c424b3..c4063d4d79b8b951dc41da0f7a3e0fa4cd1a2134 100644
--- a/chrome/browser/chromeos/policy/consumer_management_service_unittest.cc
+++ b/chrome/browser/chromeos/policy/consumer_management_service_unittest.cc
@@ -8,6 +8,7 @@
#include "base/bind_helpers.h"
#include "base/callback.h"
#include "base/prefs/pref_registry_simple.h"
+#include "base/prefs/pref_service.h"
#include "base/prefs/testing_pref_service.h"
#include "base/run_loop.h"
#include "chrome/browser/browser_process.h"
@@ -19,15 +20,17 @@
#include "chrome/browser/chromeos/policy/device_cloud_policy_initializer.h"
#include "chrome/browser/chromeos/policy/enrollment_status_chromeos.h"
#include "chrome/browser/chromeos/policy/fake_device_cloud_policy_initializer.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"
#include "chrome/browser/signin/fake_profile_oauth2_token_service_builder.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
#include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/common/pref_names.h"
-#include "chrome/test/base/scoped_testing_local_state.h"
+#include "chrome/test/base/browser_with_test_window_test.h"
#include "chrome/test/base/testing_browser_process.h"
#include "chrome/test/base/testing_profile.h"
+#include "chrome/test/base/testing_profile_manager.h"
#include "chromeos/dbus/cryptohome/rpc.pb.h"
#include "chromeos/dbus/cryptohome_client.h"
#include "chromeos/dbus/mock_cryptohome_client.h"
@@ -35,7 +38,6 @@
#include "components/signin/core/browser/signin_manager_base.h"
#include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_source.h"
-#include "content/public/test/test_browser_thread_bundle.h"
#include "google_apis/gaia/google_service_auth_error.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -52,11 +54,10 @@ const char* kTestOwner = "test@chromium.org.test";
namespace policy {
-class ConsumerManagementServiceTest : public testing::Test {
+class ConsumerManagementServiceTest : public BrowserWithTestWindowTest {
public:
ConsumerManagementServiceTest()
- : testing_local_state_(TestingBrowserProcess::GetGlobal()),
- cryptohome_result_(false),
+ : cryptohome_result_(false),
set_owner_status_(false) {
ON_CALL(mock_cryptohome_client_, GetBootAttribute(_, _))
.WillByDefault(
@@ -72,22 +73,32 @@ class ConsumerManagementServiceTest : public testing::Test {
}
virtual void SetUp() OVERRIDE {
+ BrowserWithTestWindowTest::SetUp();
+
+ testing_profile_manager_.reset(new TestingProfileManager(
+ TestingBrowserProcess::GetGlobal()));
+ ASSERT_TRUE(testing_profile_manager_->SetUp());
+
service_.reset(new ConsumerManagementService(&mock_cryptohome_client_));
}
virtual void TearDown() OVERRIDE {
+ testing_profile_manager_.reset();
+
service_.reset();
+
+ BrowserWithTestWindowTest::TearDown();
}
ConsumerManagementService::ConsumerEnrollmentState GetEnrollmentState() {
return static_cast<ConsumerManagementService::ConsumerEnrollmentState>(
- testing_local_state_.Get()->GetInteger(
+ g_browser_process->local_state()->GetInteger(
prefs::kConsumerManagementEnrollmentState));
}
void SetEnrollmentState(
ConsumerManagementService::ConsumerEnrollmentState state) {
- testing_local_state_.Get()->SetInteger(
+ g_browser_process->local_state()->SetInteger(
prefs::kConsumerManagementEnrollmentState, state);
}
@@ -119,10 +130,10 @@ class ConsumerManagementServiceTest : public testing::Test {
set_owner_status_ = status;
}
- ScopedTestingLocalState testing_local_state_;
NiceMock<chromeos::MockCryptohomeClient> mock_cryptohome_client_;
scoped_ptr<ConsumerManagementService> service_;
+ scoped_ptr<TestingProfileManager> testing_profile_manager_;
chromeos::DBusMethodCallStatus cryptohome_status_;
bool cryptohome_result_;
cryptohome::BaseReply cryptohome_reply_;
@@ -209,7 +220,7 @@ class ConsumerManagementServiceEnrollmentTest
scoped_user_manager_enabler_(mock_user_manager_),
fake_initializer_(new FakeDeviceCloudPolicyInitializer()),
enrollment_status_(EnrollmentStatus::ForStatus(
- EnrollmentStatus::STATUS_SUCCESS)){
+ EnrollmentStatus::STATUS_SUCCESS)) {
// Set up MockUserManager. The first user will be the owner.
mock_user_manager_->AddUser(kTestOwner);
@@ -218,51 +229,60 @@ class ConsumerManagementServiceEnrollmentTest
ON_CALL(*mock_user_manager_, IsCurrentUserOwner())
.WillByDefault(Return(false));
- // Create test profile and set up FakeProfileOAuth2TokenService.
- TestingProfile::Builder builder;
- builder.AddTestingFactory(ProfileOAuth2TokenServiceFactory::GetInstance(),
- &BuildAutoIssuingFakeProfileOAuth2TokenService);
- testing_owner_profile_ = builder.Build();
- testing_owner_profile_->set_profile_name(kTestOwner);
-
- // Set up the authenticated user name and ID.
- SigninManagerFactory::GetForProfile(testing_owner_profile_.get())->
- SetAuthenticatedUsername(kTestOwner);
-
- // Issue a fake refresh token.
- GetFakeProfileOAuth2TokenService()->
- IssueRefreshTokenForUser(kTestOwner, "fake_token");
-
// Inject FakeDeviceCloudPolicyInitializer.
BrowserPolicyConnectorChromeOS* connector =
g_browser_process->platform_part()->browser_policy_connector_chromeos();
connector->SetDeviceCloudPolicyInitializerForTesting(
scoped_ptr<DeviceCloudPolicyInitializer>(fake_initializer_));
+ }
+
+ virtual void SetUp() OVERRIDE {
+ ConsumerManagementServiceTest::SetUp();
+
+ // Set up the testing profile.
+ profile()->set_profile_name(kTestOwner);
+
+ // Set up FakeProfileOAuth2TokenService and issue a fake refresh token.
+ ProfileOAuth2TokenServiceFactory::GetInstance()->SetTestingFactory(
+ profile(), &BuildAutoIssuingFakeProfileOAuth2TokenService);
+ GetFakeProfileOAuth2TokenService()->
+ IssueRefreshTokenForUser(kTestOwner, "fake_token");
+
+ // Set up the authenticated user name and ID.
+ SigninManagerFactory::GetForProfile(profile())->
+ SetAuthenticatedUsername(kTestOwner);
// The service should continue the enrollment process if the state is
// ENROLLMENT_OWNER_STORED.
SetEnrollmentState(ConsumerManagementService::ENROLLMENT_OWNER_STORED);
}
+ virtual void TearDown() OVERRIDE {
+ g_browser_process->notification_ui_manager()->CancelAll();
+
+ ConsumerManagementServiceTest::TearDown();
+ }
+
FakeProfileOAuth2TokenService* GetFakeProfileOAuth2TokenService() {
return static_cast<FakeProfileOAuth2TokenService*>(
- ProfileOAuth2TokenServiceFactory::GetForProfile(
- testing_owner_profile_.get()));
+ ProfileOAuth2TokenServiceFactory::GetForProfile(profile()));
+ }
+
+ bool HasEnrollmentNotification() {
+ return g_browser_process->notification_ui_manager()->
+ FindById("consumer_management.enroll");
}
void RunEnrollmentTest() {
// Send the profile prepared notification to continue the enrollment.
service_->Observe(chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED,
content::Source<void>(NULL), // Not used.
- content::Details<Profile>(testing_owner_profile_.get()));
+ content::Details<Profile>(profile()));
base::RunLoop().RunUntilIdle();
}
- content::TestBrowserThreadBundle thread_bundle_;
-
NiceMock<chromeos::MockUserManager>* mock_user_manager_;
chromeos::ScopedUserManagerEnabler scoped_user_manager_enabler_;
- scoped_ptr<TestingProfile> testing_owner_profile_;
FakeDeviceCloudPolicyInitializer* fake_initializer_;
EnrollmentStatus enrollment_status_;
};
@@ -275,19 +295,21 @@ TEST_F(ConsumerManagementServiceEnrollmentTest, EnrollsSuccessfully) {
EXPECT_TRUE(fake_initializer_->was_start_enrollment_called());
EXPECT_EQ(ConsumerManagementService::ENROLLMENT_SUCCESS,
GetEnrollmentState());
+ EXPECT_FALSE(HasEnrollmentNotification());
}
TEST_F(ConsumerManagementServiceEnrollmentTest,
- EnrollmentStateIsResetIfCurrentUserIsOwner) {
+ ShowsDesktopNotificationAndResetsEnrollmentStateIfCurrentUserIsOwner) {
EXPECT_EQ(ConsumerManagementService::ENROLLMENT_OWNER_STORED,
GetEnrollmentState());
-
+ EXPECT_FALSE(HasEnrollmentNotification());
EXPECT_CALL(*mock_user_manager_, IsCurrentUserOwner())
.WillOnce(Return(true));
RunEnrollmentTest();
EXPECT_EQ(ConsumerManagementService::ENROLLMENT_NONE, GetEnrollmentState());
+ EXPECT_TRUE(HasEnrollmentNotification());
}
TEST_F(ConsumerManagementServiceEnrollmentTest, FailsToGetAccessToken) {
@@ -326,15 +348,16 @@ TEST_F(ConsumerManagementServiceEnrollmentTest, FailsToRegister) {
GetEnrollmentState());
}
-TEST_F(ConsumerManagementServiceEnrollmentTest, ShowsDesktopNotificationOnly) {
+TEST_F(ConsumerManagementServiceEnrollmentTest,
+ ShowsDesktopNotificationOnlyIfEnrollmentIsAlreadyCompleted) {
SetEnrollmentState(ConsumerManagementService::ENROLLMENT_CANCELED);
+ EXPECT_FALSE(HasEnrollmentNotification());
RunEnrollmentTest();
- // TODO(davidyu): Check that the desktop notification was shown.
-
EXPECT_FALSE(fake_initializer_->was_start_enrollment_called());
EXPECT_EQ(ConsumerManagementService::ENROLLMENT_NONE, GetEnrollmentState());
+ EXPECT_TRUE(HasEnrollmentNotification());
}
} // namespace policy
« no previous file with comments | « chrome/browser/chromeos/policy/consumer_management_service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698