| Index: chrome/browser/sync/sync_ui_util_unittest.cc
|
| diff --git a/chrome/browser/sync/sync_ui_util_unittest.cc b/chrome/browser/sync/sync_ui_util_unittest.cc
|
| index 839792f723503f43247f5adc45c1ca2aeb830b3c..09367d1d3c07c8462443f76d050941cdd0f4a5d4 100644
|
| --- a/chrome/browser/sync/sync_ui_util_unittest.cc
|
| +++ b/chrome/browser/sync/sync_ui_util_unittest.cc
|
| @@ -6,6 +6,7 @@
|
| #include "base/basictypes.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| +#include "chrome/browser/signin/fake_auth_status_provider.h"
|
| #include "chrome/browser/signin/signin_manager.h"
|
| #include "chrome/browser/signin/signin_manager_fake.h"
|
| #include "chrome/browser/sync/profile_sync_service_mock.h"
|
| @@ -35,17 +36,12 @@ enum DistinctState {
|
| STATUS_CASE_PROTOCOL_ERROR,
|
| STATUS_CASE_PASSPHRASE_ERROR,
|
| STATUS_CASE_SYNCED,
|
| + STATUS_CASE_SYNC_DISABLED_BY_POLICY,
|
| NUMBER_OF_STATUS_CASES
|
| };
|
|
|
| namespace {
|
|
|
| -// Mock that allows us to mock a SigninManager that is authenticating.
|
| -class SigninManagerMock : public SigninManager {
|
| - public:
|
| - MOCK_CONST_METHOD0(AuthInProgress, bool());
|
| -};
|
| -
|
| // Utility function to test that GetStatusLabelsForSyncGlobalError returns
|
| // the correct results for the given states.
|
| void VerifySyncGlobalErrorResult(NiceMock<ProfileSyncServiceMock>* service,
|
| @@ -82,7 +78,6 @@ TEST(SyncUIUtilTest, PassphraseGlobalError) {
|
| browser_sync::SyncBackendHost::Status status;
|
| EXPECT_CALL(service, QueryDetailedSyncStatus(_))
|
| .WillRepeatedly(Return(false));
|
| -
|
| EXPECT_CALL(service, IsPassphraseRequired())
|
| .WillRepeatedly(Return(true));
|
| EXPECT_CALL(service, IsPassphraseRequiredForDecryption())
|
| @@ -159,8 +154,8 @@ TEST(SyncUIUtilTest, AuthStateGlobalError) {
|
| // Loads a ProfileSyncServiceMock to emulate one of a number of distinct cases
|
| // in order to perform tests on the generated messages.
|
| void GetDistinctCase(ProfileSyncServiceMock& service,
|
| - SigninManagerMock& signin,
|
| - GoogleServiceAuthError** auth_error,
|
| + FakeSigninManager* signin,
|
| + FakeAuthStatusProvider* provider,
|
| int caseNumber) {
|
| // Auth Error object is returned by reference in mock and needs to stay in
|
| // scope throughout test, so it is owned by calling method. However it is
|
| @@ -168,116 +163,121 @@ void GetDistinctCase(ProfileSyncServiceMock& service,
|
| switch (caseNumber) {
|
| case STATUS_CASE_SETUP_IN_PROGRESS: {
|
| EXPECT_CALL(service, HasSyncSetupCompleted())
|
| - .WillOnce(Return(false));
|
| + .WillRepeatedly(Return(false));
|
| EXPECT_CALL(service, FirstSetupInProgress())
|
| - .WillOnce(Return(true));
|
| + .WillRepeatedly(Return(true));
|
| browser_sync::SyncBackendHost::Status status;
|
| EXPECT_CALL(service, QueryDetailedSyncStatus(_))
|
| - .WillOnce(DoAll(SetArgPointee<0>(status),
|
| + .WillRepeatedly(DoAll(SetArgPointee<0>(status),
|
| Return(false)));
|
| - *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE);
|
| - EXPECT_CALL(service, GetAuthError())
|
| - .WillOnce(ReturnRef(**auth_error));
|
| - EXPECT_CALL(signin, AuthInProgress()).WillRepeatedly(Return(false));
|
| return;
|
| }
|
| case STATUS_CASE_SETUP_ERROR: {
|
| EXPECT_CALL(service, HasSyncSetupCompleted())
|
| - .WillOnce(Return(false));
|
| + .WillRepeatedly(Return(false));
|
| EXPECT_CALL(service, FirstSetupInProgress())
|
| - .WillOnce(Return(false));
|
| + .WillRepeatedly(Return(false));
|
| EXPECT_CALL(service, HasUnrecoverableError())
|
| - .WillOnce(Return(true));
|
| - EXPECT_CALL(signin, AuthInProgress()).WillRepeatedly(Return(false));
|
| + .WillRepeatedly(Return(true));
|
| browser_sync::SyncBackendHost::Status status;
|
| EXPECT_CALL(service, QueryDetailedSyncStatus(_))
|
| - .WillOnce(DoAll(SetArgPointee<0>(status),
|
| + .WillRepeatedly(DoAll(SetArgPointee<0>(status),
|
| Return(false)));
|
| return;
|
| }
|
| case STATUS_CASE_AUTHENTICATING: {
|
| EXPECT_CALL(service, HasSyncSetupCompleted())
|
| - .WillOnce(Return(true));
|
| + .WillRepeatedly(Return(true));
|
| + EXPECT_CALL(service, sync_initialized()).WillRepeatedly(Return(true));
|
| + EXPECT_CALL(service, IsPassphraseRequired())
|
| + .WillRepeatedly(Return(false));
|
| browser_sync::SyncBackendHost::Status status;
|
| EXPECT_CALL(service, QueryDetailedSyncStatus(_))
|
| - .WillOnce(DoAll(SetArgPointee<0>(status),
|
| + .WillRepeatedly(DoAll(SetArgPointee<0>(status),
|
| Return(false)));
|
| EXPECT_CALL(service, HasUnrecoverableError())
|
| - .WillOnce(Return(false));
|
| - EXPECT_CALL(signin, AuthInProgress()).WillRepeatedly(Return(true));
|
| - *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE);
|
| - EXPECT_CALL(service, GetAuthError())
|
| - .WillOnce(ReturnRef(**auth_error));
|
| + .WillRepeatedly(Return(false));
|
| + signin->set_auth_in_progress(true);
|
| return;
|
| }
|
| case STATUS_CASE_AUTH_ERROR: {
|
| EXPECT_CALL(service, HasSyncSetupCompleted())
|
| - .WillOnce(Return(true));
|
| + .WillRepeatedly(Return(true));
|
| + EXPECT_CALL(service, sync_initialized()).WillRepeatedly(Return(true));
|
| + EXPECT_CALL(service, IsPassphraseRequired())
|
| + .WillRepeatedly(Return(false));
|
| browser_sync::SyncBackendHost::Status status;
|
| EXPECT_CALL(service, QueryDetailedSyncStatus(_))
|
| - .WillOnce(DoAll(SetArgPointee<0>(status),
|
| + .WillRepeatedly(DoAll(SetArgPointee<0>(status),
|
| Return(false)));
|
| - *auth_error = new GoogleServiceAuthError(
|
| - GoogleServiceAuthError::SERVICE_UNAVAILABLE);
|
| + provider->SetAuthError(GoogleServiceAuthError(
|
| + GoogleServiceAuthError::SERVICE_UNAVAILABLE));
|
| EXPECT_CALL(service, HasUnrecoverableError())
|
| - .WillOnce(Return(false));
|
| - EXPECT_CALL(signin, AuthInProgress()).WillRepeatedly(Return(false));
|
| - EXPECT_CALL(service, GetAuthError())
|
| - .WillOnce(ReturnRef(**auth_error));
|
| + .WillRepeatedly(Return(false));
|
| return;
|
| }
|
| case STATUS_CASE_PROTOCOL_ERROR: {
|
| EXPECT_CALL(service, HasSyncSetupCompleted())
|
| - .WillOnce(Return(true));
|
| + .WillRepeatedly(Return(true));
|
| + EXPECT_CALL(service, sync_initialized()).WillRepeatedly(Return(true));
|
| + EXPECT_CALL(service, IsPassphraseRequired())
|
| + .WillRepeatedly(Return(false));
|
| syncer::SyncProtocolError protocolError;
|
| protocolError.action = syncer::STOP_AND_RESTART_SYNC;
|
| browser_sync::SyncBackendHost::Status status;
|
| status.sync_protocol_error = protocolError;
|
| EXPECT_CALL(service, QueryDetailedSyncStatus(_))
|
| - .WillOnce(DoAll(SetArgPointee<0>(status),
|
| + .WillRepeatedly(DoAll(SetArgPointee<0>(status),
|
| Return(false)));
|
| - *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE);
|
| - EXPECT_CALL(service, GetAuthError())
|
| - .WillOnce(ReturnRef(**auth_error));
|
| - EXPECT_CALL(signin, AuthInProgress()).WillRepeatedly(Return(false));
|
| EXPECT_CALL(service, HasUnrecoverableError())
|
| - .WillOnce(Return(false));
|
| + .WillRepeatedly(Return(false));
|
| return;
|
| }
|
| case STATUS_CASE_PASSPHRASE_ERROR: {
|
| EXPECT_CALL(service, HasSyncSetupCompleted())
|
| - .WillOnce(Return(true));
|
| + .WillRepeatedly(Return(true));
|
| + EXPECT_CALL(service, sync_initialized()).WillRepeatedly(Return(true));
|
| browser_sync::SyncBackendHost::Status status;
|
| EXPECT_CALL(service, QueryDetailedSyncStatus(_))
|
| - .WillOnce(DoAll(SetArgPointee<0>(status),
|
| + .WillRepeatedly(DoAll(SetArgPointee<0>(status),
|
| Return(false)));
|
| - *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE);
|
| - EXPECT_CALL(service, GetAuthError())
|
| - .WillOnce(ReturnRef(**auth_error));
|
| EXPECT_CALL(service, HasUnrecoverableError())
|
| - .WillOnce(Return(false));
|
| - EXPECT_CALL(signin, AuthInProgress()).WillRepeatedly(Return(false));
|
| + .WillRepeatedly(Return(false));
|
| EXPECT_CALL(service, IsPassphraseRequired())
|
| - .WillOnce(Return(true));
|
| + .WillRepeatedly(Return(true));
|
| EXPECT_CALL(service, IsPassphraseRequiredForDecryption())
|
| - .WillOnce(Return(true));
|
| + .WillRepeatedly(Return(true));
|
| return;
|
| }
|
| case STATUS_CASE_SYNCED: {
|
| EXPECT_CALL(service, HasSyncSetupCompleted())
|
| - .WillOnce(Return(true));
|
| + .WillRepeatedly(Return(true));
|
| + EXPECT_CALL(service, sync_initialized()).WillRepeatedly(Return(true));
|
| + EXPECT_CALL(service, IsPassphraseRequired())
|
| + .WillRepeatedly(Return(false));
|
| browser_sync::SyncBackendHost::Status status;
|
| EXPECT_CALL(service, QueryDetailedSyncStatus(_))
|
| - .WillOnce(DoAll(SetArgPointee<0>(status),
|
| + .WillRepeatedly(DoAll(SetArgPointee<0>(status),
|
| Return(false)));
|
| - *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE);
|
| - EXPECT_CALL(service, GetAuthError())
|
| - .WillOnce(ReturnRef(**auth_error));
|
| - EXPECT_CALL(signin, AuthInProgress()).WillRepeatedly(Return(false));
|
| EXPECT_CALL(service, HasUnrecoverableError())
|
| - .WillOnce(Return(false));
|
| + .WillRepeatedly(Return(false));
|
| + EXPECT_CALL(service, IsPassphraseRequired())
|
| + .WillRepeatedly(Return(false));
|
| + return;
|
| + }
|
| + case STATUS_CASE_SYNC_DISABLED_BY_POLICY: {
|
| + EXPECT_CALL(service, IsManaged()).WillRepeatedly(Return(true));
|
| + EXPECT_CALL(service, HasSyncSetupCompleted())
|
| + .WillRepeatedly(Return(false));
|
| + EXPECT_CALL(service, sync_initialized()).WillRepeatedly(Return(false));
|
| EXPECT_CALL(service, IsPassphraseRequired())
|
| - .WillOnce(Return(false));
|
| + .WillRepeatedly(Return(false));
|
| + browser_sync::SyncBackendHost::Status status;
|
| + EXPECT_CALL(service, QueryDetailedSyncStatus(_))
|
| + .WillRepeatedly(DoAll(SetArgPointee<0>(status),
|
| + Return(false)));
|
| + EXPECT_CALL(service, HasUnrecoverableError())
|
| + .WillRepeatedly(Return(false));
|
| return;
|
| }
|
| default:
|
| @@ -294,9 +294,10 @@ TEST(SyncUIUtilTest, DistinctCasesReportUniqueMessageSets) {
|
| scoped_ptr<Profile> profile(
|
| ProfileSyncServiceMock::MakeSignedInTestingProfile());
|
| ProfileSyncServiceMock service(profile.get());
|
| - NiceMock<SigninManagerMock> signin;
|
| - GoogleServiceAuthError* auth_error = NULL;
|
| - GetDistinctCase(service, signin, &auth_error, idx);
|
| + FakeSigninManager signin(profile.get());
|
| + signin.SetAuthenticatedUsername("test_user@test.com");
|
| + FakeAuthStatusProvider provider(signin.signin_global_error());
|
| + GetDistinctCase(service, &signin, &provider, idx);
|
| string16 status_label;
|
| string16 link_label;
|
| sync_ui_util::GetStatusLabels(&service,
|
| @@ -307,12 +308,15 @@ TEST(SyncUIUtilTest, DistinctCasesReportUniqueMessageSets) {
|
| // If the status and link message combination is already present in the set
|
| // of messages already seen, this is a duplicate rather than a unique
|
| // message, and the test has failed.
|
| + EXPECT_FALSE(status_label.empty()) <<
|
| + "Empty status label returned for case #" << idx;
|
| string16 combined_label =
|
| status_label + string16(ASCIIToUTF16("#")) + link_label;
|
| - EXPECT_TRUE(messages.find(combined_label) == messages.end());
|
| + EXPECT_TRUE(messages.find(combined_label) == messages.end()) <<
|
| + "Duplicate message for case #" << idx << ": " << combined_label;
|
| messages.insert(combined_label);
|
| - if (auth_error)
|
| - delete auth_error;
|
| + testing::Mock::VerifyAndClearExpectations(&service);
|
| + testing::Mock::VerifyAndClearExpectations(&signin);
|
| }
|
| }
|
|
|
| @@ -323,9 +327,10 @@ TEST(SyncUIUtilTest, HtmlNotIncludedInStatusIfNotRequested) {
|
| scoped_ptr<Profile> profile(
|
| ProfileSyncServiceMock::MakeSignedInTestingProfile());
|
| ProfileSyncServiceMock service(profile.get());
|
| - NiceMock<SigninManagerMock> signin;
|
| - GoogleServiceAuthError* auth_error = NULL;
|
| - GetDistinctCase(service, signin, &auth_error, idx);
|
| + FakeSigninManager signin(profile.get());
|
| + signin.SetAuthenticatedUsername("test_user@test.com");
|
| + FakeAuthStatusProvider provider(signin.signin_global_error());
|
| + GetDistinctCase(service, &signin, &provider, idx);
|
| string16 status_label;
|
| string16 link_label;
|
| sync_ui_util::GetStatusLabels(&service,
|
| @@ -333,13 +338,14 @@ TEST(SyncUIUtilTest, HtmlNotIncludedInStatusIfNotRequested) {
|
| sync_ui_util::PLAIN_TEXT,
|
| &status_label,
|
| &link_label);
|
| +
|
| // Ensures a search for string 'href' (found in links, not a string to be
|
| // found in an English language message) fails when links are excluded from
|
| // the status label.
|
| + EXPECT_FALSE(status_label.empty());
|
| EXPECT_EQ(status_label.find(string16(ASCIIToUTF16("href"))),
|
| string16::npos);
|
| - if (auth_error) {
|
| - delete auth_error;
|
| - }
|
| + testing::Mock::VerifyAndClearExpectations(&service);
|
| + testing::Mock::VerifyAndClearExpectations(&signin);
|
| }
|
| }
|
|
|