• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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