Commit 49d17c6b authored by Antonio Gomes's avatar Antonio Gomes Committed by Commit Bot

Use ChromeSigninClient::PreSignOut() instead of SigninManager::SignOut() in ChromeSigninClientTests

This CL is step forward to move the test away from SigninManager, PO2TS and AccountTrackerService
completely. The CL:

1) removes the knowledge of the tests about internals of SigninManager (eg that
SigninManager::OnSignoutDecisionReached is called during the SignOut routine).

2) Removes MockSigninManager class completely, after tests switched away to use
ChromeSigninClient::PreSignOut() instead of SigninManager::SignOut().

3) Calls ChromeSigninClient::AfterCredentialsCopied instead of SigninManager::CopyCredentialsFrom
keeping the same behavior.

BUG=890787

Change-Id: Ib9dbc5feb073ec7bbda452a680e71de27a361e79
Reviewed-on: https://chromium-review.googlesource.com/c/1394663
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Reviewed-by: default avatarColin Blundell <blundell@chromium.org>
Reviewed-by: default avatarDavid Roger <droger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#619936}
parent bb4f76ac
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include "components/signin/core/browser/account_consistency_method.h" #include "components/signin/core/browser/account_consistency_method.h"
#include "content/public/browser/network_service_instance.h" #include "content/public/browser/network_service_instance.h"
#include "content/public/test/test_browser_thread_bundle.h" #include "content/public/test/test_browser_thread_bundle.h"
#include "google_apis/gaia/fake_oauth2_token_service.h"
#include "services/network/test/test_network_connection_tracker.h" #include "services/network/test/test_network_connection_tracker.h"
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
...@@ -136,24 +135,12 @@ class MockChromeSigninClient : public ChromeSigninClient { ...@@ -136,24 +135,12 @@ class MockChromeSigninClient : public ChromeSigninClient {
MOCK_METHOD1(ShowUserManager, void(const base::FilePath&)); MOCK_METHOD1(ShowUserManager, void(const base::FilePath&));
MOCK_METHOD1(LockForceSigninProfile, void(const base::FilePath&)); MOCK_METHOD1(LockForceSigninProfile, void(const base::FilePath&));
};
class MockSigninManager : public SigninManager { MOCK_METHOD4(SignOutCallback,
public:
explicit MockSigninManager(SigninClient* client)
: SigninManager(client,
nullptr,
&fake_service_,
nullptr,
signin::AccountConsistencyMethod::kDisabled) {}
MOCK_METHOD4(OnSignoutDecisionReached,
void(signin_metrics::ProfileSignout, void(signin_metrics::ProfileSignout,
signin_metrics::SignoutDelete, signin_metrics::SignoutDelete,
RemoveAccountsOption remove_option, SigninManager::RemoveAccountsOption remove_option,
SigninClient::SignoutDecision signout_decision)); SigninClient::SignoutDecision signout_decision));
AccountTrackerService fake_service_;
}; };
class ChromeSigninClientSignoutTest : public BrowserWithTestWindowTest { class ChromeSigninClientSignoutTest : public BrowserWithTestWindowTest {
...@@ -163,7 +150,6 @@ class ChromeSigninClientSignoutTest : public BrowserWithTestWindowTest { ...@@ -163,7 +150,6 @@ class ChromeSigninClientSignoutTest : public BrowserWithTestWindowTest {
signin_util::SetForceSigninForTesting(true); signin_util::SetForceSigninForTesting(true);
CreateClient(browser()->profile()); CreateClient(browser()->profile());
manager_ = std::make_unique<MockSigninManager>(client_.get());
} }
void TearDown() override { void TearDown() override {
...@@ -173,12 +159,19 @@ class ChromeSigninClientSignoutTest : public BrowserWithTestWindowTest { ...@@ -173,12 +159,19 @@ class ChromeSigninClientSignoutTest : public BrowserWithTestWindowTest {
void CreateClient(Profile* profile) { void CreateClient(Profile* profile) {
client_ = std::make_unique<MockChromeSigninClient>(profile); client_ = std::make_unique<MockChromeSigninClient>(profile);
token_service_ = std::make_unique<FakeOAuth2TokenService>(); }
void PreSignOut(signin_metrics::ProfileSignout source_metric,
signin_metrics::SignoutDelete delete_metric) {
client_->PreSignOut(
base::BindOnce(&MockChromeSigninClient::SignOutCallback,
base::Unretained(client_.get()), source_metric,
delete_metric,
SigninManager::RemoveAccountsOption::kRemoveAllAccounts),
source_metric);
} }
std::unique_ptr<MockChromeSigninClient> client_; std::unique_ptr<MockChromeSigninClient> client_;
std::unique_ptr<FakeOAuth2TokenService> token_service_;
std::unique_ptr<MockSigninManager> manager_;
}; };
TEST_F(ChromeSigninClientSignoutTest, SignOut) { TEST_F(ChromeSigninClientSignoutTest, SignOut) {
...@@ -191,14 +184,14 @@ TEST_F(ChromeSigninClientSignoutTest, SignOut) { ...@@ -191,14 +184,14 @@ TEST_F(ChromeSigninClientSignoutTest, SignOut) {
.Times(1); .Times(1);
EXPECT_CALL(*client_, LockForceSigninProfile(browser()->profile()->GetPath())) EXPECT_CALL(*client_, LockForceSigninProfile(browser()->profile()->GetPath()))
.Times(1); .Times(1);
EXPECT_CALL(*manager_, EXPECT_CALL(
OnSignoutDecisionReached( *client_,
source_metric, delete_metric, SignOutCallback(source_metric, delete_metric,
SigninManager::RemoveAccountsOption::kRemoveAllAccounts, SigninManager::RemoveAccountsOption::kRemoveAllAccounts,
SigninClient::SignoutDecision::ALLOW_SIGNOUT)) SigninClient::SignoutDecision::ALLOW_SIGNOUT))
.Times(1); .Times(1);
manager_->SignOut(source_metric, delete_metric); PreSignOut(source_metric, delete_metric);
} }
TEST_F(ChromeSigninClientSignoutTest, SignOutWithoutManager) { TEST_F(ChromeSigninClientSignoutTest, SignOutWithoutManager) {
...@@ -207,40 +200,41 @@ TEST_F(ChromeSigninClientSignoutTest, SignOutWithoutManager) { ...@@ -207,40 +200,41 @@ TEST_F(ChromeSigninClientSignoutTest, SignOutWithoutManager) {
signin_metrics::SignoutDelete delete_metric = signin_metrics::SignoutDelete delete_metric =
signin_metrics::SignoutDelete::IGNORE_METRIC; signin_metrics::SignoutDelete::IGNORE_METRIC;
MockSigninManager other_manager(client_.get()); // Call the method below instead calling SigninManager::CopyCredentialsFrom,
other_manager.CopyCredentialsFrom(*manager_.get()); // keeping the same behavior.
client_->AfterCredentialsCopied();
EXPECT_CALL(*client_, ShowUserManager(browser()->profile()->GetPath())) EXPECT_CALL(*client_, ShowUserManager(browser()->profile()->GetPath()))
.Times(0); .Times(0);
EXPECT_CALL(*client_, LockForceSigninProfile(browser()->profile()->GetPath())) EXPECT_CALL(*client_, LockForceSigninProfile(browser()->profile()->GetPath()))
.Times(1); .Times(1);
EXPECT_CALL(*manager_, EXPECT_CALL(
OnSignoutDecisionReached( *client_,
source_metric, delete_metric, SignOutCallback(source_metric, delete_metric,
SigninManager::RemoveAccountsOption::kRemoveAllAccounts, SigninManager::RemoveAccountsOption::kRemoveAllAccounts,
SigninClient::SignoutDecision::ALLOW_SIGNOUT)) SigninClient::SignoutDecision::ALLOW_SIGNOUT))
.Times(1); .Times(1);
manager_->SignOut(source_metric, delete_metric);
::testing::Mock::VerifyAndClearExpectations(manager_.get()); PreSignOut(source_metric, delete_metric);
::testing::Mock::VerifyAndClearExpectations(client_.get());
EXPECT_CALL(*client_, ShowUserManager(browser()->profile()->GetPath())) EXPECT_CALL(*client_, ShowUserManager(browser()->profile()->GetPath()))
.Times(1); .Times(1);
EXPECT_CALL(*client_, LockForceSigninProfile(browser()->profile()->GetPath())) EXPECT_CALL(*client_, LockForceSigninProfile(browser()->profile()->GetPath()))
.Times(1); .Times(1);
EXPECT_CALL(*manager_, EXPECT_CALL(
OnSignoutDecisionReached( *client_,
source_metric, delete_metric, SignOutCallback(source_metric, delete_metric,
SigninManager::RemoveAccountsOption::kRemoveAllAccounts, SigninManager::RemoveAccountsOption::kRemoveAllAccounts,
SigninClient::SignoutDecision::ALLOW_SIGNOUT)) SigninClient::SignoutDecision::ALLOW_SIGNOUT))
.Times(1); .Times(1);
manager_->SignOut(source_metric, delete_metric); PreSignOut(source_metric, delete_metric);
} }
TEST_F(ChromeSigninClientSignoutTest, SignOutWithoutForceSignin) { TEST_F(ChromeSigninClientSignoutTest, SignOutWithoutForceSignin) {
signin_util::SetForceSigninForTesting(false); signin_util::SetForceSigninForTesting(false);
CreateClient(browser()->profile()); CreateClient(browser()->profile());
manager_ = std::make_unique<MockSigninManager>(client_.get());
signin_metrics::ProfileSignout source_metric = signin_metrics::ProfileSignout source_metric =
signin_metrics::ProfileSignout::USER_CLICKED_SIGNOUT_SETTINGS; signin_metrics::ProfileSignout::USER_CLICKED_SIGNOUT_SETTINGS;
...@@ -251,13 +245,13 @@ TEST_F(ChromeSigninClientSignoutTest, SignOutWithoutForceSignin) { ...@@ -251,13 +245,13 @@ TEST_F(ChromeSigninClientSignoutTest, SignOutWithoutForceSignin) {
.Times(0); .Times(0);
EXPECT_CALL(*client_, LockForceSigninProfile(browser()->profile()->GetPath())) EXPECT_CALL(*client_, LockForceSigninProfile(browser()->profile()->GetPath()))
.Times(0); .Times(0);
EXPECT_CALL(*manager_, EXPECT_CALL(
OnSignoutDecisionReached( *client_,
source_metric, delete_metric, SignOutCallback(source_metric, delete_metric,
SigninManager::RemoveAccountsOption::kRemoveAllAccounts, SigninManager::RemoveAccountsOption::kRemoveAllAccounts,
SigninClient::SignoutDecision::ALLOW_SIGNOUT)) SigninClient::SignoutDecision::ALLOW_SIGNOUT))
.Times(1); .Times(1);
manager_->SignOut(source_metric, delete_metric); PreSignOut(source_metric, delete_metric);
} }
class ChromeSigninClientSignoutSourceTest class ChromeSigninClientSignoutSourceTest
...@@ -306,20 +300,19 @@ TEST_P(ChromeSigninClientSignoutSourceTest, UserSignoutAllowed) { ...@@ -306,20 +300,19 @@ TEST_P(ChromeSigninClientSignoutSourceTest, UserSignoutAllowed) {
std::unique_ptr<TestingProfile> profile = builder.Build(); std::unique_ptr<TestingProfile> profile = builder.Build();
CreateClient(profile.get()); CreateClient(profile.get());
manager_ = std::make_unique<MockSigninManager>(client_.get());
ASSERT_TRUE(signin_util::IsUserSignoutAllowedForProfile(profile.get())); ASSERT_TRUE(signin_util::IsUserSignoutAllowedForProfile(profile.get()));
// Verify SigninManager gets callback indicating sign-out is always allowed. // Verify SigninManager gets callback indicating sign-out is always allowed.
signin_metrics::SignoutDelete delete_metric = signin_metrics::SignoutDelete delete_metric =
signin_metrics::SignoutDelete::IGNORE_METRIC; signin_metrics::SignoutDelete::IGNORE_METRIC;
EXPECT_CALL(*manager_, EXPECT_CALL(
OnSignoutDecisionReached( *client_,
signout_source, delete_metric, SignOutCallback(signout_source, delete_metric,
SigninManager::RemoveAccountsOption::kRemoveAllAccounts, SigninManager::RemoveAccountsOption::kRemoveAllAccounts,
SigninClient::SignoutDecision::ALLOW_SIGNOUT)) SigninClient::SignoutDecision::ALLOW_SIGNOUT))
.Times(1); .Times(1);
manager_->SignOut(signout_source, delete_metric); PreSignOut(signout_source, delete_metric);
} }
#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
...@@ -331,7 +324,6 @@ TEST_P(ChromeSigninClientSignoutSourceTest, UserSignoutDisallowed) { ...@@ -331,7 +324,6 @@ TEST_P(ChromeSigninClientSignoutSourceTest, UserSignoutDisallowed) {
std::unique_ptr<TestingProfile> profile = builder.Build(); std::unique_ptr<TestingProfile> profile = builder.Build();
CreateClient(profile.get()); CreateClient(profile.get());
manager_ = std::make_unique<MockSigninManager>(client_.get());
ASSERT_TRUE(signin_util::IsUserSignoutAllowedForProfile(profile.get())); ASSERT_TRUE(signin_util::IsUserSignoutAllowedForProfile(profile.get()));
signin_util::SetUserSignoutAllowedForProfile(profile.get(), false); signin_util::SetUserSignoutAllowedForProfile(profile.get(), false);
...@@ -345,14 +337,14 @@ TEST_P(ChromeSigninClientSignoutSourceTest, UserSignoutDisallowed) { ...@@ -345,14 +337,14 @@ TEST_P(ChromeSigninClientSignoutSourceTest, UserSignoutDisallowed) {
: SigninClient::SignoutDecision::ALLOW_SIGNOUT; : SigninClient::SignoutDecision::ALLOW_SIGNOUT;
signin_metrics::SignoutDelete delete_metric = signin_metrics::SignoutDelete delete_metric =
signin_metrics::SignoutDelete::IGNORE_METRIC; signin_metrics::SignoutDelete::IGNORE_METRIC;
EXPECT_CALL(*manager_, EXPECT_CALL(
OnSignoutDecisionReached( *client_,
signout_source, delete_metric, SignOutCallback(signout_source, delete_metric,
SigninManager::RemoveAccountsOption::kRemoveAllAccounts, SigninManager::RemoveAccountsOption::kRemoveAllAccounts,
signout_decision)) signout_decision))
.Times(1); .Times(1);
manager_->SignOut(signout_source, delete_metric); PreSignOut(signout_source, delete_metric);
} }
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment