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

Unified Diff: chrome/browser/ui/webui/sync_setup_handler_unittest.cc

Issue 12502017: signin: pull basic SigninManager functionality into new SigninManagerBase class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix override Created 7 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/ui/webui/sync_setup_handler_unittest.cc
diff --git a/chrome/browser/ui/webui/sync_setup_handler_unittest.cc b/chrome/browser/ui/webui/sync_setup_handler_unittest.cc
index a400d9421a4667b4e9662aa6ef1f26e3cfe7a6c5..1dd00f737d0c0e2dd21753f47c78edbcf6f2b101 100644
--- a/chrome/browser/ui/webui/sync_setup_handler_unittest.cc
+++ b/chrome/browser/ui/webui/sync_setup_handler_unittest.cc
@@ -14,6 +14,7 @@
#include "base/stl_util.h"
#include "base/values.h"
#include "chrome/browser/signin/fake_auth_status_provider.h"
+#include "chrome/browser/signin/signin_manager.h"
#include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/browser/signin/signin_manager_fake.h"
#include "chrome/browser/sync/profile_sync_service_factory.h"
@@ -331,14 +332,15 @@ class TestingSyncSetupHandler : public SyncSetupHandler {
DISALLOW_COPY_AND_ASSIGN(TestingSyncSetupHandler);
};
-class SigninManagerMock : public FakeSigninManager {
+class SigninManagerBaseMock : public FakeSigninManagerBase {
public:
- explicit SigninManagerMock(Profile* profile) : FakeSigninManager(profile) {}
+ explicit SigninManagerBaseMock(Profile* profile)
+ : FakeSigninManagerBase(profile) {}
MOCK_CONST_METHOD1(IsAllowedUsername, bool(const std::string& username));
};
-static ProfileKeyedService* BuildSigninManagerMock(Profile* profile) {
- return new SigninManagerMock(profile);
+static ProfileKeyedService* BuildSigninManagerBaseMock(Profile* profile) {
+ return new SigninManagerBaseMock(profile);
}
// The boolean parameter indicates whether the test is run with ClientOAuth
@@ -372,9 +374,9 @@ class SyncSetupHandlerTest : public testing::TestWithParam<bool> {
Return(syncer::IMPLICIT_PASSPHRASE));
ON_CALL(*mock_pss_, GetPassphraseTime()).WillByDefault(
Return(base::Time()));
- mock_signin_ = static_cast<SigninManagerMock*>(
+ mock_signin_ = static_cast<SigninManagerBase*>(
SigninManagerFactory::GetInstance()->SetTestingFactoryAndUse(
- profile_.get(), BuildSigninManagerMock));
+ profile_.get(), BuildSigninManagerBaseMock));
handler_.reset(new TestingSyncSetupHandler(&web_ui_, profile_.get()));
}
@@ -425,7 +427,7 @@ class SyncSetupHandlerTest : public testing::TestWithParam<bool> {
GoogleServiceAuthError error_;
// MessageLoop instance is required to work with OneShotTimer.
MessageLoop message_loop_;
- SigninManagerMock* mock_signin_;
+ SigninManagerBase* mock_signin_;
TestWebUI web_ui_;
scoped_ptr<TestingSyncSetupHandler> handler_;
};
@@ -663,7 +665,41 @@ TEST_P(SyncSetupHandlerTest,
profile_.get())->current_login_ui());
}
-TEST_P(SyncSetupHandlerTest, HandleGaiaAuthFailure) {
+#if !defined(OS_CHROMEOS)
+
+namespace {
+class SigninManagerMock : public FakeSigninManager {
+ public:
+ explicit SigninManagerMock(Profile* profile) : FakeSigninManager(profile) {
+ }
+
+ virtual void StartSignIn(const std::string& username,
+ const std::string& password,
+ const std::string& login_token,
+ const std::string& login_captcha) OVERRIDE {
+ SetAuthenticatedUsername(username);
+ }
+
+ MOCK_CONST_METHOD1(IsAllowedUsername, bool(const std::string& username));
+};
+}
+
+static ProfileKeyedService* BuildSigninManagerMock(Profile* profile) {
+ return new SigninManagerMock(profile);
+}
+
+class SyncSetupHandlerNonCrosTest : public SyncSetupHandlerTest {
+ public:
+ SyncSetupHandlerNonCrosTest() {}
+ virtual void SetUp() OVERRIDE {
+ SyncSetupHandlerTest::SetUp();
+ mock_signin_ = static_cast<SigninManagerMock*>(
+ SigninManagerFactory::GetInstance()->SetTestingFactoryAndUse(
+ profile_.get(), BuildSigninManagerMock));
+ }
+};
+
+TEST_P(SyncSetupHandlerNonCrosTest, HandleGaiaAuthFailure) {
EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn())
.WillRepeatedly(Return(false));
EXPECT_CALL(*mock_pss_, IsSyncTokenAvailable())
@@ -702,7 +738,7 @@ TEST_P(SyncSetupHandlerTest, HandleGaiaAuthFailure) {
}
}
-TEST_P(SyncSetupHandlerTest, HandleCaptcha) {
+TEST_P(SyncSetupHandlerNonCrosTest, HandleCaptcha) {
EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn())
.WillRepeatedly(Return(false));
EXPECT_CALL(*mock_pss_, IsSyncTokenAvailable())
@@ -742,7 +778,7 @@ TEST_P(SyncSetupHandlerTest, HandleCaptcha) {
}
// TODO(kochi): We need equivalent tests for ChromeOS.
-TEST_P(SyncSetupHandlerTest, UnrecoverableErrorInitializingSync) {
+TEST_P(SyncSetupHandlerNonCrosTest, UnrecoverableErrorInitializingSync) {
EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn())
.WillRepeatedly(Return(false));
EXPECT_CALL(*mock_pss_, IsSyncTokenAvailable())
@@ -787,7 +823,7 @@ TEST_P(SyncSetupHandlerTest, UnrecoverableErrorInitializingSync) {
}
}
-TEST_P(SyncSetupHandlerTest, GaiaErrorInitializingSync) {
+TEST_P(SyncSetupHandlerNonCrosTest, GaiaErrorInitializingSync) {
EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn())
.WillRepeatedly(Return(false));
EXPECT_CALL(*mock_pss_, IsSyncTokenAvailable())
@@ -833,6 +869,52 @@ TEST_P(SyncSetupHandlerTest, GaiaErrorInitializingSync) {
}
}
+// Tests that trying to log in with an invalid username results in an error
+// displayed to the user.
+TEST_P(SyncSetupHandlerNonCrosTest, SubmitAuthWithInvalidUsername) {
+ SigninManagerMock* mock_signin =
+ static_cast<SigninManagerMock*>(mock_signin_);
+ EXPECT_CALL(*mock_signin, IsAllowedUsername(_)).
+ WillRepeatedly(Return(false));
+
+ // Generate a blob of json that matches what would be submitted by the login
+ // javascript code.
+ DictionaryValue args;
+ args.SetString("user", "user@not_allowed.com");
+ args.SetString("pass", "password");
+ args.SetString("captcha", "");
+ args.SetString("otp", "");
+ args.SetString("accessCode", "");
+ std::string json;
+ base::JSONWriter::Write(&args, &json);
+ ListValue list_args;
+ list_args.Append(new StringValue(json));
+
+ // Mimic a login attempt from the UI.
+ handler_->HandleSubmitAuth(&list_args);
+
+ // Should result in the login page being displayed again.
+ ASSERT_EQ(1U, web_ui_.call_data().size());
+ const TestWebUI::CallData& data = web_ui_.call_data()[0];
+ EXPECT_EQ("SyncSetupOverlay.showSyncSetupPage", data.function_name);
+ std::string page;
+ ASSERT_TRUE(data.arg1->GetAsString(&page));
+ EXPECT_EQ(page, "login");
+
+ // Also make sure that the appropriate error message is being passed.
+ DictionaryValue* dictionary;
+ ASSERT_TRUE(data.arg2->GetAsDictionary(&dictionary));
+ std::string err = l10n_util::GetStringUTF8(IDS_SYNC_LOGIN_NAME_PROHIBITED);
+ CheckShowSyncSetupArgs(
+ dictionary, err, false, GoogleServiceAuthError::NONE, "", true, "");
+ handler_->CloseSyncSetup();
+ EXPECT_EQ(NULL,
+ LoginUIServiceFactory::GetForProfile(
+ profile_.get())->current_login_ui());
+}
+
+#endif // #if !defined(OS_CHROMEOS)
+
TEST_P(SyncSetupHandlerTest, TestSyncEverything) {
std::string args = GetConfiguration(
NULL, SYNC_ALL_DATA, GetAllTypes(), "", ENCRYPT_PASSWORDS);
@@ -1231,48 +1313,6 @@ TEST_P(SyncSetupHandlerTest, ShowSetupEncryptAll) {
CheckBool(dictionary, "encryptAllData", true);
}
-// Tests that trying to log in with an invalid username results in an error
-// displayed to the user.
-TEST_P(SyncSetupHandlerTest, SubmitAuthWithInvalidUsername) {
- EXPECT_CALL(*mock_signin_, IsAllowedUsername(_)).
- WillRepeatedly(Return(false));
-
- // Generate a blob of json that matches what would be submitted by the login
- // javascript code.
- DictionaryValue args;
- args.SetString("user", "user@not_allowed.com");
- args.SetString("pass", "password");
- args.SetString("captcha", "");
- args.SetString("otp", "");
- args.SetString("accessCode", "");
- std::string json;
- base::JSONWriter::Write(&args, &json);
- ListValue list_args;
- list_args.Append(new StringValue(json));
-
- // Mimic a login attempt from the UI.
- handler_->HandleSubmitAuth(&list_args);
-
- // Should result in the login page being displayed again.
- ASSERT_EQ(1U, web_ui_.call_data().size());
- const TestWebUI::CallData& data = web_ui_.call_data()[0];
- EXPECT_EQ("SyncSetupOverlay.showSyncSetupPage", data.function_name);
- std::string page;
- ASSERT_TRUE(data.arg1->GetAsString(&page));
- EXPECT_EQ(page, "login");
-
- // Also make sure that the appropriate error message is being passed.
- DictionaryValue* dictionary;
- ASSERT_TRUE(data.arg2->GetAsDictionary(&dictionary));
- std::string err = l10n_util::GetStringUTF8(IDS_SYNC_LOGIN_NAME_PROHIBITED);
- CheckShowSyncSetupArgs(
- dictionary, err, false, GoogleServiceAuthError::NONE, "", true, "");
- handler_->CloseSyncSetup();
- EXPECT_EQ(NULL,
- LoginUIServiceFactory::GetForProfile(
- profile_.get())->current_login_ui());
-}
-
INSTANTIATE_TEST_CASE_P(SyncSetupHandlerTestWithParam,
SyncSetupHandlerTest,
Values(true, false));

Powered by Google App Engine
This is Rietveld 408576698