1 // Copyright 2013 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_LOGIN_MANAGER_TEST_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_MANAGER_TEST_H_ 7 8 #include <string> 9 10 #include "chrome/browser/chromeos/login/mock_login_utils.h" 11 #include "chrome/browser/chromeos/login/test/js_checker.h" 12 #include "chrome/test/base/in_process_browser_test.h" 13 14 namespace content { 15 class WebContents; 16 } // namespace content 17 18 namespace chromeos { 19 20 class UserContext; 21 22 // Base class for Chrome OS out-of-box/login WebUI tests. 23 // If no special configuration is done launches out-of-box WebUI. 24 // To launch login UI use PRE_* test that will register user(s) and mark 25 // out-of-box as completed. 26 // Guarantees that WebUI has been initialized by waiting for 27 // NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE notification. 28 class LoginManagerTest : public InProcessBrowserTest { 29 public: 30 explicit LoginManagerTest(bool should_launch_browser); 31 32 // Overriden from InProcessBrowserTest. 33 virtual void CleanUpOnMainThread() OVERRIDE; 34 virtual void SetUpCommandLine(base::CommandLine* command_line) OVERRIDE; 35 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE; 36 virtual void SetUpOnMainThread() OVERRIDE; 37 38 // Registers the user with the given |user_id| on the device. 39 // This method should be called in PRE_* test. 40 // TODO(dzhioev): Add the ability to register users without a PRE_* test. 41 void RegisterUser(const std::string& user_id); 42 43 // Set expected credentials for next login attempt. 44 void SetExpectedCredentials(const UserContext& user_context); 45 46 // Tries to login with the credentials in |user_context|. The return value 47 // indicates whether the login attempt succeeded. 48 bool TryToLogin(const UserContext& user_context); 49 50 // Tries to add the user identified and authenticated by |user_context| to the 51 // session. The return value indicates whether the attempt succeeded. This 52 // method does the same as TryToLogin() but doesn't verify that the new user 53 // has become the active user. 54 bool AddUserToSession(const UserContext& user_context); 55 56 // Log in user with |user_id|. User should be registered using RegisterUser(). 57 void LoginUser(const std::string& user_id); 58 59 // Add user with |user_id| to session. 60 void AddUser(const std::string& user_id); 61 62 // Executes given JS |expression| in |web_contents_| and checks 63 // that it is true. 64 void JSExpect(const std::string& expression); 65 login_utils()66 MockLoginUtils& login_utils() { return *mock_login_utils_; } 67 web_contents()68 content::WebContents* web_contents() { return web_contents_; } 69 70 private: 71 void InitializeWebContents(); 72 set_web_contents(content::WebContents * web_contents)73 void set_web_contents(content::WebContents* web_contents) { 74 web_contents_ = web_contents; 75 } 76 77 MockLoginUtils* mock_login_utils_; 78 bool should_launch_browser_; 79 content::WebContents* web_contents_; 80 test::JSChecker js_checker_; 81 82 DISALLOW_COPY_AND_ASSIGN(LoginManagerTest); 83 }; 84 85 } // namespace chromeos 86 87 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_MANAGER_TEST_H_ 88