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.
5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_MANAGER_TEST_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_MANAGER_TEST_H_
10 #include "chrome/browser/chromeos/login/mixin_based_browser_test.h"
11 #include "chrome/browser/chromeos/login/mock_login_utils.h"
12 #include "chrome/browser/chromeos/login/test/js_checker.h"
16 } // namespace content
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 MixinBasedBrowserTest {
30 explicit LoginManagerTest(bool should_launch_browser);
32 // Overriden from InProcessBrowserTest.
33 virtual void TearDownOnMainThread() override;
34 virtual void SetUpCommandLine(base::CommandLine* command_line) override;
35 virtual void SetUpInProcessBrowserTestFixture() override;
36 virtual void SetUpOnMainThread() override;
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);
43 // Set expected credentials for next login attempt.
44 void SetExpectedCredentials(const UserContext& user_context);
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);
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);
56 // Log in user with |user_id|. User should be registered using RegisterUser().
57 void LoginUser(const std::string& user_id);
59 // Add user with |user_id| to session.
60 void AddUser(const std::string& user_id);
62 // Executes given JS |expression| in |web_contents_| and checks
64 void JSExpect(const std::string& expression);
66 MockLoginUtils& login_utils() { return *mock_login_utils_; }
68 content::WebContents* web_contents() { return web_contents_; }
70 test::JSChecker& js_checker() { return js_checker_; }
73 void InitializeWebContents();
75 void set_web_contents(content::WebContents* web_contents) {
76 web_contents_ = web_contents;
79 MockLoginUtils* mock_login_utils_;
80 bool should_launch_browser_;
81 content::WebContents* web_contents_;
82 test::JSChecker js_checker_;
84 DISALLOW_COPY_AND_ASSIGN(LoginManagerTest);
87 } // namespace chromeos
89 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_MANAGER_TEST_H_