Index: chrome/browser/ui/ash/session_state_delegate_chromeos_unittest.cc |
diff --git a/chrome/browser/ui/ash/session_state_delegate_chromeos_unittest.cc b/chrome/browser/ui/ash/session_state_delegate_chromeos_unittest.cc |
deleted file mode 100644 |
index 3b6abfe15c2ca3037c7c318ed5059d5e84cc40f5..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/ash/session_state_delegate_chromeos_unittest.cc |
+++ /dev/null |
@@ -1,288 +0,0 @@ |
-// Copyright 2013 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/ui/ash/session_state_delegate_chromeos.h" |
- |
-#include <memory> |
-#include <string> |
-#include <vector> |
- |
-#include "base/macros.h" |
-#include "base/run_loop.h" |
-#include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h" |
-#include "chrome/browser/chromeos/login/users/multi_profile_user_controller.h" |
-#include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" |
-#include "chrome/browser/chromeos/policy/policy_cert_service.h" |
-#include "chrome/browser/chromeos/policy/policy_cert_service_factory.h" |
-#include "chrome/browser/chromeos/policy/policy_cert_verifier.h" |
-#include "chrome/browser/chromeos/profiles/profile_helper.h" |
-#include "chrome/common/pref_names.h" |
-#include "chrome/test/base/testing_browser_process.h" |
-#include "chrome/test/base/testing_profile_manager.h" |
-#include "components/signin/core/account_id/account_id.h" |
-#include "components/user_manager/user_manager.h" |
-#include "content/public/test/test_browser_thread_bundle.h" |
-#include "net/cert/x509_certificate.h" |
-#include "net/test/cert_test_util.h" |
-#include "net/test/test_data_directory.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace chromeos { |
- |
-namespace { |
- |
-const char* kUser = "user@test.com"; |
- |
-// Weak ptr to PolicyCertVerifier - object is freed in test destructor once |
-// we've ensured the profile has been shut down. |
-policy::PolicyCertVerifier* g_policy_cert_verifier_for_factory = NULL; |
- |
-std::unique_ptr<KeyedService> CreateTestPolicyCertService( |
- content::BrowserContext* context) { |
- return policy::PolicyCertService::CreateForTesting( |
- kUser, g_policy_cert_verifier_for_factory, |
- user_manager::UserManager::Get()); |
-} |
- |
-} // namespace |
- |
-class SessionStateDelegateChromeOSTest : public testing::Test { |
- protected: |
- SessionStateDelegateChromeOSTest() : user_manager_(NULL) { |
- } |
- |
- ~SessionStateDelegateChromeOSTest() override {} |
- |
- void SetUp() override { |
- // Initialize the UserManager singleton to a fresh FakeChromeUserManager |
- // instance. |
- user_manager_ = new FakeChromeUserManager; |
- user_manager_enabler_.reset( |
- new chromeos::ScopedUserManagerEnabler(user_manager_)); |
- |
- // Create our SessionStateDelegate to experiment with. |
- session_state_delegate_.reset(new SessionStateDelegateChromeos()); |
- testing::Test::SetUp(); |
- } |
- |
- void TearDown() override { |
- testing::Test::TearDown(); |
- session_state_delegate_.reset(); |
- user_manager_enabler_.reset(); |
- user_manager_ = NULL; |
- // Clear our cached pointer to the PolicyCertVerifier. |
- g_policy_cert_verifier_for_factory = NULL; |
- profile_manager_.reset(); |
- |
- // We must ensure that the PolicyCertVerifier outlives the |
- // PolicyCertService so shutdown the profile here. Additionally, we need |
- // to run the message loop between freeing the PolicyCertService and |
- // freeing the PolicyCertVerifier (see |
- // PolicyCertService::OnTrustAnchorsChanged() which is called from |
- // PolicyCertService::Shutdown()). |
- base::RunLoop().RunUntilIdle(); |
- } |
- |
- // Add and log in a user to the session. |
- void UserAddedToSession(std::string user) { |
- user_manager()->AddUser(AccountId::FromUserEmail(user)); |
- user_manager()->LoginUser(AccountId::FromUserEmail(user)); |
- } |
- |
- // Get the active user. |
- const std::string& GetActiveUserEmail() { |
- return user_manager::UserManager::Get() |
- ->GetActiveUser() |
- ->GetAccountId() |
- .GetUserEmail(); |
- } |
- |
- FakeChromeUserManager* user_manager() { return user_manager_; } |
- SessionStateDelegateChromeos* session_state_delegate() { |
- return session_state_delegate_.get(); |
- } |
- |
- void InitForMultiProfile() { |
- profile_manager_.reset( |
- new TestingProfileManager(TestingBrowserProcess::GetGlobal())); |
- ASSERT_TRUE(profile_manager_->SetUp()); |
- |
- const AccountId account_id(AccountId::FromUserEmail(kUser)); |
- const user_manager::User* user = user_manager()->AddUser(account_id); |
- |
- // Note that user profiles are created after user login in reality. |
- user_profile_ = |
- profile_manager_->CreateTestingProfile(account_id.GetUserEmail()); |
- user_profile_->set_profile_name(account_id.GetUserEmail()); |
- chromeos::ProfileHelper::Get()->SetUserToProfileMappingForTesting( |
- user, user_profile_); |
- } |
- |
- content::TestBrowserThreadBundle threads_; |
- std::unique_ptr<policy::PolicyCertVerifier> cert_verifier_; |
- std::unique_ptr<TestingProfileManager> profile_manager_; |
- TestingProfile* user_profile_; |
- |
- private: |
- std::unique_ptr<chromeos::ScopedUserManagerEnabler> user_manager_enabler_; |
- std::unique_ptr<SessionStateDelegateChromeos> session_state_delegate_; |
- |
- // Not owned. |
- FakeChromeUserManager* user_manager_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SessionStateDelegateChromeOSTest); |
-}; |
- |
-// Make sure that cycling one user does not cause any harm. |
-TEST_F(SessionStateDelegateChromeOSTest, CyclingOneUser) { |
- UserAddedToSession("firstuser@test.com"); |
- |
- EXPECT_EQ("firstuser@test.com", GetActiveUserEmail()); |
- session_state_delegate()->CycleActiveUser(ash::CycleUserDirection::NEXT); |
- EXPECT_EQ("firstuser@test.com", GetActiveUserEmail()); |
- session_state_delegate()->CycleActiveUser(ash::CycleUserDirection::PREVIOUS); |
- EXPECT_EQ("firstuser@test.com", GetActiveUserEmail()); |
-} |
- |
-// Cycle three users forwards and backwards to see that it works. |
-TEST_F(SessionStateDelegateChromeOSTest, CyclingThreeUsers) { |
- UserAddedToSession("firstuser@test.com"); |
- UserAddedToSession("seconduser@test.com"); |
- UserAddedToSession("thirduser@test.com"); |
- const ash::CycleUserDirection forward = ash::CycleUserDirection::NEXT; |
- |
- // Cycle forward. |
- EXPECT_EQ("firstuser@test.com", GetActiveUserEmail()); |
- session_state_delegate()->CycleActiveUser(forward); |
- EXPECT_EQ("seconduser@test.com", GetActiveUserEmail()); |
- session_state_delegate()->CycleActiveUser(forward); |
- EXPECT_EQ("thirduser@test.com", GetActiveUserEmail()); |
- session_state_delegate()->CycleActiveUser(forward); |
- EXPECT_EQ("firstuser@test.com", GetActiveUserEmail()); |
- |
- // Cycle backwards. |
- const ash::CycleUserDirection backward = ash::CycleUserDirection::PREVIOUS; |
- session_state_delegate()->CycleActiveUser(backward); |
- EXPECT_EQ("thirduser@test.com", GetActiveUserEmail()); |
- session_state_delegate()->CycleActiveUser(backward); |
- EXPECT_EQ("seconduser@test.com", GetActiveUserEmail()); |
- session_state_delegate()->CycleActiveUser(backward); |
- EXPECT_EQ("firstuser@test.com", GetActiveUserEmail()); |
-} |
- |
-// Make sure MultiProfile disabled by primary user policy. |
-TEST_F(SessionStateDelegateChromeOSTest, MultiProfileDisallowedByUserPolicy) { |
- InitForMultiProfile(); |
- EXPECT_TRUE( |
- session_state_delegate()->IsMultiProfileAllowedByPrimaryUserPolicy()); |
- const AccountId account_id(AccountId::FromUserEmail(kUser)); |
- user_manager()->LoginUser(account_id); |
- EXPECT_TRUE( |
- session_state_delegate()->IsMultiProfileAllowedByPrimaryUserPolicy()); |
- |
- user_profile_->GetPrefs()->SetString( |
- prefs::kMultiProfileUserBehavior, |
- chromeos::MultiProfileUserController::kBehaviorNotAllowed); |
- EXPECT_FALSE( |
- session_state_delegate()->IsMultiProfileAllowedByPrimaryUserPolicy()); |
-} |
- |
-// Make sure MultiProfile disabled by primary user policy certificates. |
-TEST_F(SessionStateDelegateChromeOSTest, |
- MultiProfileDisallowedByPolicyCertificates) { |
- InitForMultiProfile(); |
- const AccountId account_id(AccountId::FromUserEmail(kUser)); |
- user_manager()->LoginUser(account_id); |
- EXPECT_TRUE( |
- session_state_delegate()->IsMultiProfileAllowedByPrimaryUserPolicy()); |
- policy::PolicyCertServiceFactory::SetUsedPolicyCertificates( |
- account_id.GetUserEmail()); |
- EXPECT_FALSE( |
- session_state_delegate()->IsMultiProfileAllowedByPrimaryUserPolicy()); |
- |
- // Flush tasks posted to IO. |
- base::RunLoop().RunUntilIdle(); |
-} |
- |
-// Make sure MultiProfile disabled by primary user certificates in memory. |
-TEST_F(SessionStateDelegateChromeOSTest, |
- MultiProfileDisallowedByPrimaryUserCertificatesInMemory) { |
- InitForMultiProfile(); |
- const AccountId account_id(AccountId::FromUserEmail(kUser)); |
- user_manager()->LoginUser(account_id); |
- EXPECT_TRUE( |
- session_state_delegate()->IsMultiProfileAllowedByPrimaryUserPolicy()); |
- cert_verifier_.reset(new policy::PolicyCertVerifier(base::Closure())); |
- g_policy_cert_verifier_for_factory = cert_verifier_.get(); |
- ASSERT_TRUE( |
- policy::PolicyCertServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
- user_profile_, CreateTestPolicyCertService)); |
- policy::PolicyCertService* service = |
- policy::PolicyCertServiceFactory::GetForProfile(user_profile_); |
- ASSERT_TRUE(service); |
- |
- EXPECT_FALSE(service->has_policy_certificates()); |
- net::CertificateList certificates; |
- certificates.push_back( |
- net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem")); |
- service->OnTrustAnchorsChanged(certificates); |
- EXPECT_TRUE(service->has_policy_certificates()); |
- EXPECT_FALSE( |
- session_state_delegate()->IsMultiProfileAllowedByPrimaryUserPolicy()); |
- |
- // Flush tasks posted to IO. |
- base::RunLoop().RunUntilIdle(); |
-} |
- |
-// Make sure adding users to multiprofiles disabled by reaching maximum |
-// number of users in sessions. |
-TEST_F(SessionStateDelegateChromeOSTest, |
- AddUserToMultiprofileDisallowedByMaximumUsers) { |
- InitForMultiProfile(); |
- |
- EXPECT_EQ(ash::AddUserSessionPolicy::ALLOWED, |
- session_state_delegate()->GetAddUserSessionPolicy()); |
- const AccountId account_id(AccountId::FromUserEmail(kUser)); |
- user_manager()->LoginUser(account_id); |
- while (session_state_delegate()->NumberOfLoggedInUsers() < |
- session_state_delegate()->GetMaximumNumberOfLoggedInUsers()) { |
- UserAddedToSession("bb@b.b"); |
- } |
- EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_MAXIMUM_USERS_REACHED, |
- session_state_delegate()->GetAddUserSessionPolicy()); |
-} |
- |
-// Make sure adding users to multiprofiles disabled by logging in all possible |
-// users. |
-TEST_F(SessionStateDelegateChromeOSTest, |
- AddUserToMultiprofileDisallowedByAllUsersLogged) { |
- InitForMultiProfile(); |
- |
- EXPECT_EQ(ash::AddUserSessionPolicy::ALLOWED, |
- session_state_delegate()->GetAddUserSessionPolicy()); |
- const AccountId account_id(AccountId::FromUserEmail(kUser)); |
- user_manager()->LoginUser(account_id); |
- UserAddedToSession("bb@b.b"); |
- EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NO_ELIGIBLE_USERS, |
- session_state_delegate()->GetAddUserSessionPolicy()); |
-} |
- |
-// Make sure adding users to multiprofiles disabled by primary user policy. |
-TEST_F(SessionStateDelegateChromeOSTest, |
- AddUserToMultiprofileDisallowedByPrimaryUserPolicy) { |
- InitForMultiProfile(); |
- |
- EXPECT_EQ(ash::AddUserSessionPolicy::ALLOWED, |
- session_state_delegate()->GetAddUserSessionPolicy()); |
- const AccountId account_id(AccountId::FromUserEmail(kUser)); |
- user_manager()->LoginUser(account_id); |
- user_profile_->GetPrefs()->SetString( |
- prefs::kMultiProfileUserBehavior, |
- chromeos::MultiProfileUserController::kBehaviorNotAllowed); |
- user_manager()->AddUser(AccountId::FromUserEmail("bb@b.b")); |
- EXPECT_EQ(ash::AddUserSessionPolicy::ERROR_NOT_ALLOWED_PRIMARY_USER, |
- session_state_delegate()->GetAddUserSessionPolicy()); |
-} |
- |
-} // namespace chromeos |