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

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

Issue 822523003: Implement device-local account policy pushing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@f_2_442800_switch_device_cloud_policy_invalidator
Patch Set: Rebased. Created 5 years, 10 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/affiliated_invalidation_service_provider_unittest.cc
diff --git a/chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_unittest.cc b/chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_unittest.cc
deleted file mode 100644
index ecca0d55ddd78c7b5d317c9f005b9d3c6b829c27..0000000000000000000000000000000000000000
--- a/chrome/browser/chromeos/policy/affiliated_invalidation_service_provider_unittest.cc
+++ /dev/null
@@ -1,627 +0,0 @@
-// Copyright 2015 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/affiliated_invalidation_service_provider.h"
-
-#include <string>
-
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
-#include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h"
-#include "chrome/browser/chromeos/policy/stub_enterprise_install_attributes.h"
-#include "chrome/browser/chromeos/settings/cros_settings.h"
-#include "chrome/browser/chromeos/settings/device_oauth2_token_service_factory.h"
-#include "chrome/browser/chromeos/settings/device_settings_service.h"
-#include "chrome/browser/invalidation/fake_invalidation_service.h"
-#include "chrome/browser/invalidation/profile_invalidation_provider_factory.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/policy/core/common/cloud/cloud_policy_constants.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 "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using testing::Mock;
-using testing::StrictMock;
-
-namespace policy {
-
-namespace {
-
-const char kAffiliatedUserID1[] = "test_1@example.com";
-const char kAffiliatedUserID2[] = "test_2@example.com";
-const char kUnaffiliatedUserID[] = "test@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 MockConsumer : public AffiliatedInvalidationServiceProvider::Consumer {
- public:
- MockConsumer();
- ~MockConsumer() override;
-
- MOCK_METHOD1(OnInvalidationServiceSet,
- void(invalidation::InvalidationService*));
-
- private:
- DISALLOW_COPY_AND_ASSIGN(MockConsumer);
-};
-
-class AffiliatedInvalidationServiceProviderTest : public testing::Test {
- public:
- AffiliatedInvalidationServiceProviderTest();
-
- // testing::Test:
- virtual void SetUp() override;
- virtual void TearDown() override;
-
- // Ownership is not passed. The Profile is owned by the global ProfileManager.
- Profile* LogInAndReturnProfile(const std::string& user_id);
-
- // Logs in as an affiliated user and indicates that the per-profile
- // invalidation service for this user connected. Verifies that this
- // invalidation service is made available to the |consumer_| and the
- // device-global invalidation service is destroyed.
- void LogInAsAffiliatedUserAndConnectInvalidationService();
-
- // Logs in as an unaffiliated user and indicates that the per-profile
- // invalidation service for this user connected. Verifies that this
- // invalidation service is ignored and the device-global invalidation service
- // is not destroyed.
- void LogInAsUnaffiliatedUserAndConnectInvalidationService();
-
- // Indicates that the device-global invalidation service connected. Verifies
- // that the |consumer_| is informed about this.
- void ConnectDeviceGlobalInvalidationService();
-
- // Indicates that the logged-in user's per-profile invalidation service
- // disconnected. Verifies that the |consumer_| is informed about this and a
- // device-global invalidation service is created.
- void DisconnectPerProfileInvalidationService();
-
- invalidation::FakeInvalidationService* GetProfileInvalidationService(
- Profile* profile,
- bool create);
-
- protected:
- scoped_ptr<AffiliatedInvalidationServiceProvider> provider_;
- StrictMock<MockConsumer> consumer_;
- invalidation::TiclInvalidationService* device_invalidation_service_;
- invalidation::FakeInvalidationService* profile_invalidation_service_;
-
- private:
- content::TestBrowserThreadBundle thread_bundle_;
- chromeos::FakeChromeUserManager* 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_;
- TestingProfileManager profile_manager_;
-};
-
-MockConsumer::MockConsumer() {
-}
-
-MockConsumer::~MockConsumer() {
-}
-
-AffiliatedInvalidationServiceProviderTest::
-AffiliatedInvalidationServiceProviderTest()
- : device_invalidation_service_(nullptr),
- profile_invalidation_service_(nullptr),
- fake_user_manager_(new chromeos::FakeChromeUserManager),
- user_manager_enabler_(fake_user_manager_),
- install_attributes_("example.com",
- "user@example.com",
- "device_id",
- DEVICE_MODE_ENTERPRISE),
- profile_manager_(TestingBrowserProcess::GetGlobal()) {
-}
-
-void AffiliatedInvalidationServiceProviderTest::SetUp() {
- chromeos::SystemSaltGetter::Initialize();
- chromeos::DBusThreadManager::Initialize();
- ASSERT_TRUE(profile_manager_.SetUp());
-
- test_device_settings_service_.reset(new
- chromeos::ScopedTestDeviceSettingsService);
- test_cros_settings_.reset(new chromeos::ScopedTestCrosSettings);
- chromeos::DeviceOAuth2TokenServiceFactory::Initialize();
-
- invalidation::ProfileInvalidationProviderFactory::GetInstance()->
- RegisterTestingFactory(BuildProfileInvalidationProvider);
-
- provider_.reset(new AffiliatedInvalidationServiceProvider);
-}
-
-void AffiliatedInvalidationServiceProviderTest::TearDown() {
- provider_->Shutdown();
- provider_.reset();
-
- invalidation::ProfileInvalidationProviderFactory::GetInstance()->
- RegisterTestingFactory(nullptr);
- chromeos::DeviceOAuth2TokenServiceFactory::Shutdown();
- chromeos::DBusThreadManager::Shutdown();
- chromeos::SystemSaltGetter::Shutdown();
-}
-
-Profile* AffiliatedInvalidationServiceProviderTest::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;
-}
-
-void AffiliatedInvalidationServiceProviderTest::
- LogInAsAffiliatedUserAndConnectInvalidationService() {
- Mock::VerifyAndClearExpectations(&consumer_);
-
- // Log in as an affiliated user.
- Profile* profile = LogInAndReturnProfile(kAffiliatedUserID1);
- EXPECT_TRUE(profile);
- Mock::VerifyAndClearExpectations(&consumer_);
-
- // Verify that a per-profile invalidation service has been created.
- profile_invalidation_service_ =
- GetProfileInvalidationService(profile, false /* create */);
- ASSERT_TRUE(profile_invalidation_service_);
-
- // Verify that the device-global invalidation service still exists.
- EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Indicate that the per-profile invalidation service has connected. Verify
- // that the consumer is informed about this.
- EXPECT_CALL(consumer_,
- OnInvalidationServiceSet(profile_invalidation_service_)).Times(1);
- profile_invalidation_service_->SetInvalidatorState(
- syncer::INVALIDATIONS_ENABLED);
- Mock::VerifyAndClearExpectations(&consumer_);
-
- // Verify that the device-global invalidation service has been destroyed.
- EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest());
-
- Mock::VerifyAndClearExpectations(&consumer_);
-}
-
-void AffiliatedInvalidationServiceProviderTest::
- LogInAsUnaffiliatedUserAndConnectInvalidationService() {
- Mock::VerifyAndClearExpectations(&consumer_);
-
- // Log in as an unaffiliated user.
- Profile* profile = LogInAndReturnProfile(kUnaffiliatedUserID);
- EXPECT_TRUE(profile);
-
- // Verify that a per-profile invalidation service has been created.
- profile_invalidation_service_ =
- GetProfileInvalidationService(profile, false /* create */);
- ASSERT_TRUE(profile_invalidation_service_);
-
- // Verify that the device-global invalidation service still exists.
- EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Indicate that the per-profile invalidation service has connected. Verify
- // that the consumer is not called back.
- profile_invalidation_service_->SetInvalidatorState(
- syncer::INVALIDATIONS_ENABLED);
-
- // Verify that the device-global invalidation service still exists.
- EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest());
-
- Mock::VerifyAndClearExpectations(&consumer_);
-}
-
-void AffiliatedInvalidationServiceProviderTest::
- ConnectDeviceGlobalInvalidationService() {
- Mock::VerifyAndClearExpectations(&consumer_);
-
- // Verify that a device-global invalidation service has been created.
- device_invalidation_service_ =
- provider_->GetDeviceInvalidationServiceForTest();
- ASSERT_TRUE(device_invalidation_service_);
-
- // Indicate that the device-global invalidation service has connected. Verify
- // that the consumer is informed about this.
- EXPECT_CALL(consumer_, OnInvalidationServiceSet(device_invalidation_service_))
- .Times(1);
- device_invalidation_service_->OnInvalidatorStateChange(
- syncer::INVALIDATIONS_ENABLED);
-
- Mock::VerifyAndClearExpectations(&consumer_);
-}
-
-void AffiliatedInvalidationServiceProviderTest::
- DisconnectPerProfileInvalidationService() {
- Mock::VerifyAndClearExpectations(&consumer_);
-
- ASSERT_TRUE(profile_invalidation_service_);
-
- // Indicate that the per-profile invalidation service has disconnected. Verify
- // that the consumer is informed about this.
- EXPECT_CALL(consumer_, OnInvalidationServiceSet(nullptr)).Times(1);
- profile_invalidation_service_->SetInvalidatorState(
- syncer::INVALIDATION_CREDENTIALS_REJECTED);
-
- // Verify that a device-global invalidation service has been created.
- EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest());
-
- Mock::VerifyAndClearExpectations(&consumer_);
-}
-
-invalidation::FakeInvalidationService*
-AffiliatedInvalidationServiceProviderTest::GetProfileInvalidationService(
- Profile* profile, bool create) {
- invalidation::ProfileInvalidationProvider* invalidation_provider =
- static_cast<invalidation::ProfileInvalidationProvider*>(
- invalidation::ProfileInvalidationProviderFactory::GetInstance()->
- GetServiceForBrowserContext(profile, create));
- if (!invalidation_provider)
- return nullptr;
- return static_cast<invalidation::FakeInvalidationService*>(
- invalidation_provider->GetInvalidationService());
-}
-
-// No consumers are registered with the AffiliatedInvalidationServiceProvider.
-// Verifies that no device-global invalidation service is created, whether an
-// affiliated user is logged in or not.
-TEST_F(AffiliatedInvalidationServiceProviderTest, NoConsumers) {
- // Verify that no device-global invalidation service has been created.
- EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Log in as an affiliated user.
- EXPECT_TRUE(LogInAndReturnProfile(kAffiliatedUserID1));
-
- // Verify that no device-global invalidation service has been created.
- EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest());
-}
-
-// A consumer is registered with the AffiliatedInvalidationServiceProvider.
-// Verifies that when no per-profile invalidation service belonging to an
-// affiliated user is available, a device-global invalidation service is
-// created. Further verifies that when the device-global invalidation service
-// connects, it is made available to the consumer.
-TEST_F(AffiliatedInvalidationServiceProviderTest,
- UseDeviceInvalidationService) {
- // Register a consumer. Verify that the consumer is not called back
- // immediately as no connected invalidation service exists yet.
- provider_->RegisterConsumer(&consumer_);
-
- // Indicate that the device-global invalidation service connected. Verify that
- // that the consumer is informed about this.
- ConnectDeviceGlobalInvalidationService();
-
- // Indicate that the device-global invalidation service has disconnected.
- // Verify that the consumer is informed about this.
- EXPECT_CALL(consumer_, OnInvalidationServiceSet(nullptr)).Times(1);
- device_invalidation_service_->OnInvalidatorStateChange(
- syncer::INVALIDATION_CREDENTIALS_REJECTED);
- Mock::VerifyAndClearExpectations(&consumer_);
-
- // Verify that the device-global invalidation service still exists.
- EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Unregister the consumer.
- provider_->UnregisterConsumer(&consumer_);
- Mock::VerifyAndClearExpectations(&consumer_);
-}
-
-// A consumer is registered with the AffiliatedInvalidationServiceProvider.
-// Verifies that when a per-profile invalidation service belonging to an
-// affiliated user connects, it is made available to the consumer.
-TEST_F(AffiliatedInvalidationServiceProviderTest,
- UseAffiliatedProfileInvalidationService) {
- // Register a consumer. Verify that the consumer is not called back
- // immediately as no connected invalidation service exists yet.
- provider_->RegisterConsumer(&consumer_);
-
- // Verify that a device-global invalidation service has been created.
- EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Log in as an affiliated user and indicate that the per-profile invalidation
- // service for this user connected. Verify that this invalidation service is
- // made available to the |consumer_| and the device-global invalidation
- // service is destroyed.
- LogInAsAffiliatedUserAndConnectInvalidationService();
-
- // Indicate that the logged-in user's per-profile invalidation service
- // disconnected. Verify that the consumer is informed about this and a
- // device-global invalidation service is created.
- DisconnectPerProfileInvalidationService();
-
- // Unregister the consumer.
- provider_->UnregisterConsumer(&consumer_);
- Mock::VerifyAndClearExpectations(&consumer_);
-}
-
-// A consumer is registered with the AffiliatedInvalidationServiceProvider.
-// Verifies that when a per-profile invalidation service belonging to an
-// unaffiliated user connects, it is ignored.
-TEST_F(AffiliatedInvalidationServiceProviderTest,
- DoNotUseUnaffiliatedProfileInvalidationService) {
- // Register a consumer. Verify that the consumer is not called back
- // immediately as no connected invalidation service exists yet.
- provider_->RegisterConsumer(&consumer_);
-
- // Verify that a device-global invalidation service has been created.
- EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Log in as an unaffiliated user and indicate that the per-profile
- // invalidation service for this user connected. Verify that this invalidation
- // service is ignored and the device-global invalidation service is not
- // destroyed.
- LogInAsUnaffiliatedUserAndConnectInvalidationService();
-
- // Unregister the consumer.
- provider_->UnregisterConsumer(&consumer_);
- Mock::VerifyAndClearExpectations(&consumer_);
-}
-
-// A consumer is registered with the AffiliatedInvalidationServiceProvider. A
-// device-global invalidation service exists, is connected and is made available
-// to the consumer. Verifies that when a per-profile invalidation service
-// belonging to an affiliated user connects, it is made available to the
-// consumer instead and the device-global invalidation service is destroyed.
-TEST_F(AffiliatedInvalidationServiceProviderTest,
- SwitchToAffiliatedProfileInvalidationService) {
- // Register a consumer. Verify that the consumer is not called back
- // immediately as no connected invalidation service exists yet.
- provider_->RegisterConsumer(&consumer_);
-
- // Indicate that the device-global invalidation service connected. Verify that
- // that the consumer is informed about this.
- ConnectDeviceGlobalInvalidationService();
-
- // Log in as an affiliated user and indicate that the per-profile invalidation
- // service for this user connected. Verify that this invalidation service is
- // made available to the |consumer_| and the device-global invalidation
- // service is destroyed.
- LogInAsAffiliatedUserAndConnectInvalidationService();
-
- // Unregister the consumer.
- provider_->UnregisterConsumer(&consumer_);
- Mock::VerifyAndClearExpectations(&consumer_);
-}
-
-// A consumer is registered with the AffiliatedInvalidationServiceProvider. A
-// device-global invalidation service exists, is connected and is made available
-// to the consumer. Verifies that when a per-profile invalidation service
-// belonging to an unaffiliated user connects, it is ignored and the
-// device-global invalidation service continues to be made available to the
-// consumer.
-TEST_F(AffiliatedInvalidationServiceProviderTest,
- DoNotSwitchToUnaffiliatedProfileInvalidationService) {
- // Register a consumer. Verify that the consumer is not called back
- // immediately as no connected invalidation service exists yet.
- provider_->RegisterConsumer(&consumer_);
-
- // Indicate that the device-global invalidation service connected. Verify that
- // that the consumer is informed about this.
- ConnectDeviceGlobalInvalidationService();
-
- // Log in as an unaffiliated user and indicate that the per-profile
- // invalidation service for this user connected. Verify that this invalidation
- // service is ignored and the device-global invalidation service is not
- // destroyed.
- LogInAsUnaffiliatedUserAndConnectInvalidationService();
-
- // Unregister the consumer.
- provider_->UnregisterConsumer(&consumer_);
- Mock::VerifyAndClearExpectations(&consumer_);
-}
-
-// A consumer is registered with the AffiliatedInvalidationServiceProvider. A
-// per-profile invalidation service belonging to an affiliated user exists, is
-// connected and is made available to the consumer. Verifies that when the
-// per-profile invalidation service disconnects, a device-global invalidation
-// service is created. Further verifies that when the device-global invalidation
-// service connects, it is made available to the consumer.
-TEST_F(AffiliatedInvalidationServiceProviderTest,
- SwitchToDeviceInvalidationService) {
- // Register a consumer. Verify that the consumer is not called back
- // immediately as no connected invalidation service exists yet.
- provider_->RegisterConsumer(&consumer_);
-
- // Verify that a device-global invalidation service has been created.
- EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Log in as an affiliated user and indicate that the per-profile invalidation
- // service for this user connected. Verify that this invalidation service is
- // made available to the |consumer_| and the device-global invalidation
- // service is destroyed.
- LogInAsAffiliatedUserAndConnectInvalidationService();
-
- // Indicate that the logged-in user's per-profile invalidation service
- // disconnected. Verify that the consumer is informed about this and a
- // device-global invalidation service is created.
- DisconnectPerProfileInvalidationService();
-
- // Indicate that the device-global invalidation service connected. Verify that
- // that the consumer is informed about this.
- ConnectDeviceGlobalInvalidationService();
-
- // Unregister the consumer.
- provider_->UnregisterConsumer(&consumer_);
- Mock::VerifyAndClearExpectations(&consumer_);
-}
-
-// A consumer is registered with the AffiliatedInvalidationServiceProvider. A
-// per-profile invalidation service belonging to a first affiliated user exists,
-// is connected and is made available to the consumer. A per-profile
-// invalidation service belonging to a second affiliated user also exists and is
-// connected. Verifies that when the per-profile invalidation service belonging
-// to the first user disconnects, the per-profile invalidation service belonging
-// to the second user is made available to the consumer instead.
-TEST_F(AffiliatedInvalidationServiceProviderTest,
- SwitchBetweenAffiliatedProfileInvalidationServices) {
- // Register a consumer. Verify that the consumer is not called back
- // immediately as no connected invalidation service exists yet.
- provider_->RegisterConsumer(&consumer_);
-
- // Verify that a device-global invalidation service has been created.
- EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Log in as a first affiliated user and indicate that the per-profile
- // invalidation service for this user connected. Verify that this invalidation
- // service is made available to the |consumer_| and the device-global
- // invalidation service is destroyed.
- LogInAsAffiliatedUserAndConnectInvalidationService();
-
- // Log in as a second affiliated user.
- Profile* second_profile = LogInAndReturnProfile(kAffiliatedUserID2);
- EXPECT_TRUE(second_profile);
-
- // Verify that the device-global invalidation service still does not exist.
- EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Verify that a per-profile invalidation service for the second user has been
- // created.
- invalidation::FakeInvalidationService* second_profile_invalidation_service =
- GetProfileInvalidationService(second_profile, false /* create */);
- ASSERT_TRUE(second_profile_invalidation_service);
-
- // Indicate that the second user's per-profile invalidation service has
- // connected. Verify that the consumer is not called back.
- second_profile_invalidation_service->SetInvalidatorState(
- syncer::INVALIDATIONS_ENABLED);
- Mock::VerifyAndClearExpectations(&consumer_);
-
- // Indicate that the first user's per-profile invalidation service has
- // disconnected. Verify that the consumer is informed that the second user's
- // per-profile invalidation service should be used instead of the first
- // user's.
- EXPECT_CALL(consumer_,
- OnInvalidationServiceSet(second_profile_invalidation_service))
- .Times(1);
- profile_invalidation_service_->SetInvalidatorState(
- syncer::INVALIDATION_CREDENTIALS_REJECTED);
- Mock::VerifyAndClearExpectations(&consumer_);
-
- // Verify that the device-global invalidation service still does not exist.
- EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Unregister the consumer.
- provider_->UnregisterConsumer(&consumer_);
- Mock::VerifyAndClearExpectations(&consumer_);
-}
-
-// A consumer is registered with the AffiliatedInvalidationServiceProvider. A
-// device-global invalidation service exists, is connected and is made available
-// to the consumer. Verifies that when a second consumer registers, the
-// device-global invalidation service is made available to it as well. Further
-// verifies that when the first consumer unregisters, the device-global
-// invalidation service is not destroyed and remains available to the second
-// consumer. Further verifies that when the second consumer also unregisters,
-// the device-global invalidation service is destroyed.
-TEST_F(AffiliatedInvalidationServiceProviderTest, MultipleConsumers) {
- // Register a first consumer. Verify that the consumer is not called back
- // immediately as no connected invalidation service exists yet.
- provider_->RegisterConsumer(&consumer_);
-
- // Indicate that the device-global invalidation service connected. Verify that
- // that the consumer is informed about this.
- ConnectDeviceGlobalInvalidationService();
-
- // Register a second consumer. Verify that the consumer is called back
- // immediately as a connected invalidation service is available.
- StrictMock<MockConsumer> second_consumer;
- EXPECT_CALL(second_consumer,
- OnInvalidationServiceSet(device_invalidation_service_)).Times(1);
- provider_->RegisterConsumer(&second_consumer);
- Mock::VerifyAndClearExpectations(&second_consumer);
-
- // Unregister the first consumer.
- provider_->UnregisterConsumer(&consumer_);
-
- // Verify that the device-global invalidation service still exists.
- EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Unregister the second consumer.
- provider_->UnregisterConsumer(&second_consumer);
-
- // Verify that the device-global invalidation service has been destroyed.
- EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest());
- Mock::VerifyAndClearExpectations(&consumer_);
- Mock::VerifyAndClearExpectations(&second_consumer);
-}
-
-// A consumer is registered with the AffiliatedInvalidationServiceProvider. A
-// per-profile invalidation service belonging to a first affiliated user exists,
-// is connected and is made available to the consumer. Verifies that when the
-// provider is shut down, the consumer is informed that no invalidation service
-// is available for use anymore. Also verifies that no device-global
-// invalidation service is created and a per-profile invalidation service
-// belonging to a second affiliated user that subsequently connects is ignored.
-TEST_F(AffiliatedInvalidationServiceProviderTest, NoServiceAfterShutdown) {
- // Register a consumer. Verify that the consumer is not called back
- // immediately as no connected invalidation service exists yet.
- provider_->RegisterConsumer(&consumer_);
-
- // Verify that a device-global invalidation service has been created.
- EXPECT_TRUE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Log in as a first affiliated user and indicate that the per-profile
- // invalidation service for this user connected. Verify that this invalidation
- // service is made available to the |consumer_| and the device-global
- // invalidation service is destroyed.
- LogInAsAffiliatedUserAndConnectInvalidationService();
-
- // Shut down the |provider_|. Verify that the |consumer_| is informed that no
- // invalidation service is available for use anymore.
- EXPECT_CALL(consumer_, OnInvalidationServiceSet(nullptr)).Times(1);
- provider_->Shutdown();
- Mock::VerifyAndClearExpectations(&consumer_);
-
- // Verify that the device-global invalidation service still does not exist.
- EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Log in as a second affiliated user.
- Profile* second_profile = LogInAndReturnProfile(kAffiliatedUserID2);
- EXPECT_TRUE(second_profile);
-
- // Verify that the device-global invalidation service still does not exist.
- EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Create a per-profile invalidation service for the second user.
- invalidation::FakeInvalidationService* second_profile_invalidation_service =
- GetProfileInvalidationService(second_profile, true /* create */);
- ASSERT_TRUE(second_profile_invalidation_service);
-
- // Indicate that the second user's per-profile invalidation service has
- // connected. Verify that the consumer is not called back.
- second_profile_invalidation_service->SetInvalidatorState(
- syncer::INVALIDATIONS_ENABLED);
-
- // Verify that the device-global invalidation service still does not exist.
- EXPECT_FALSE(provider_->GetDeviceInvalidationServiceForTest());
-
- // Unregister the consumer.
- provider_->UnregisterConsumer(&consumer_);
- Mock::VerifyAndClearExpectations(&consumer_);
-}
-
-} // namespace policy

Powered by Google App Engine
This is Rietveld 408576698