| Index: chrome/browser/ui/webui/signin/sync_confirmation_handler_unittest.cc
|
| diff --git a/chrome/browser/ui/webui/signin/sync_confirmation_handler_unittest.cc b/chrome/browser/ui/webui/signin/sync_confirmation_handler_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c5bd96670f04e212160e286705c861b03713b090
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/webui/signin/sync_confirmation_handler_unittest.cc
|
| @@ -0,0 +1,209 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/ui/webui/signin/sync_confirmation_handler.h"
|
| +
|
| +#include "base/values.h"
|
| +#include "chrome/browser/profiles/profile_avatar_icon_util.h"
|
| +#include "chrome/browser/signin/account_fetcher_service_factory.h"
|
| +#include "chrome/browser/signin/account_tracker_service_factory.h"
|
| +#include "chrome/browser/signin/fake_account_fetcher_service_builder.h"
|
| +#include "chrome/browser/signin/fake_signin_manager_builder.h"
|
| +#include "chrome/browser/signin/signin_manager_factory.h"
|
| +#include "chrome/browser/sync/profile_sync_service_factory.h"
|
| +#include "chrome/browser/ui/browser_commands.h"
|
| +#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| +#include "chrome/browser/ui/webui/signin/sync_confirmation_ui.h"
|
| +#include "chrome/test/base/browser_with_test_window_test.h"
|
| +#include "chrome/test/base/dialog_test_browser_window.h"
|
| +#include "chrome/test/base/testing_profile.h"
|
| +#include "components/browser_sync/browser/profile_sync_service.h"
|
| +#include "components/signin/core/browser/account_fetcher_service.h"
|
| +#include "components/signin/core/browser/fake_account_fetcher_service.h"
|
| +#include "components/signin/core/browser/fake_signin_manager.h"
|
| +#include "content/public/test/test_web_ui.h"
|
| +
|
| +const int kExpectedProfileImageSize = 128;
|
| +
|
| +class TestingSyncConfirmationHandler : public SyncConfirmationHandler {
|
| + public:
|
| + explicit TestingSyncConfirmationHandler(content::WebUI* web_ui) {
|
| + set_web_ui(web_ui);
|
| + }
|
| +
|
| + using SyncConfirmationHandler::HandleConfirm;
|
| + using SyncConfirmationHandler::HandleUndo;
|
| + using SyncConfirmationHandler::HandleInitialized;
|
| + using SyncConfirmationHandler::HandleGoToSettings;
|
| + using SyncConfirmationHandler::SetUserImageURL;
|
| +};
|
| +
|
| +class SyncConfirmationHandlerTest : public BrowserWithTestWindowTest {
|
| + public:
|
| + SyncConfirmationHandlerTest() : web_ui_(new content::TestWebUI) {}
|
| + void SetUp() override {
|
| + BrowserWithTestWindowTest::SetUp();
|
| + chrome::NewTab(browser());
|
| + web_ui()->set_web_contents(
|
| + browser()->tab_strip_model()->GetActiveWebContents());
|
| +
|
| + // WebUI owns the handlers.
|
| + handler_ = new TestingSyncConfirmationHandler(web_ui());
|
| + sync_confirmation_ui_.reset(
|
| + new SyncConfirmationUI(web_ui(), handler_));
|
| +
|
| + // This dialog assumes the signin flow was completed, which kicks off the
|
| + // SigninManager.
|
| + new OneClickSigninSyncStarter(
|
| + profile(),
|
| + browser(),
|
| + "gaia",
|
| + "foo@example.com",
|
| + "password",
|
| + "refresh_token",
|
| + OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS,
|
| + nullptr,
|
| + OneClickSigninSyncStarter::NO_CONFIRMATION,
|
| + GURL(),
|
| + GURL(),
|
| + OneClickSigninSyncStarter::Callback());
|
| + }
|
| +
|
| + void TearDown() override {
|
| + sync_confirmation_ui_.reset();
|
| + web_ui_.reset();
|
| + BrowserWithTestWindowTest::TearDown();
|
| + }
|
| +
|
| + TestingSyncConfirmationHandler* handler() {
|
| + return handler_;
|
| + }
|
| +
|
| + content::TestWebUI* web_ui() {
|
| + return web_ui_.get();
|
| + }
|
| +
|
| + FakeAccountFetcherService* account_fetcher_service() {
|
| + return static_cast<FakeAccountFetcherService*>(
|
| + AccountFetcherServiceFactory::GetForProfile(profile()));
|
| + }
|
| +
|
| + FakeSigninManager* signin_manager() {
|
| + return static_cast<FakeSigninManager*>(
|
| + SigninManagerFactory::GetForProfile(profile()));
|
| + }
|
| +
|
| + ProfileSyncService* sync() {
|
| + return ProfileSyncServiceFactory::GetForProfile(profile());
|
| + }
|
| +
|
| + // BrowserWithTestWindowTest
|
| + BrowserWindow* CreateBrowserWindow() override {
|
| + return new DialogTestBrowserWindow;
|
| + }
|
| +
|
| + TestingProfile* CreateProfile() override {
|
| + TestingProfile::Builder builder;
|
| + builder.AddTestingFactory(AccountFetcherServiceFactory::GetInstance(),
|
| + FakeAccountFetcherServiceBuilder::BuildForTests);
|
| + builder.AddTestingFactory(
|
| + SigninManagerFactory::GetInstance(), BuildFakeSigninManagerBase);
|
| + return builder.Build().release();
|
| + }
|
| +
|
| +private:
|
| + scoped_ptr<content::TestWebUI> web_ui_;
|
| + scoped_ptr<SyncConfirmationUI> sync_confirmation_ui_;
|
| + TestingSyncConfirmationHandler* handler_; // Not owned.
|
| +};
|
| +
|
| +TEST_F(SyncConfirmationHandlerTest, TestSetImageIfPrimaryAccountReady) {
|
| + account_fetcher_service()->FakeUserInfoFetchSuccess(
|
| + "gaia",
|
| + "foo@example.com",
|
| + "gaia",
|
| + "",
|
| + "full_name",
|
| + "given_name",
|
| + "locale",
|
| + "http://picture.example.com/picture.jpg");
|
| +
|
| + handler()->HandleInitialized(nullptr);
|
| + EXPECT_EQ(1U, web_ui()->call_data().size());
|
| + EXPECT_EQ("sync.confirmation.setUserImageURL",
|
| + web_ui()->call_data()[0]->function_name());
|
| + EXPECT_TRUE(
|
| + web_ui()->call_data()[0]->arg1()->IsType(base::Value::TYPE_STRING));
|
| + std::string passed_picture_url;
|
| + EXPECT_TRUE(
|
| + web_ui()->call_data()[0]->arg1()->GetAsString(&passed_picture_url));
|
| +
|
| + std::string original_picture_url =
|
| + AccountTrackerServiceFactory::GetForProfile(profile())->
|
| + GetAccountInfo("gaia").picture_url;
|
| + GURL picture_url_with_size;
|
| + EXPECT_TRUE(profiles::GetImageURLWithThumbnailSize(GURL(original_picture_url),
|
| + kExpectedProfileImageSize,
|
| + &picture_url_with_size));
|
| + EXPECT_EQ(picture_url_with_size.spec(), passed_picture_url);
|
| + handler()->HandleUndo(nullptr);
|
| +}
|
| +
|
| +TEST_F(SyncConfirmationHandlerTest, TestSetImageIfPrimaryAccountReadyLater) {
|
| + handler()->HandleInitialized(nullptr);
|
| + EXPECT_EQ(0U, web_ui()->call_data().size());
|
| +
|
| + account_fetcher_service()->FakeUserInfoFetchSuccess(
|
| + "gaia",
|
| + "foo@example.com",
|
| + "gaia",
|
| + "",
|
| + "full_name",
|
| + "given_name",
|
| + "locale",
|
| + "http://picture.example.com/picture.jpg");
|
| +
|
| + EXPECT_EQ(1U, web_ui()->call_data().size());
|
| + EXPECT_EQ("sync.confirmation.setUserImageURL",
|
| + web_ui()->call_data()[0]->function_name());
|
| + EXPECT_TRUE(
|
| + web_ui()->call_data()[0]->arg1()->IsType(base::Value::TYPE_STRING));
|
| + std::string passed_picture_url;
|
| + EXPECT_TRUE(
|
| + web_ui()->call_data()[0]->arg1()->GetAsString(&passed_picture_url));
|
| +
|
| + std::string original_picture_url =
|
| + AccountTrackerServiceFactory::GetForProfile(profile())->
|
| + GetAccountInfo("gaia").picture_url;
|
| + GURL picture_url_with_size;
|
| + EXPECT_TRUE(profiles::GetImageURLWithThumbnailSize(GURL(original_picture_url),
|
| + kExpectedProfileImageSize,
|
| + &picture_url_with_size));
|
| + EXPECT_EQ(picture_url_with_size.spec(), passed_picture_url);
|
| + handler()->HandleUndo(nullptr);
|
| +}
|
| +
|
| +TEST_F(SyncConfirmationHandlerTest, TestHandleUndo) {
|
| + EXPECT_FALSE(sync()->IsFirstSetupComplete());
|
| + EXPECT_TRUE(sync()->IsFirstSetupInProgress());
|
| +
|
| + handler()->HandleUndo(nullptr);
|
| +
|
| + EXPECT_FALSE(sync()->IsFirstSetupInProgress());
|
| + EXPECT_FALSE(sync()->IsFirstSetupComplete());
|
| + EXPECT_FALSE(
|
| + SigninManagerFactory::GetForProfile(profile())->IsAuthenticated());
|
| +}
|
| +
|
| +TEST_F(SyncConfirmationHandlerTest, TestHandleConfirm) {
|
| + EXPECT_FALSE(sync()->IsFirstSetupComplete());
|
| + EXPECT_TRUE(sync()->IsFirstSetupInProgress());
|
| +
|
| + handler()->HandleConfirm(nullptr);
|
| +
|
| + EXPECT_FALSE(sync()->IsFirstSetupInProgress());
|
| + EXPECT_TRUE(sync()->IsFirstSetupComplete());
|
| + EXPECT_TRUE(
|
| + SigninManagerFactory::GetForProfile(profile())->IsAuthenticated());
|
| +}
|
|
|