Home | History | Annotate | Download | only in users
      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