| Index: chrome/browser/signin/force_signin_manager_unittest.cc
|
| diff --git a/chrome/browser/signin/force_signin_manager_unittest.cc b/chrome/browser/signin/force_signin_manager_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0c4db7fc40e7caa2196d96e8469f98aed39686d9
|
| --- /dev/null
|
| +++ b/chrome/browser/signin/force_signin_manager_unittest.cc
|
| @@ -0,0 +1,88 @@
|
| +// 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/signin/force_signin_manager.h"
|
| +
|
| +#include <memory>
|
| +
|
| +#include "chrome/browser/prefs/browser_prefs.h"
|
| +#include "chrome/common/pref_names.h"
|
| +#include "chrome/test/base/browser_with_test_window_test.h"
|
| +#include "chrome/test/base/testing_browser_process.h"
|
| +#include "components/prefs/testing_pref_service.h"
|
| +#include "components/signin/core/browser/test_signin_client.h"
|
| +#include "testing/gmock/include/gmock/gmock.h"
|
| +
|
| +class MockForceSigninManager : public ForceSigninManager {
|
| + public:
|
| + explicit MockForceSigninManager(Profile* profile)
|
| + : ForceSigninManager(profile,
|
| + &test_client_,
|
| + nullptr,
|
| + &fake_service_,
|
| + nullptr) {}
|
| +
|
| + MOCK_METHOD3(DoSignOut,
|
| + void(signin_metrics::ProfileSignout,
|
| + signin_metrics::SignoutDelete,
|
| + const base::FilePath&));
|
| + MOCK_METHOD1(ShowUserManager, void(const base::FilePath&));
|
| +
|
| + TestSigninClient test_client_{nullptr};
|
| + AccountTrackerService fake_service_;
|
| +};
|
| +
|
| +class ForceSigninManagerTest : public BrowserWithTestWindowTest {
|
| + public:
|
| + void SetUp() override {
|
| + BrowserWithTestWindowTest::SetUp();
|
| + manager_.reset(new MockForceSigninManager(browser()->profile()));
|
| +
|
| + prefs_.reset(new TestingPrefServiceSimple());
|
| + chrome::RegisterLocalState(prefs_->registry());
|
| + TestingBrowserProcess::GetGlobal()->SetLocalState(prefs_.get());
|
| + prefs_->SetBoolean(prefs::kForceBrowserSignin, true);
|
| + }
|
| +
|
| + void TearDown() override {
|
| + BrowserWithTestWindowTest::TearDown();
|
| + TestingBrowserProcess::GetGlobal()->SetLocalState(nullptr);
|
| + }
|
| +
|
| + std::unique_ptr<MockForceSigninManager> manager_;
|
| + std::unique_ptr<TestingPrefServiceSimple> prefs_;
|
| +};
|
| +
|
| +TEST_F(ForceSigninManagerTest, Signout) {
|
| + signin_metrics::ProfileSignout source_metric =
|
| + signin_metrics::ProfileSignout::SIGNOUT_TEST;
|
| + signin_metrics::SignoutDelete delete_metric =
|
| + signin_metrics::SignoutDelete::IGNORE_METRIC;
|
| + EXPECT_CALL(*manager_, DoSignOut(source_metric, delete_metric,
|
| + browser()->profile()->GetPath()))
|
| + .Times(1);
|
| + EXPECT_CALL(*manager_, ShowUserManager(browser()->profile()->GetPath()))
|
| + .Times(1);
|
| + manager_->SignOut(source_metric, delete_metric);
|
| +}
|
| +
|
| +TEST_F(ForceSigninManagerTest, SignoutWithoutManager) {
|
| + signin_metrics::ProfileSignout source_metric =
|
| + signin_metrics::ProfileSignout::SIGNOUT_TEST;
|
| + signin_metrics::SignoutDelete delete_metric =
|
| + signin_metrics::SignoutDelete::IGNORE_METRIC;
|
| +
|
| + EXPECT_CALL(*manager_, DoSignOut(source_metric, delete_metric,
|
| + browser()->profile()->GetPath()))
|
| + .Times(1);
|
| + ForceSigninManager::DisableUserManagerDisplayForNextSignOut(manager_.get());
|
| + manager_->SignOut(source_metric, delete_metric);
|
| +
|
| + EXPECT_CALL(*manager_, DoSignOut(source_metric, delete_metric,
|
| + browser()->profile()->GetPath()))
|
| + .Times(1);
|
| + EXPECT_CALL(*manager_, ShowUserManager(browser()->profile()->GetPath()))
|
| + .Times(1);
|
| + manager_->SignOut(source_metric, delete_metric);
|
| +}
|
|
|