blob: 21aff039833fb379961ea862d31b74ac2b2b8968 [file] [log] [blame]
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_ASH_LOGIN_LOGIN_MANAGER_TEST_H_
#define CHROME_BROWSER_ASH_LOGIN_LOGIN_MANAGER_TEST_H_
#include <string>
#include "chrome/browser/ash/login/test/embedded_test_server_setup_mixin.h"
#include "chrome/test/base/mixin_based_in_process_browser_test.h"
class AccountId;
namespace ash {
class UserContext;
// Base class for Chrome OS Login tests. Should be used if you need to start at
// the Chrome OS Login screen (especially with existing users). For the tests
// that are focused more on OOBE - prefer OobeBaseTest. Use LoginManagerMixin to
// configure users for tests.
class LoginManagerTest : public MixinBasedInProcessBrowserTest {
public:
LoginManagerTest();
LoginManagerTest(const LoginManagerTest&) = delete;
LoginManagerTest& operator=(const LoginManagerTest&) = delete;
~LoginManagerTest() override;
void SetUpCommandLine(base::CommandLine* command_line) override;
void SetUpOnMainThread() override;
// Could be used to registers the user with the given `account_id` on the
// device. This method should be called in PRE_* test. Use only if necessary,
// prefer LoginManagerMixin instead.
void RegisterUser(const AccountId& account_id);
static const char kPassword[];
static const char kLocalPassword[];
UserContext CreateUserContext(const AccountId& account_id,
const std::string& password);
UserContext CreateUserContextWithLocalPassword(const AccountId& account_id,
const std::string& password);
UserContext CreateUserContextWithPin(const AccountId& account_id,
const std::string& pin);
// Set expected credentials for next login attempt.
void SetExpectedCredentials(const UserContext& user_context);
// Tries to login with the credentials in `user_context`. The return value
// indicates whether the login attempt succeeded.
bool TryToLogin(const UserContext& user_context);
// Tries to add the user identified and authenticated by `user_context` to the
// session. The return value indicates whether the attempt succeeded. This
// method does the same as TryToLogin() but doesn't verify that the new user
// has become the active user.
bool AddUserToSession(const UserContext& user_context);
// Log in user with `user_id`. User should be registered using RegisterUser().
void LoginUser(const AccountId& account_id);
// Log in user with local password.
void LoginUserWithLocalPassword(const AccountId& account_id);
// Log in user with pin.
void LoginUserWithPin(const AccountId& account_id);
// Add user with `user_id` to session.
void AddUser(const AccountId& user_id);
// TODO(b/260718534): Fully switch from StubAuthenticator to
// FakeUserDataAuthClient.
void LoginUserWithDbusClient(const AccountId& account_id,
const std::string& password);
void AddUserWithDbusClient(const AccountId& account_id,
const std::string& password);
void SetExpectedCredentialsWithDbusClient(const AccountId& account_id,
const std::string& password);
void set_should_launch_browser(bool launch) {
should_launch_browser_ = launch;
}
private:
bool should_launch_browser_ = false;
EmbeddedTestServerSetupMixin embedded_test_server_{&mixin_host_,
embedded_test_server()};
};
} // namespace ash
#endif // CHROME_BROWSER_ASH_LOGIN_LOGIN_MANAGER_TEST_H_