1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_USERS_MOCK_USER_MANAGER_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_USERS_MOCK_USER_MANAGER_H_ 7 8 #include <string> 9 10 #include "base/files/file_path.h" 11 #include "base/memory/weak_ptr.h" 12 #include "chrome/browser/chromeos/login/user_flow.h" 13 #include "chrome/browser/chromeos/login/users/avatar/mock_user_image_manager.h" 14 #include "chrome/browser/chromeos/login/users/chrome_user_manager.h" 15 #include "components/user_manager/user.h" 16 #include "components/user_manager/user_image/user_image.h" 17 #include "testing/gmock/include/gmock/gmock.h" 18 19 namespace chromeos { 20 21 class FakeSupervisedUserManager; 22 23 class MockUserManager : public ChromeUserManager { 24 public: 25 MockUserManager(); 26 virtual ~MockUserManager(); 27 28 MOCK_METHOD0(Shutdown, void(void)); 29 MOCK_CONST_METHOD0(GetUsersAdmittedForMultiProfile, 30 user_manager::UserList(void)); 31 MOCK_CONST_METHOD0(GetLoggedInUsers, const user_manager::UserList&(void)); 32 MOCK_CONST_METHOD0(GetLRULoggedInUsers, const user_manager::UserList&(void)); 33 MOCK_METHOD3(UserLoggedIn, void( 34 const std::string&, const std::string&, bool)); 35 MOCK_METHOD1(SwitchActiveUser, void(const std::string& email)); 36 MOCK_METHOD0(SessionStarted, void(void)); 37 MOCK_METHOD2(RemoveUser, 38 void(const std::string&, user_manager::RemoveUserDelegate*)); 39 MOCK_METHOD1(RemoveUserFromList, void(const std::string&)); 40 MOCK_CONST_METHOD1(IsKnownUser, bool(const std::string&)); 41 MOCK_CONST_METHOD1(FindUser, const user_manager::User*(const std::string&)); 42 MOCK_METHOD1(FindUserAndModify, user_manager::User*(const std::string&)); 43 MOCK_METHOD2(SaveUserOAuthStatus, 44 void(const std::string&, user_manager::User::OAuthTokenStatus)); 45 MOCK_METHOD2(SaveForceOnlineSignin, void(const std::string&, bool)); 46 MOCK_METHOD2(SaveUserDisplayName, void(const std::string&, 47 const base::string16&)); 48 MOCK_METHOD2(UpdateUserAccountData, 49 void(const std::string&, const UserAccountData&)); 50 MOCK_CONST_METHOD1(GetUserDisplayName, base::string16(const std::string&)); 51 MOCK_METHOD2(SaveUserDisplayEmail, void(const std::string&, 52 const std::string&)); 53 MOCK_CONST_METHOD1(GetUserDisplayEmail, std::string(const std::string&)); 54 MOCK_CONST_METHOD0(IsCurrentUserOwner, bool(void)); 55 MOCK_CONST_METHOD0(IsCurrentUserNew, bool(void)); 56 MOCK_CONST_METHOD0(IsCurrentUserNonCryptohomeDataEphemeral, bool(void)); 57 MOCK_CONST_METHOD0(CanCurrentUserLock, bool(void)); 58 MOCK_CONST_METHOD0(IsUserLoggedIn, bool(void)); 59 MOCK_CONST_METHOD0(IsLoggedInAsRegularUser, bool(void)); 60 MOCK_CONST_METHOD0(IsLoggedInAsDemoUser, bool(void)); 61 MOCK_CONST_METHOD0(IsLoggedInAsPublicAccount, bool(void)); 62 MOCK_CONST_METHOD0(IsLoggedInAsGuest, bool(void)); 63 MOCK_CONST_METHOD0(IsLoggedInAsSupervisedUser, bool(void)); 64 MOCK_CONST_METHOD0(IsLoggedInAsKioskApp, bool(void)); 65 MOCK_CONST_METHOD0(IsLoggedInAsStub, bool(void)); 66 MOCK_CONST_METHOD0(IsSessionStarted, bool(void)); 67 MOCK_CONST_METHOD1(IsUserNonCryptohomeDataEphemeral, 68 bool(const std::string&)); 69 MOCK_METHOD1(AddObserver, void(UserManager::Observer*)); 70 MOCK_METHOD1(RemoveObserver, void(UserManager::Observer*)); 71 MOCK_METHOD1(AddSessionStateObserver, 72 void(UserManager::UserSessionStateObserver*)); 73 MOCK_METHOD1(RemoveSessionStateObserver, 74 void(UserManager::UserSessionStateObserver*)); 75 MOCK_METHOD0(NotifyLocalStateChanged, void(void)); 76 MOCK_CONST_METHOD0(AreSupervisedUsersAllowed, bool(void)); 77 78 // UserManagerBase overrides: 79 MOCK_CONST_METHOD0(AreEphemeralUsersEnabled, bool(void)); 80 MOCK_CONST_METHOD0(GetApplicationLocale, const std::string&(void)); 81 MOCK_CONST_METHOD0(GetLocalState, PrefService*(void)); 82 MOCK_CONST_METHOD2(HandleUserOAuthTokenStatusChange, 83 void(const std::string&, 84 user_manager::User::OAuthTokenStatus status)); 85 MOCK_CONST_METHOD0(IsEnterpriseManaged, bool(void)); 86 MOCK_METHOD1(LoadPublicAccounts, void(std::set<std::string>*)); 87 MOCK_METHOD0(PerformPreUserListLoadingActions, void(void)); 88 MOCK_METHOD0(PerformPostUserListLoadingActions, void(void)); 89 MOCK_METHOD1(PerformPostUserLoggedInActions, void(bool)); 90 MOCK_CONST_METHOD1(IsDemoApp, bool(const std::string&)); 91 MOCK_CONST_METHOD1(IsKioskApp, bool(const std::string&)); 92 MOCK_CONST_METHOD1(IsPublicAccountMarkedForRemoval, bool(const std::string&)); 93 MOCK_METHOD0(DemoAccountLoggedIn, void(void)); 94 MOCK_METHOD1(KioskAppLoggedIn, void(const std::string&)); 95 MOCK_METHOD1(PublicAccountUserLoggedIn, void(user_manager::User*)); 96 MOCK_METHOD0(RetailModeUserLoggedIn, void(void)); 97 MOCK_METHOD1(SupervisedUserLoggedIn, void(const std::string&)); 98 99 // You can't mock these functions easily because nobody can create 100 // User objects but the ChromeUserManager and us. 101 virtual const user_manager::UserList& GetUsers() const OVERRIDE; 102 virtual const user_manager::User* GetLoggedInUser() const OVERRIDE; 103 virtual user_manager::UserList GetUnlockUsers() const OVERRIDE; 104 virtual const std::string& GetOwnerEmail() const OVERRIDE; 105 virtual user_manager::User* GetLoggedInUser() OVERRIDE; 106 virtual const user_manager::User* GetActiveUser() const OVERRIDE; 107 virtual user_manager::User* GetActiveUser() OVERRIDE; 108 virtual const user_manager::User* GetPrimaryUser() const OVERRIDE; 109 110 // ChromeUserManager overrides: 111 virtual MultiProfileUserController* GetMultiProfileUserController() OVERRIDE; 112 virtual UserImageManager* GetUserImageManager( 113 const std::string& user_id) OVERRIDE; 114 virtual SupervisedUserManager* GetSupervisedUserManager() OVERRIDE; 115 MOCK_METHOD2(SetUserFlow, void(const std::string&, UserFlow*)); 116 MOCK_METHOD1(ResetUserFlow, void(const std::string&)); 117 virtual UserFlow* GetCurrentUserFlow() const OVERRIDE; 118 virtual UserFlow* GetUserFlow(const std::string&) const OVERRIDE; 119 120 // Sets a new User instance. Users previously created by this MockUserManager 121 // become invalid. 122 void SetActiveUser(const std::string& email); 123 124 // Creates a new public session user. Users previously created by this 125 // MockUserManager become invalid. 126 user_manager::User* CreatePublicAccountUser(const std::string& email); 127 128 // Adds a new User instance to the back of the user list. Users previously 129 // created by this MockUserManager remain valid. 130 void AddUser(const std::string& email); 131 132 // Clears the user list and the active user. Users previously created by this 133 // MockUserManager become invalid. 134 void ClearUserList(); 135 136 scoped_ptr<UserFlow> user_flow_; 137 scoped_ptr<MockUserImageManager> user_image_manager_; 138 scoped_ptr<FakeSupervisedUserManager> supervised_user_manager_; 139 user_manager::UserList user_list_; 140 }; 141 142 } // namespace chromeos 143 144 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_USERS_MOCK_USER_MANAGER_H_ 145