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

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

Issue 846453006: Switch DeviceCloudPolicyInvalidator to shared InvalidationService (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@f_1_442800_extract_affiliated_invalidation_service_provider
Patch Set: Fixed test. 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/device_cloud_policy_invalidator_unittest.cc
diff --git a/chrome/browser/chromeos/policy/device_cloud_policy_invalidator_unittest.cc b/chrome/browser/chromeos/policy/device_cloud_policy_invalidator_unittest.cc
index ab371660ccb9fcdacf665e0df9b9d055ebc0a910..0aa81c4ce3e326f06d1a9ea2b3c231e01e57a3d0 100644
--- a/chrome/browser/chromeos/policy/device_cloud_policy_invalidator_unittest.cc
+++ b/chrome/browser/chromeos/policy/device_cloud_policy_invalidator_unittest.cc
@@ -4,15 +4,9 @@
#include "chrome/browser/chromeos/policy/device_cloud_policy_invalidator.h"
-#include <string>
-
#include "base/memory/ref_counted.h"
#include "base/message_loop/message_loop_proxy.h"
-#include "base/run_loop.h"
#include "chrome/browser/browser_process_platform_part.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/chromeos/login/users/fake_user_manager.h"
-#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_manager_chromeos.h"
#include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h"
@@ -23,26 +17,16 @@
#include "chrome/browser/chromeos/settings/device_settings_service.h"
#include "chrome/browser/chromeos/settings/device_settings_test_helper.h"
#include "chrome/browser/invalidation/fake_invalidation_service.h"
-#include "chrome/browser/invalidation/profile_invalidation_provider_factory.h"
#include "chrome/browser/policy/cloud/cloud_policy_invalidator.h"
-#include "chrome/browser/profiles/profile.h"
#include "chrome/test/base/testing_browser_process.h"
#include "chrome/test/base/testing_profile_manager.h"
#include "chromeos/cryptohome/system_salt_getter.h"
#include "chromeos/dbus/dbus_thread_manager.h"
-#include "components/invalidation/invalidation_service.h"
-#include "components/invalidation/invalidator_state.h"
-#include "components/invalidation/profile_invalidation_provider.h"
-#include "components/invalidation/ticl_invalidation_service.h"
-#include "components/keyed_service/core/keyed_service.h"
#include "components/ownership/mock_owner_key_util.h"
-#include "components/policy/core/common/cloud/cloud_policy_client.h"
#include "components/policy/core/common/cloud/cloud_policy_constants.h"
#include "components/policy/core/common/cloud/cloud_policy_core.h"
+#include "components/policy/core/common/cloud/cloud_policy_store.h"
#include "components/policy/core/common/cloud/mock_cloud_policy_client.h"
-#include "content/public/browser/browser_context.h"
-#include "content/public/browser/notification_details.h"
-#include "content/public/browser/notification_service.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "net/url_request/url_request_context_getter.h"
#include "net/url_request/url_request_test_util.h"
@@ -52,24 +36,6 @@
namespace policy {
-namespace {
-
-const char kAffiliatedUserID1[] = "test_1@example.com";
-const char kAffiliatedUserID2[] = "test_2@example.com";
-const char kUnaffiliatedUserID[] = "test_2@other_domain.test";
-
-KeyedService* BuildProfileInvalidationProvider(
- content::BrowserContext* context) {
- scoped_ptr<invalidation::FakeInvalidationService> invalidation_service(
- new invalidation::FakeInvalidationService);
- invalidation_service->SetInvalidatorState(
- syncer::TRANSIENT_INVALIDATION_ERROR);
- return new invalidation::ProfileInvalidationProvider(
- invalidation_service.Pass());
-}
-
-} // namespace
-
class DeviceCloudPolicyInvalidatorTest : public testing::Test {
public:
DeviceCloudPolicyInvalidatorTest();
@@ -79,45 +45,24 @@ class DeviceCloudPolicyInvalidatorTest : public testing::Test {
void SetUp() override;
void TearDown() override;
- // Ownership is not passed. The Profile is owned by the global ProfileManager.
- Profile* LogInAndReturnProfile(const std::string& user_id);
-
- invalidation::TiclInvalidationService* GetDeviceInvalidationService();
- bool HasDeviceInvalidationServiceObserver() const;
-
- invalidation::FakeInvalidationService* GetProfileInvalidationService(
- Profile* profile);
- int GetProfileInvalidationServiceObserverCount() const;
-
- const invalidation::InvalidationService* GetInvalidationService() const;
- CloudPolicyInvalidator* GetCloudPolicyInvalidator() const;
-
- void ConnectDeviceInvalidationService();
-
protected:
DevicePolicyBuilder device_policy_;
private:
content::TestBrowserThreadBundle thread_bundle_;
scoped_refptr<net::URLRequestContextGetter> system_request_context_;
- chromeos::FakeUserManager* fake_user_manager_;
- chromeos::ScopedUserManagerEnabler user_manager_enabler_;
ScopedStubEnterpriseInstallAttributes install_attributes_;
scoped_ptr<chromeos::ScopedTestDeviceSettingsService>
test_device_settings_service_;
scoped_ptr<chromeos::ScopedTestCrosSettings> test_cros_settings_;
chromeos::DeviceSettingsTestHelper device_settings_test_helper_;
TestingProfileManager profile_manager_;
-
- scoped_ptr<DeviceCloudPolicyInvalidator> invalidator_;
};
DeviceCloudPolicyInvalidatorTest::DeviceCloudPolicyInvalidatorTest()
: thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP),
system_request_context_(new net::TestURLRequestContextGetter(
base::MessageLoopProxy::current())),
- fake_user_manager_(new chromeos::FakeUserManager),
- user_manager_enabler_(fake_user_manager_),
install_attributes_("example.com",
"user@example.com",
"device_id",
@@ -160,19 +105,9 @@ void DeviceCloudPolicyInvalidatorTest::SetUp() {
core();
core->Connect(policy_client.Pass());
core->StartRefreshScheduler();
-
- invalidation::ProfileInvalidationProviderFactory::GetInstance()->
- RegisterTestingFactory(BuildProfileInvalidationProvider);
-
- invalidator_.reset(new DeviceCloudPolicyInvalidator);
}
void DeviceCloudPolicyInvalidatorTest::TearDown() {
- invalidator_.reset();
- base::RunLoop().RunUntilIdle();
-
- invalidation::ProfileInvalidationProviderFactory::GetInstance()->
- RegisterTestingFactory(nullptr);
chromeos::DeviceSettingsService::Get()->UnsetSessionManager();
TestingBrowserProcess::GetGlobal()->SetBrowserPolicyConnector(nullptr);
chromeos::DeviceOAuth2TokenServiceFactory::Shutdown();
@@ -180,392 +115,34 @@ void DeviceCloudPolicyInvalidatorTest::TearDown() {
chromeos::SystemSaltGetter::Shutdown();
}
-Profile* DeviceCloudPolicyInvalidatorTest::LogInAndReturnProfile(
- const std::string& user_id) {
- fake_user_manager_->AddUser(user_id);
- Profile* profile = profile_manager_.CreateTestingProfile(user_id);
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED,
- content::NotificationService::AllSources(),
- content::Details<Profile>(profile));
- return profile;
-}
-
-invalidation::TiclInvalidationService*
-DeviceCloudPolicyInvalidatorTest::GetDeviceInvalidationService() {
- return invalidator_->device_invalidation_service_.get();
-}
-
-bool DeviceCloudPolicyInvalidatorTest::HasDeviceInvalidationServiceObserver()
- const {
- return invalidator_->device_invalidation_service_observer_.get();
-}
-
-invalidation::FakeInvalidationService*
-DeviceCloudPolicyInvalidatorTest::GetProfileInvalidationService(
- Profile* profile) {
- invalidation::ProfileInvalidationProvider* invalidation_provider =
- static_cast<invalidation::ProfileInvalidationProvider*>(
- invalidation::ProfileInvalidationProviderFactory::GetInstance()->
- GetServiceForBrowserContext(profile, false));
- if (!invalidation_provider)
- return nullptr;
- return static_cast<invalidation::FakeInvalidationService*>(
- invalidation_provider->GetInvalidationService());
-}
-
-int DeviceCloudPolicyInvalidatorTest::
- GetProfileInvalidationServiceObserverCount() const {
- return invalidator_->profile_invalidation_service_observers_.size();
-}
-
-const invalidation::InvalidationService*
-DeviceCloudPolicyInvalidatorTest::GetInvalidationService() const {
- return invalidator_->invalidation_service_;
-}
-
-CloudPolicyInvalidator*
-DeviceCloudPolicyInvalidatorTest::GetCloudPolicyInvalidator() const {
- return invalidator_->invalidator_.get();
-}
-
-void DeviceCloudPolicyInvalidatorTest::ConnectDeviceInvalidationService() {
- const int per_profile_invalidation_service_observer_count =
- GetProfileInvalidationServiceObserverCount();
-
- // Verify that a device-global invalidation service has been created.
- ASSERT_TRUE(GetDeviceInvalidationService());
- EXPECT_TRUE(HasDeviceInvalidationServiceObserver());
-
- // Verify that no new per-profile invalidation service observers have been
- // created.
- EXPECT_EQ(per_profile_invalidation_service_observer_count,
- GetProfileInvalidationServiceObserverCount());
-
- // Verify that no invalidator exists yet
- EXPECT_FALSE(GetCloudPolicyInvalidator());
- EXPECT_FALSE(GetInvalidationService());
-
- // Indicate that the device-global invalidation service has connected.
- GetDeviceInvalidationService()->OnInvalidatorStateChange(
- syncer::INVALIDATIONS_ENABLED);
- base::RunLoop().RunUntilIdle();
-
- // Verify that the device-global invalidation service still exists.
- EXPECT_TRUE(GetDeviceInvalidationService());
- EXPECT_TRUE(HasDeviceInvalidationServiceObserver());
-
- // Verify that an invalidator backed by the device-global invalidation service
- // has been created.
- EXPECT_TRUE(GetCloudPolicyInvalidator());
- EXPECT_EQ(GetDeviceInvalidationService(), GetInvalidationService());
-}
-
-// Verifies that a DeviceCloudPolicyInvalidator backed by a device-global
-// invalidation service is created/destroyed as the service
-// connects/disconnects.
-TEST_F(DeviceCloudPolicyInvalidatorTest, UseDeviceInvalidationService) {
- // Verify that an invalidator backed by the device-global invalidation service
- // is created when the service connects.
- ConnectDeviceInvalidationService();
- ASSERT_TRUE(GetDeviceInvalidationService());
- EXPECT_EQ(GetDeviceInvalidationService(), GetInvalidationService());
-
- // Indicate that the device-global invalidation service has disconnected.
- GetDeviceInvalidationService()->OnInvalidatorStateChange(
- syncer::INVALIDATION_CREDENTIALS_REJECTED);
- base::RunLoop().RunUntilIdle();
-
- // Verify that the device-global invalidation service still exists.
- EXPECT_TRUE(GetDeviceInvalidationService());
- EXPECT_TRUE(HasDeviceInvalidationServiceObserver());
-
- // Verify that the invalidator has been destroyed.
- EXPECT_FALSE(GetCloudPolicyInvalidator());
- EXPECT_FALSE(GetInvalidationService());
-}
-
-// Verifies that when the per-profile invalidation service for an affiliated
-// user connect/disconnects, a DeviceCloudPolicyInvalidator backed by it is
-// created/destroyed.
-TEST_F(DeviceCloudPolicyInvalidatorTest,
- UseAffiliatedProfileInvalidationService) {
- // Log in as an affiliated user.
- Profile* profile = LogInAndReturnProfile(kAffiliatedUserID1);
- ASSERT_TRUE(profile);
-
- // Verify that a device-global invalidation service has been created.
- EXPECT_TRUE(GetDeviceInvalidationService());
- EXPECT_TRUE(HasDeviceInvalidationServiceObserver());
-
- // Verify that a per-profile invalidation service has been created.
- invalidation::FakeInvalidationService* profile_invalidation_service =
- GetProfileInvalidationService(profile);
- ASSERT_TRUE(profile_invalidation_service);
- EXPECT_EQ(1, GetProfileInvalidationServiceObserverCount());
-
- // Verify that no invalidator exists yet.
- EXPECT_FALSE(GetCloudPolicyInvalidator());
- EXPECT_FALSE(GetInvalidationService());
-
- // Indicate that the per-profile invalidation service has connected.
- profile_invalidation_service->SetInvalidatorState(
- syncer::INVALIDATIONS_ENABLED);
-
- // Verify that the device-global invalidator has been destroyed.
- EXPECT_FALSE(GetDeviceInvalidationService());
- EXPECT_FALSE(HasDeviceInvalidationServiceObserver());
-
- // Verify that a per-profile invalidation service still exists.
- profile_invalidation_service = GetProfileInvalidationService(profile);
- ASSERT_TRUE(profile_invalidation_service);
- EXPECT_EQ(1, GetProfileInvalidationServiceObserverCount());
-
- // Verify that an invalidator backed by the per-profile invalidation service
- // has been created.
- EXPECT_TRUE(GetCloudPolicyInvalidator());
- EXPECT_EQ(profile_invalidation_service, GetInvalidationService());
-
- // Indicate that the per-profile invalidation service has disconnected.
- profile_invalidation_service->SetInvalidatorState(
- syncer::INVALIDATION_CREDENTIALS_REJECTED);
-
- // Verify that a device-global invalidation service has been created.
- EXPECT_TRUE(GetDeviceInvalidationService());
- EXPECT_TRUE(HasDeviceInvalidationServiceObserver());
-
- // Verify that a per-profile invalidation service still exists.
- profile_invalidation_service = GetProfileInvalidationService(profile);
- EXPECT_TRUE(profile_invalidation_service);
- EXPECT_EQ(1, GetProfileInvalidationServiceObserverCount());
-
- // Verify that the invalidator has been destroyed.
- EXPECT_FALSE(GetCloudPolicyInvalidator());
- EXPECT_FALSE(GetInvalidationService());
-}
-
-// Verifies that even if the per-profile invalidation service for an
-// unaffiliated user connects, no DeviceCloudPolicyInvalidator backed by it is
-// created.
-TEST_F(DeviceCloudPolicyInvalidatorTest,
- DoNotUseUnaffiliatedProfileInvalidationService) {
- // Log in as an unaffiliated user.
- Profile* profile = LogInAndReturnProfile(kUnaffiliatedUserID);
- ASSERT_TRUE(profile);
-
- // Verify that a device-global invalidation service has been created.
- EXPECT_TRUE(GetDeviceInvalidationService());
- EXPECT_TRUE(HasDeviceInvalidationServiceObserver());
-
- // Verify that a per-profile invalidation service has been created.
- invalidation::FakeInvalidationService* profile_invalidation_service =
- GetProfileInvalidationService(profile);
- ASSERT_TRUE(profile_invalidation_service);
- EXPECT_EQ(0, GetProfileInvalidationServiceObserverCount());
-
- // Verify that no invalidator exists yet.
- EXPECT_FALSE(GetCloudPolicyInvalidator());
- EXPECT_FALSE(GetInvalidationService());
-
- // Indicate that the per-profile invalidation service has connected.
- profile_invalidation_service->SetInvalidatorState(
- syncer::INVALIDATIONS_ENABLED);
-
- // Verify that the device-global invalidator still exists.
- EXPECT_TRUE(GetDeviceInvalidationService());
- EXPECT_TRUE(HasDeviceInvalidationServiceObserver());
-
- // Verify that a per-profile invalidation service still exists.
- profile_invalidation_service = GetProfileInvalidationService(profile);
- EXPECT_TRUE(profile_invalidation_service);
- EXPECT_EQ(0, GetProfileInvalidationServiceObserverCount());
-
- // Verify that no invalidator has been created.
- EXPECT_FALSE(GetCloudPolicyInvalidator());
- EXPECT_FALSE(GetInvalidationService());
-}
-
-// Verifies that when the per-profile invalidation service for an affiliated
-// user connects, a DeviceCloudPolicyInvalidator backed by it replaces the
-// current DeviceCloudPolicyInvalidator backed by a device-global invalidation
-// service. Also verifies that the device-global invalidation service is
-// destroyed at this point and the highest handled invalidation version is
-// preserved when switching invalidation services.
-TEST_F(DeviceCloudPolicyInvalidatorTest,
- SwitchToAffiliatedProfileInvalidationService) {
- CloudPolicyStore* store = static_cast<CloudPolicyStore*>(
- TestingBrowserProcess::GetGlobal()->platform_part()->
- browser_policy_connector_chromeos()->GetDeviceCloudPolicyManager()->
- device_store());
- ASSERT_TRUE(store);
-
- // Verify that an invalidator backed by the device-global invalidation service
- // is created when the service connects.
- ConnectDeviceInvalidationService();
- CloudPolicyInvalidator* invalidator = GetCloudPolicyInvalidator();
- ASSERT_TRUE(invalidator);
- EXPECT_EQ(GetDeviceInvalidationService(), GetInvalidationService());
-
- // Verify that the invalidator's highest handled invalidation version starts
- // out as zero.
- EXPECT_EQ(0, invalidator->highest_handled_invalidation_version());
-
- // Handle an invalidation with version 1. Verify that the invalidator's
- // highest handled invalidation version is updated accordingly.
- store->Store(device_policy_.policy(), 1);
- invalidator->OnStoreLoaded(store);
- EXPECT_EQ(1, invalidator->highest_handled_invalidation_version());
-
- // Log in as an affiliated user.
- Profile* profile = LogInAndReturnProfile(kAffiliatedUserID1);
- ASSERT_TRUE(profile);
-
- // Verify that the device-global invalidation service still exists.
- EXPECT_TRUE(GetDeviceInvalidationService());
- EXPECT_TRUE(HasDeviceInvalidationServiceObserver());
-
- // Verify that a per-profile invalidation service has been created.
- invalidation::FakeInvalidationService* profile_invalidation_service =
- GetProfileInvalidationService(profile);
- ASSERT_TRUE(profile_invalidation_service);
- EXPECT_EQ(1, GetProfileInvalidationServiceObserverCount());
-
- // Verify that an invalidator backed by the device-global invalidation service
- // still exists.
- EXPECT_TRUE(GetCloudPolicyInvalidator());
- EXPECT_EQ(GetDeviceInvalidationService(), GetInvalidationService());
-
- // Indicate that the per-profile invalidation service has connected.
- profile_invalidation_service->SetInvalidatorState(
- syncer::INVALIDATIONS_ENABLED);
-
- // Verify that the device-global invalidator has been destroyed.
- EXPECT_FALSE(GetDeviceInvalidationService());
- EXPECT_FALSE(HasDeviceInvalidationServiceObserver());
-
- // Verify that a per-profile invalidation service still exists.
- profile_invalidation_service = GetProfileInvalidationService(profile);
- EXPECT_TRUE(profile_invalidation_service);
- EXPECT_EQ(1, GetProfileInvalidationServiceObserverCount());
-
- // Verify that an invalidator backed by the per-profile invalidation service
- // has been created.
- invalidator = GetCloudPolicyInvalidator();
- ASSERT_TRUE(invalidator);
- EXPECT_EQ(profile_invalidation_service, GetInvalidationService());
-
- // Verify that the invalidator's highest handled invalidation version starts
- // out as one.
- EXPECT_EQ(1, invalidator->highest_handled_invalidation_version());
-}
-
-// Verifies that when the per-profile invalidation service for an unaffiliated
-// user connects, the current DeviceCloudPolicyInvalidator backed by a
-// device-global invalidation service is not destroyed and replaced.
-TEST_F(DeviceCloudPolicyInvalidatorTest,
- DoNotSwitchToUnaffiliatedProfileInvalidationService) {
- // Verify that an invalidator backed by the device-global invalidation service
- // is created when the service connects.
- ConnectDeviceInvalidationService();
- CloudPolicyInvalidator* invalidator = GetCloudPolicyInvalidator();
- ASSERT_TRUE(invalidator);
- EXPECT_EQ(GetDeviceInvalidationService(), GetInvalidationService());
-
- // Verify that the invalidator's highest handled invalidation version starts
- // out as zero.
- EXPECT_EQ(0, invalidator->highest_handled_invalidation_version());
-
- // Log in as an unaffiliated user.
- Profile* profile = LogInAndReturnProfile(kUnaffiliatedUserID);
- ASSERT_TRUE(profile);
-
- // Verify that the device-global invalidation service still exists.
- EXPECT_TRUE(GetDeviceInvalidationService());
- EXPECT_TRUE(HasDeviceInvalidationServiceObserver());
-
- // Verify that a per-profile invalidation service has been created.
- invalidation::FakeInvalidationService* profile_invalidation_service =
- GetProfileInvalidationService(profile);
- ASSERT_TRUE(profile_invalidation_service);
- EXPECT_EQ(0, GetProfileInvalidationServiceObserverCount());
-
- // Verify that an invalidator backed by the device-global invalidation service
- // still exists.
- EXPECT_TRUE(GetCloudPolicyInvalidator());
- EXPECT_EQ(GetDeviceInvalidationService(), GetInvalidationService());
-
- // Indicate that the per-profile invalidation service has connected.
- profile_invalidation_service->SetInvalidatorState(
- syncer::INVALIDATIONS_ENABLED);
-
- // Verify that the device-global invalidator still exists.
- EXPECT_TRUE(GetDeviceInvalidationService());
- EXPECT_TRUE(HasDeviceInvalidationServiceObserver());
-
- // Verify that a per-profile invalidation service still exists.
- profile_invalidation_service = GetProfileInvalidationService(profile);
- EXPECT_TRUE(profile_invalidation_service);
- EXPECT_EQ(0, GetProfileInvalidationServiceObserverCount());
-
- // Verify that an invalidator backed by the device-global invalidation service
- // still exists.
- EXPECT_TRUE(GetCloudPolicyInvalidator());
- EXPECT_EQ(GetDeviceInvalidationService(), GetInvalidationService());
-}
-
-// Verifies that when the per-profile invalidation service backing the current
-// DeviceCloudPolicyInvalidator disconnects and no other connected invalidation
-// service is available for use, a device-global invalidation service is
-// created. Also verifies that when this service connects, a
-// DeviceCloudPolicyInvalidator backed by it is created and the highest handled
+// Verifies that an invalidator is created/destroyed as an invalidation service
+// becomes available/unavailable. Also verifies that the highest handled
// invalidation version is preserved when switching invalidation services.
-TEST_F(DeviceCloudPolicyInvalidatorTest, SwitchToDeviceInvalidationService) {
+TEST_F(DeviceCloudPolicyInvalidatorTest, CreateUseDestroy) {
CloudPolicyStore* store = static_cast<CloudPolicyStore*>(
TestingBrowserProcess::GetGlobal()->platform_part()->
browser_policy_connector_chromeos()->GetDeviceCloudPolicyManager()->
device_store());
ASSERT_TRUE(store);
- // Log in as an affiliated user.
- Profile* profile = LogInAndReturnProfile(kAffiliatedUserID1);
- ASSERT_TRUE(profile);
+ AffiliatedInvalidationServiceProvider provider;
+ DeviceCloudPolicyInvalidator device_policy_invalidator(&provider);
- // Verify that a device-global invalidation service has been created.
- EXPECT_TRUE(GetDeviceInvalidationService());
- EXPECT_TRUE(HasDeviceInvalidationServiceObserver());
+ // Verify that no invalidator exists initially.
+ EXPECT_FALSE(device_policy_invalidator.GetInvalidatorForTest());
- // Verify that a per-profile invalidation service has been created.
- invalidation::FakeInvalidationService* profile_invalidation_service =
- GetProfileInvalidationService(profile);
- ASSERT_TRUE(profile_invalidation_service);
- EXPECT_EQ(1, GetProfileInvalidationServiceObserverCount());
+ // Make a first invalidation service available.
+ invalidation::FakeInvalidationService invalidation_service_1;
+ device_policy_invalidator.OnInvalidationServiceSet(&invalidation_service_1);
- // Verify that no invalidator exists yet.
- EXPECT_FALSE(GetCloudPolicyInvalidator());
- EXPECT_FALSE(GetInvalidationService());
-
- // Indicate that the per-profile invalidation service has connected.
- profile_invalidation_service->SetInvalidatorState(
- syncer::INVALIDATIONS_ENABLED);
-
- // Verify that the device-global invalidator has been destroyed.
- EXPECT_FALSE(GetDeviceInvalidationService());
- EXPECT_FALSE(HasDeviceInvalidationServiceObserver());
-
- // Verify that a per-profile invalidation service still exists.
- profile_invalidation_service = GetProfileInvalidationService(profile);
- ASSERT_TRUE(profile_invalidation_service);
- EXPECT_EQ(1, GetProfileInvalidationServiceObserverCount());
-
- // Verify that an invalidator backed by the per-profile invalidation service
- // has been created.
- CloudPolicyInvalidator* invalidator = GetCloudPolicyInvalidator();
+ // Verify that an invalidator backed by the first invalidation service has
+ // been created and its highest handled invalidation version starts out as 0.
+ CloudPolicyInvalidator* invalidator =
+ device_policy_invalidator.GetInvalidatorForTest();
ASSERT_TRUE(invalidator);
- EXPECT_EQ(profile_invalidation_service, GetInvalidationService());
-
- // Verify that the invalidator's highest handled invalidation version starts
- // out as zero.
EXPECT_EQ(0, invalidator->highest_handled_invalidation_version());
+ EXPECT_EQ(&invalidation_service_1,
+ invalidator->invalidation_service_for_test());
// Handle an invalidation with version 1. Verify that the invalidator's
// highest handled invalidation version is updated accordingly.
@@ -573,174 +150,39 @@ TEST_F(DeviceCloudPolicyInvalidatorTest, SwitchToDeviceInvalidationService) {
invalidator->OnStoreLoaded(store);
EXPECT_EQ(1, invalidator->highest_handled_invalidation_version());
- // Indicate that the per-profile invalidation service has disconnected.
- profile_invalidation_service->SetInvalidatorState(
- syncer::INVALIDATION_CREDENTIALS_REJECTED);
+ // Make the first invalidation service unavailable. Verify that the
+ // invalidator is destroyed.
+ device_policy_invalidator.OnInvalidationServiceSet(nullptr);
+ EXPECT_FALSE(device_policy_invalidator.GetInvalidatorForTest());
- // Verify that a device-global invalidation service has been created.
- EXPECT_TRUE(GetDeviceInvalidationService());
- EXPECT_TRUE(HasDeviceInvalidationServiceObserver());
+ // Make a second invalidation service available.
+ invalidation::FakeInvalidationService invalidation_service_2;
+ device_policy_invalidator.OnInvalidationServiceSet(&invalidation_service_2);
- // Verify that a per-profile invalidation service still exists.
- profile_invalidation_service = GetProfileInvalidationService(profile);
- EXPECT_TRUE(profile_invalidation_service);
- EXPECT_EQ(1, GetProfileInvalidationServiceObserverCount());
-
- // Verify that the invalidator has been destroyed.
- EXPECT_FALSE(GetCloudPolicyInvalidator());
- EXPECT_FALSE(GetInvalidationService());
-
- // Verify that an invalidator backed by the device-global invalidation service
- // is created when the service connects.
- ConnectDeviceInvalidationService();
- invalidator = GetCloudPolicyInvalidator();
+ // Verify that an invalidator backed by the second invalidation service has
+ // been created and its highest handled invalidation version starts out as 1.
+ invalidator = device_policy_invalidator.GetInvalidatorForTest();
ASSERT_TRUE(invalidator);
- EXPECT_EQ(GetDeviceInvalidationService(), GetInvalidationService());
-
- // Verify that the invalidator's highest handled invalidation version starts
- // out as one.
EXPECT_EQ(1, invalidator->highest_handled_invalidation_version());
-}
-
-// Verifies that when the per-profile invalidation service backing the current
-// DeviceCloudPolicyInvalidator disconnects and another connected per-profile
-// invalidation service is available for use, a DeviceCloudPolicyInvalidator
-// backed by that service is created. Also verifies that the highest handled
-// invalidation version is preserved when switching invalidation services.
-TEST_F(DeviceCloudPolicyInvalidatorTest,
- SwitchBetweenAffiliatedProfileInvalidationServices) {
- CloudPolicyStore* store = static_cast<CloudPolicyStore*>(
- TestingBrowserProcess::GetGlobal()->platform_part()->
- browser_policy_connector_chromeos()->GetDeviceCloudPolicyManager()->
- device_store());
- ASSERT_TRUE(store);
-
- // Verify that a device-global invalidation service has been created.
- EXPECT_TRUE(GetDeviceInvalidationService());
- EXPECT_TRUE(HasDeviceInvalidationServiceObserver());
-
- // Verify that no invalidator exists yet.
- EXPECT_FALSE(GetCloudPolicyInvalidator());
- EXPECT_FALSE(GetInvalidationService());
-
- // Log in as a first affiliated user.
- Profile* profile_1 = LogInAndReturnProfile(kAffiliatedUserID1);
- ASSERT_TRUE(profile_1);
-
- // Verify that the device-global invalidation service still exists.
- EXPECT_TRUE(GetDeviceInvalidationService());
- EXPECT_TRUE(HasDeviceInvalidationServiceObserver());
-
- // Verify that a per-profile invalidation service has been created for the
- // first user.
- invalidation::FakeInvalidationService* profile_1_invalidation_service =
- GetProfileInvalidationService(profile_1);
- ASSERT_TRUE(profile_1_invalidation_service);
- EXPECT_EQ(1, GetProfileInvalidationServiceObserverCount());
-
- // Verify that no invalidator has been created.
- EXPECT_FALSE(GetCloudPolicyInvalidator());
- EXPECT_FALSE(GetInvalidationService());
-
- // Indicate that the first user's per-profile invalidation service has
- // connected.
- profile_1_invalidation_service->SetInvalidatorState(
- syncer::INVALIDATIONS_ENABLED);
-
- // Verify that the device-global invalidator has been destroyed.
- EXPECT_FALSE(GetDeviceInvalidationService());
- EXPECT_FALSE(HasDeviceInvalidationServiceObserver());
-
- // Verify that a per-profile invalidation service still exists for the first
- // user.
- profile_1_invalidation_service = GetProfileInvalidationService(profile_1);
- EXPECT_TRUE(profile_1_invalidation_service);
- EXPECT_EQ(1, GetProfileInvalidationServiceObserverCount());
-
- // Verify that an invalidator backed by the first user's per-profile
- // invalidation service has been created.
- CloudPolicyInvalidator* invalidator = GetCloudPolicyInvalidator();
+ EXPECT_EQ(&invalidation_service_2,
+ invalidator->invalidation_service_for_test());
+
+ // Make the first invalidation service available again. This implies that the
+ // second invalidation service is no longer available.
+ device_policy_invalidator.OnInvalidationServiceSet(&invalidation_service_1);
+
+ // Verify that the invalidator backed by the second invalidation service was
+ // destroyed and an invalidation backed by the first invalidation service has
+ // been created instead. Also verify that its highest handled invalidation
+ // version starts out as 1.
+ invalidator = device_policy_invalidator.GetInvalidatorForTest();
ASSERT_TRUE(invalidator);
- EXPECT_EQ(profile_1_invalidation_service, GetInvalidationService());
-
- // Verify that the invalidator's highest handled invalidation version starts
- // out as zero.
- EXPECT_EQ(0, invalidator->highest_handled_invalidation_version());
-
- // Handle an invalidation with version 1. Verify that the invalidator's
- // highest handled invalidation version is updated accordingly.
- store->Store(device_policy_.policy(), 1);
- invalidator->OnStoreLoaded(store);
EXPECT_EQ(1, invalidator->highest_handled_invalidation_version());
+ EXPECT_EQ(&invalidation_service_1,
+ invalidator->invalidation_service_for_test());
- // Log in as a second affiliated user.
- Profile* profile_2 = LogInAndReturnProfile(kAffiliatedUserID2);
- ASSERT_TRUE(profile_2);
-
- // Verify that the device-global invalidator still does not exist.
- EXPECT_FALSE(GetDeviceInvalidationService());
- EXPECT_FALSE(HasDeviceInvalidationServiceObserver());
-
- // Verify that a per-profile invalidation service still exists for the first
- // user and one has been created for the second user.
- profile_1_invalidation_service = GetProfileInvalidationService(profile_1);
- EXPECT_TRUE(profile_1_invalidation_service);
- invalidation::FakeInvalidationService* profile_2_invalidation_service =
- GetProfileInvalidationService(profile_2);
- ASSERT_TRUE(profile_2_invalidation_service);
- EXPECT_EQ(2, GetProfileInvalidationServiceObserverCount());
-
- // Verify that an invalidator backed by the first user's per-profile
- // invalidation service still exists.
- EXPECT_TRUE(GetCloudPolicyInvalidator());
- EXPECT_EQ(profile_1_invalidation_service, GetInvalidationService());
-
- // Indicate that the second user's per-profile invalidation service has
- // connected.
- profile_2_invalidation_service->SetInvalidatorState(
- syncer::INVALIDATIONS_ENABLED);
-
- // Verify that the device-global invalidator still does not exist.
- EXPECT_FALSE(GetDeviceInvalidationService());
- EXPECT_FALSE(HasDeviceInvalidationServiceObserver());
-
- // Verify that per-profile invalidation services still exist for both users.
- profile_1_invalidation_service = GetProfileInvalidationService(profile_1);
- ASSERT_TRUE(profile_1_invalidation_service);
- profile_2_invalidation_service = GetProfileInvalidationService(profile_2);
- EXPECT_TRUE(profile_2_invalidation_service);
- EXPECT_EQ(2, GetProfileInvalidationServiceObserverCount());
-
- // Verify that an invalidator backed by the first user's per-profile
- // invalidation service still exists.
- EXPECT_TRUE(GetCloudPolicyInvalidator());
- EXPECT_EQ(profile_1_invalidation_service, GetInvalidationService());
-
- // Indicate that the first user's per-profile invalidation service has
- // disconnected.
- profile_1_invalidation_service->SetInvalidatorState(
- syncer::INVALIDATION_CREDENTIALS_REJECTED);
-
- // Verify that the device-global invalidator still does not exist.
- EXPECT_FALSE(GetDeviceInvalidationService());
- EXPECT_FALSE(HasDeviceInvalidationServiceObserver());
-
- // Verify that per-profile invalidation services still exist for both users.
- profile_1_invalidation_service = GetProfileInvalidationService(profile_1);
- EXPECT_TRUE(profile_1_invalidation_service);
- profile_2_invalidation_service = GetProfileInvalidationService(profile_2);
- ASSERT_TRUE(profile_2_invalidation_service);
- EXPECT_EQ(2, GetProfileInvalidationServiceObserverCount());
-
- // Verify that an invalidator backed by the second user's per-profile
- // invalidation service has been created.
- invalidator = GetCloudPolicyInvalidator();
- ASSERT_TRUE(invalidator);
- EXPECT_EQ(profile_2_invalidation_service, GetInvalidationService());
-
- // Verify that the invalidator's highest handled invalidation version starts
- // out as one.
- EXPECT_EQ(1, invalidator->highest_handled_invalidation_version());
+ provider.Shutdown();
+ device_policy_invalidator.OnInvalidationServiceSet(nullptr);
}
} // namespace policy

Powered by Google App Engine
This is Rietveld 408576698