Home | History | Annotate | Download | only in login
      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/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"
     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 MixinBasedBrowserTest {
     29  public:
     30   explicit LoginManagerTest(bool should_launch_browser);
     31 
     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;
     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 
     66   MockLoginUtils& login_utils() { return *mock_login_utils_; }
     67 
     68   content::WebContents* web_contents() { return web_contents_; }
     69 
     70   test::JSChecker& js_checker() { return js_checker_; }
     71 
     72  private:
     73   void InitializeWebContents();
     74 
     75   void set_web_contents(content::WebContents* web_contents) {
     76     web_contents_ = web_contents;
     77   }
     78 
     79   MockLoginUtils* mock_login_utils_;
     80   bool should_launch_browser_;
     81   content::WebContents* web_contents_;
     82   test::JSChecker js_checker_;
     83 
     84   DISALLOW_COPY_AND_ASSIGN(LoginManagerTest);
     85 };
     86 
     87 }  // namespace chromeos
     88 
     89 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_LOGIN_MANAGER_TEST_H_
     90