blob: b07052762edebf7d82931271faf9780e33b7b1ce [file] [log] [blame]
// Copyright 2014 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.
#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_USERS_MOCK_USER_MANAGER_H_
#define CHROME_BROWSER_CHROMEOS_LOGIN_USERS_MOCK_USER_MANAGER_H_
#include <string>
#include "base/files/file_path.h"
#include "base/memory/weak_ptr.h"
#include "chrome/browser/chromeos/login/user_flow.h"
#include "chrome/browser/chromeos/login/users/affiliation.h"
#include "chrome/browser/chromeos/login/users/avatar/mock_user_image_manager.h"
#include "chrome/browser/chromeos/login/users/chrome_user_manager.h"
#include "components/account_id/account_id.h"
#include "components/user_manager/user.h"
#include "components/user_manager/user_image/user_image.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace chromeos {
class FakeSupervisedUserManager;
class MockUserManager : public ChromeUserManager {
public:
MockUserManager();
virtual ~MockUserManager();
MOCK_METHOD0(Shutdown, void(void));
MOCK_CONST_METHOD0(GetUsersAllowedForMultiProfile,
user_manager::UserList(void));
MOCK_CONST_METHOD0(GetLoggedInUsers, const user_manager::UserList&(void));
MOCK_CONST_METHOD0(GetLRULoggedInUsers, const user_manager::UserList&(void));
MOCK_METHOD4(UserLoggedIn,
void(const AccountId&, const std::string&, bool, bool));
MOCK_METHOD0(SessionStarted, void(void));
MOCK_METHOD2(RemoveUser,
void(const AccountId&, user_manager::RemoveUserDelegate*));
MOCK_METHOD1(RemoveUserFromList, void(const AccountId&));
MOCK_CONST_METHOD1(IsKnownUser, bool(const AccountId&));
MOCK_CONST_METHOD1(FindUser, const user_manager::User*(const AccountId&));
MOCK_METHOD1(FindUserAndModify, user_manager::User*(const AccountId&));
MOCK_METHOD2(SaveUserOAuthStatus,
void(const AccountId&, user_manager::User::OAuthTokenStatus));
MOCK_METHOD2(SaveForceOnlineSignin, void(const AccountId&, bool));
MOCK_METHOD2(SaveUserDisplayName,
void(const AccountId&, const base::string16&));
MOCK_METHOD2(UpdateUserAccountData,
void(const AccountId&, const UserAccountData&));
MOCK_CONST_METHOD1(GetUserDisplayName, base::string16(const AccountId&));
MOCK_METHOD2(SaveUserDisplayEmail,
void(const AccountId&, const std::string&));
MOCK_CONST_METHOD1(GetUserDisplayEmail, std::string(const AccountId&));
MOCK_CONST_METHOD0(IsCurrentUserOwner, bool(void));
MOCK_CONST_METHOD0(IsCurrentUserNew, bool(void));
MOCK_CONST_METHOD0(IsCurrentUserNonCryptohomeDataEphemeral, bool(void));
MOCK_CONST_METHOD0(CanCurrentUserLock, bool(void));
MOCK_CONST_METHOD0(IsUserLoggedIn, bool(void));
MOCK_CONST_METHOD0(IsLoggedInAsUserWithGaiaAccount, bool(void));
MOCK_CONST_METHOD0(IsLoggedInAsChildUser, bool(void));
MOCK_CONST_METHOD0(IsLoggedInAsPublicAccount, bool(void));
MOCK_CONST_METHOD0(IsLoggedInAsGuest, bool(void));
MOCK_CONST_METHOD0(IsLoggedInAsSupervisedUser, bool(void));
MOCK_CONST_METHOD0(IsLoggedInAsKioskApp, bool(void));
MOCK_CONST_METHOD0(IsLoggedInAsArcKioskApp, bool(void));
MOCK_CONST_METHOD0(IsLoggedInAsStub, bool(void));
MOCK_CONST_METHOD0(IsSessionStarted, bool(void));
MOCK_CONST_METHOD1(IsUserNonCryptohomeDataEphemeral, bool(const AccountId&));
MOCK_METHOD1(AddObserver, void(UserManager::Observer*));
MOCK_METHOD1(RemoveObserver, void(UserManager::Observer*));
MOCK_METHOD1(AddSessionStateObserver,
void(UserManager::UserSessionStateObserver*));
MOCK_METHOD1(RemoveSessionStateObserver,
void(UserManager::UserSessionStateObserver*));
MOCK_METHOD0(NotifyLocalStateChanged, void(void));
MOCK_CONST_METHOD0(AreSupervisedUsersAllowed, bool(void));
MOCK_CONST_METHOD0(IsGuestSessionAllowed, bool(void));
MOCK_CONST_METHOD1(IsGaiaUserAllowed, bool(const user_manager::User& user));
MOCK_CONST_METHOD1(IsUserAllowed, bool(const user_manager::User& user));
MOCK_CONST_METHOD3(UpdateLoginState,
void(const user_manager::User*,
const user_manager::User*,
bool));
MOCK_CONST_METHOD1(AsyncRemoveCryptohome, void(const AccountId&));
MOCK_CONST_METHOD3(GetPlatformKnownUserId,
bool(const std::string&, const std::string&, AccountId*));
MOCK_CONST_METHOD0(GetGuestAccountId, const AccountId&());
MOCK_CONST_METHOD0(IsFirstExecAfterBoot, bool(void));
MOCK_CONST_METHOD1(IsGuestAccountId, bool(const AccountId&));
MOCK_CONST_METHOD1(IsStubAccountId, bool(const AccountId&));
MOCK_CONST_METHOD1(IsSupervisedAccountId, bool(const AccountId&));
MOCK_CONST_METHOD0(HasBrowserRestarted, bool(void));
// UserManagerBase overrides:
MOCK_CONST_METHOD0(AreEphemeralUsersEnabled, bool(void));
MOCK_CONST_METHOD0(GetApplicationLocale, const std::string&(void));
MOCK_CONST_METHOD0(GetLocalState, PrefService*(void));
MOCK_CONST_METHOD2(HandleUserOAuthTokenStatusChange,
void(const AccountId&,
user_manager::User::OAuthTokenStatus status));
MOCK_CONST_METHOD0(IsEnterpriseManaged, bool(void));
MOCK_METHOD1(LoadDeviceLocalAccounts, void(std::set<AccountId>*));
MOCK_METHOD0(PerformPreUserListLoadingActions, void(void));
MOCK_METHOD0(PerformPostUserListLoadingActions, void(void));
MOCK_METHOD1(PerformPostUserLoggedInActions, void(bool));
MOCK_CONST_METHOD1(IsDemoApp, bool(const AccountId&));
MOCK_CONST_METHOD1(IsKioskApp, bool(const AccountId&));
MOCK_CONST_METHOD1(IsDeviceLocalAccountMarkedForRemoval,
bool(const AccountId&));
MOCK_METHOD0(DemoAccountLoggedIn, void(void));
MOCK_METHOD1(KioskAppLoggedIn, void(user_manager::User*));
MOCK_METHOD1(ArcKioskAppLoggedIn, void(user_manager::User*));
MOCK_METHOD1(PublicAccountUserLoggedIn, void(user_manager::User*));
MOCK_METHOD1(SupervisedUserLoggedIn, void(const AccountId&));
MOCK_METHOD1(OnUserRemoved, void(const AccountId&));
MOCK_CONST_METHOD1(GetResourceImagekiaNamed, const gfx::ImageSkia&(int));
MOCK_CONST_METHOD1(GetResourceStringUTF16, base::string16(int));
MOCK_CONST_METHOD3(DoScheduleResolveLocale,
void(const std::string&,
base::OnceClosure*,
std::string*));
MOCK_CONST_METHOD1(IsValidDefaultUserImageId, bool(int));
// You can't mock these functions easily because nobody can create
// User objects but the ChromeUserManager and us.
const user_manager::UserList& GetUsers() const override;
user_manager::UserList GetUnlockUsers() const override;
const AccountId& GetOwnerAccountId() const override;
const user_manager::User* GetActiveUser() const override;
user_manager::User* GetActiveUser() override;
const user_manager::User* GetPrimaryUser() const override;
// ChromeUserManager overrides:
MultiProfileUserController* GetMultiProfileUserController() override;
UserImageManager* GetUserImageManager(const AccountId& account_id) override;
SupervisedUserManager* GetSupervisedUserManager() override;
MOCK_METHOD2(SetUserFlow, void(const AccountId&, UserFlow*));
MOCK_METHOD1(ResetUserFlow, void(const AccountId&));
UserFlow* GetCurrentUserFlow() const override;
UserFlow* GetUserFlow(const AccountId&) const override;
MOCK_METHOD2(SetUserAffiliation,
void(const AccountId& account_id,
const chromeos::AffiliationIDSet& user_affiliation_ids));
bool ShouldReportUser(const std::string& user_id) const override;
MOCK_CONST_METHOD1(IsManagedSessionEnabledForUser,
bool(const user_manager::User&));
MOCK_CONST_METHOD1(IsFullManagementDisclosureNeeded,
bool(policy::DeviceLocalAccountPolicyBroker*));
// We cannot mock ScheduleResolveLocale directly because of
// base::OnceClosure's removed deleter. This is a trampoline to the actual
// mock.
void ScheduleResolveLocale(const std::string& locale,
base::OnceClosure on_resolved_callback,
std::string* out_resolved_locale) const override;
// Sets a new User instance. Users previously created by this MockUserManager
// become invalid.
void SetActiveUser(const AccountId& account_id);
// Creates a new public session user. Users previously created by this
// MockUserManager become invalid.
user_manager::User* CreatePublicAccountUser(const AccountId& account_id);
// Creates a new kiosk app user. Users previously created by this
// MockUserManager become invalid.
user_manager::User* CreateKioskAppUser(const AccountId& account_id);
// Adds a new User instance to the back of the user list. Users previously
// created by this MockUserManager remain valid. The added User is not
// affiliated with the domain, that owns the device.
void AddUser(const AccountId& account_id);
// The same as AddUser, but allows specifying affiliation with the domain,
// that owns the device and user type.
void AddUserWithAffiliationAndType(const AccountId& account_id,
bool is_affiliated,
user_manager::UserType user_type);
// Clears the user list and the active user. Users previously created by this
// MockUserManager become invalid.
void ClearUserList();
std::unique_ptr<UserFlow> user_flow_;
std::unique_ptr<MockUserImageManager> user_image_manager_;
std::unique_ptr<FakeSupervisedUserManager> supervised_user_manager_;
user_manager::UserList user_list_;
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_LOGIN_USERS_MOCK_USER_MANAGER_H_