Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(645)

Unified Diff: chrome/browser/chromeos/login/existing_user_controller_browsertest.cc

Issue 9348022: [cros] Use mocked URLFetcher and other mocks in ExistingUserController tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: move Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/existing_user_controller_browsertest.cc
diff --git a/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc b/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc
index ffdf80a9fc5abfcd0225abae095dc8867dc25b53..418908e2e61413efcf4b173f602fbf346d080ffa 100644
--- a/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc
+++ b/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/bind.h"
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop.h"
@@ -16,9 +17,16 @@
#include "chrome/browser/chromeos/login/login_display.h"
#include "chrome/browser/chromeos/login/login_display_host.h"
#include "chrome/browser/chromeos/login/login_performer.h"
+#include "chrome/browser/chromeos/login/login_status_consumer.h"
#include "chrome/browser/chromeos/login/login_utils.h"
#include "chrome/browser/chromeos/login/mock_authenticator.h"
+#include "chrome/browser/chromeos/login/mock_login_utils.h"
+#include "chrome/browser/chromeos/login/mock_url_fetchers.h"
+#include "chrome/browser/chromeos/login/mock_user_manager.h"
#include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chrome/common/net/gaia/mock_url_fetcher_factory.h"
+#include "chrome/test/base/testing_profile.h"
+#include "chrome/test/base/ui_test_utils.h"
#include "grit/generated_resources.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -27,11 +35,14 @@
namespace chromeos {
using ::testing::AnyNumber;
+using ::testing::InvokeWithoutArgs;
using ::testing::Return;
using ::testing::ReturnNull;
+using ::testing::WithArg;
using ::testing::_;
const char kUsername[] = "test_user@gmail.com";
+const char kNewUsername[] = "test_new_user@gmail.com";
const char kPassword[] = "test_password";
class MockLoginDisplay : public LoginDisplay {
@@ -78,31 +89,7 @@ class MockLoginDisplayHost : public LoginDisplayHost {
MOCK_METHOD0(ResumeSignInScreen, void(void));
private:
- DISALLOW_COPY_AND_ASSIGN(MockLoginDisplayHost);
-};
-
-class MockLoginPerformerDelegate : public LoginPerformer::Delegate {
- public:
- explicit MockLoginPerformerDelegate(ExistingUserController* controller)
- : controller_(controller) {
- }
-
- virtual void OnLoginSuccess(const std::string& username,
- const std::string& password,
- bool pending_requests,
- bool using_oauth) OVERRIDE {
- ignore_result(controller_->login_performer_.release());
- controller_->ActivateWizard(WizardController::kUserImageScreenName);
- }
-
- MOCK_METHOD1(OnLoginFailure, void(const LoginFailure&));
- MOCK_METHOD1(WhiteListCheckFailed, void(const std::string&));
- MOCK_METHOD2(OnOnlineChecked, void(const std::string&, bool));
-
- private:
- ExistingUserController* controller_;
-
- DISALLOW_COPY_AND_ASSIGN(MockLoginPerformerDelegate);
+ DISALLOW_COPY_AND_ASSIGN(MockLoginDisplayHost);
};
class ExistingUserControllerTest : public CrosInProcessBrowserTest {
@@ -111,14 +98,21 @@ class ExistingUserControllerTest : public CrosInProcessBrowserTest {
: mock_cryptohome_library_(NULL),
mock_network_library_(NULL),
mock_login_display_(NULL),
- mock_login_display_host_(NULL) {
+ mock_login_display_host_(NULL),
+ mock_user_manager_(NULL),
+ testing_profile_(NULL) {
}
ExistingUserController* existing_user_controller() {
return ExistingUserController::current_controller();
}
- virtual void SetUpInProcessBrowserTestFixture() {
+ virtual void CleanUpOnMainThread() OVERRIDE {
+ CrosInProcessBrowserTest::CleanUpOnMainThread();
+ testing_profile_.reset(NULL);
+ }
+
+ virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
MockDBusThreadManager* mock_dbus_thread_manager =
new MockDBusThreadManager;
DBusThreadManager::InitializeForTesting(mock_dbus_thread_manager);
@@ -139,11 +133,32 @@ class ExistingUserControllerTest : public CrosInProcessBrowserTest {
EXPECT_CALL(*mock_cryptohome_library_, IsMounted())
.Times(AnyNumber())
.WillRepeatedly(Return(true));
- LoginUtils::Set(new MockLoginUtils(kUsername, kPassword));
+
+ mock_login_utils_ = new MockLoginUtils();
+ LoginUtils::Set(mock_login_utils_);
+ EXPECT_CALL(*mock_login_utils_, PrewarmAuthentication())
+ .Times(AnyNumber());
+ EXPECT_CALL(*mock_login_utils_, StopBackgroundFetchers())
+ .Times(AnyNumber());
mock_login_display_.reset(new MockLoginDisplay());
mock_login_display_host_.reset(new MockLoginDisplayHost());
+ mock_user_manager_ = new MockUserManager();
+ UserManager::Set(mock_user_manager_);
+ EXPECT_CALL(*mock_user_manager_, IsKnownUser(kUsername))
+ .Times(AnyNumber())
+ .WillRepeatedly(Return(true));
+ EXPECT_CALL(*mock_user_manager_, IsKnownUser(kNewUsername))
+ .Times(AnyNumber())
+ .WillRepeatedly(Return(false));
+ EXPECT_CALL(*mock_user_manager_, user_is_logged_in())
+ .Times(AnyNumber())
+ .WillRepeatedly(Return(false));
+ EXPECT_CALL(*mock_user_manager_, IsLoggedInAsGuest())
+ .Times(AnyNumber())
+ .WillRepeatedly(Return(false));
+
EXPECT_CALL(*mock_login_display_host_.get(), CreateLoginDisplay(_))
.Times(1)
.WillOnce(Return(mock_login_display_.get()));
@@ -154,16 +169,18 @@ class ExistingUserControllerTest : public CrosInProcessBrowserTest {
.Times(1);
}
- virtual void SetUpOnMainThread() {
+ virtual void SetUpOnMainThread() OVERRIDE {
+ testing_profile_.reset(new TestingProfile());
ExistingUserController* controller =
new ExistingUserController(mock_login_display_host_.get());
controller->Init(UserList());
- MockLoginPerformerDelegate* mock_delegate =
- new MockLoginPerformerDelegate(controller);
- existing_user_controller()->set_login_performer_delegate(mock_delegate);
+ profile_prepared_cb_ =
+ base::Bind(&ExistingUserController::OnProfilePrepared,
+ base::Unretained(existing_user_controller()),
+ testing_profile_.get());
}
- virtual void TearDownInProcessBrowserTestFixture() {
+ virtual void TearDownInProcessBrowserTestFixture() OVERRIDE {
CrosInProcessBrowserTest::TearDownInProcessBrowserTestFixture();
DBusThreadManager::Shutdown();
}
@@ -175,38 +192,101 @@ class ExistingUserControllerTest : public CrosInProcessBrowserTest {
scoped_ptr<MockLoginDisplay> mock_login_display_;
scoped_ptr<MockLoginDisplayHost> mock_login_display_host_;
+ // Owned by UserManagerImplWrapper.
+ MockUserManager* mock_user_manager_;
+
+ // Owned by LoginUtilsWrapper.
+ MockLoginUtils* mock_login_utils_;
+
+ scoped_ptr<TestingProfile> testing_profile_;
+
+ // Mock URLFetcher.
+ MockURLFetcherFactory<SuccessFetcher> factory_;
+
+ base::Callback<void(void)> profile_prepared_cb_;
+
private:
DISALLOW_COPY_AND_ASSIGN(ExistingUserControllerTest);
};
-// Test is flaky: crbug.com/25926
-IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, DISABLED_NewUserLogin) {
+scoped_refptr<Authenticator> CreateAuthenticator(
+ LoginStatusConsumer* consumer) {
+ return new MockAuthenticator(consumer, kUsername, kPassword);
+}
+
+scoped_refptr<Authenticator> CreateAuthenticatorNewUser(
+ LoginStatusConsumer* consumer) {
+ return new MockAuthenticator(consumer, kNewUsername, kPassword);
+}
+
+IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, ExistingUserLogin) {
EXPECT_CALL(*mock_login_display_host_, SetStatusAreaEnabled(false))
.Times(1);
EXPECT_CALL(*mock_login_display_, SetUIEnabled(false))
.Times(1);
+ EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_))
+ .Times(1)
+ .WillOnce(WithArg<0>(Invoke(CreateAuthenticator)));
+ EXPECT_CALL(*mock_login_utils_,
+ PrepareProfile(kUsername, _, kPassword, false, _, _, _))
+ .Times(1)
+ .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_,
+ &base::Callback<void(void)>::Run));
+ EXPECT_CALL(*mock_login_utils_,
+ DoBrowserLaunch(testing_profile_.get(),
+ mock_login_display_host_.get()))
+ .Times(1);
+ EXPECT_CALL(*mock_login_display_.get(), OnLoginSuccess(kUsername))
+ .Times(1);
+ EXPECT_CALL(*mock_login_display_.get(), OnFadeOut())
+ .Times(1);
EXPECT_CALL(*mock_login_display_host_,
StartWizard(WizardController::kUserImageScreenName, NULL))
- .Times(1);
+ .Times(0);
existing_user_controller()->Login(kUsername, kPassword);
+ ui_test_utils::RunAllPendingInMessageLoop();
}
IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, AutoEnrollAfterSignIn) {
EXPECT_CALL(*mock_login_display_host_,
StartWizard(WizardController::kEnterpriseEnrollmentScreenName, _))
.Times(1);
+ EXPECT_CALL(*mock_login_display_.get(), OnFadeOut())
+ .Times(1);
+ EXPECT_CALL(*mock_login_display_host_.get(), OnCompleteLogin())
+ .Times(1);
existing_user_controller()->DoAutoEnrollment();
existing_user_controller()->CompleteLogin(kUsername, kPassword);
+ ui_test_utils::RunAllPendingInMessageLoop();
}
-IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest, DontAutoEnrollAfterSignIn) {
+IN_PROC_BROWSER_TEST_F(ExistingUserControllerTest,
+ NewUserDontAutoEnrollAfterSignIn) {
EXPECT_CALL(*mock_login_display_host_,
StartWizard(WizardController::kEnterpriseEnrollmentScreenName, _))
.Times(0);
+ // That will be sign in of a new user and (legacy) registration screen is
+ // activated. In a real WizardController instance that is immediately switched
+ // to image screen but this tests uses MockLoginDisplayHost instead.
EXPECT_CALL(*mock_login_display_host_,
- StartWizard(WizardController::kUserImageScreenName, _))
+ StartWizard(WizardController::kRegistrationScreenName, _))
.Times(1);
- existing_user_controller()->CompleteLogin(kUsername, kPassword);
+ EXPECT_CALL(*mock_login_utils_, CreateAuthenticator(_))
+ .Times(1)
+ .WillOnce(WithArg<0>(Invoke(CreateAuthenticatorNewUser)));
+ EXPECT_CALL(*mock_login_utils_,
+ PrepareProfile(kNewUsername, _, kPassword, false, _, _, _))
+ .Times(1)
+ .WillOnce(InvokeWithoutArgs(&profile_prepared_cb_,
+ &base::Callback<void(void)>::Run));
+ EXPECT_CALL(*mock_login_display_.get(), OnLoginSuccess(kNewUsername))
+ .Times(1);
+ EXPECT_CALL(*mock_login_display_.get(), OnFadeOut())
+ .Times(1);
+ EXPECT_CALL(*mock_login_display_host_.get(), OnCompleteLogin())
+ .Times(1);
+ existing_user_controller()->CompleteLogin(kNewUsername, kPassword);
+ ui_test_utils::RunAllPendingInMessageLoop();
}
} // namespace chromeos
« no previous file with comments | « chrome/browser/chromeos/login/existing_user_controller.cc ('k') | chrome/browser/chromeos/login/login_display.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698