using passwords_helper::AddLogin;
using passwords_helper::AllProfilesContainSamePasswordForms;
using passwords_helper::AllProfilesContainSamePasswordFormsAsVerifier;
+using passwords_helper::AwaitAllProfilesContainSamePasswordForms;
+using passwords_helper::AwaitProfileContainsSamePasswordFormsAsVerifier;
using passwords_helper::CreateTestPasswordForm;
using passwords_helper::GetPasswordCount;
using passwords_helper::GetPasswordStore;
using passwords_helper::GetVerifierPasswordCount;
using passwords_helper::GetVerifierPasswordStore;
-using passwords_helper::ProfileContainsSamePasswordFormsAsVerifier;
using passwords_helper::RemoveLogin;
using passwords_helper::RemoveLogins;
using passwords_helper::SetDecryptionPassphrase;
using passwords_helper::SetEncryptionPassphrase;
using passwords_helper::UpdateLogin;
-using sync_integration_test_util::AwaitCommitActivityCompletion;
using sync_integration_test_util::AwaitPassphraseAccepted;
using sync_integration_test_util::AwaitPassphraseRequired;
using autofill::PasswordForm;
static const char* kValidPassphrase = "passphrase!";
-static const char* kAnotherValidPassphrase = "another passphrase!";
class TwoClientPasswordsSyncTest : public SyncTest {
public:
TwoClientPasswordsSyncTest() : SyncTest(TWO_CLIENT) {}
virtual ~TwoClientPasswordsSyncTest() {}
+ virtual bool TestUsesSelfNotifications() OVERRIDE { return false; }
+
private:
DISALLOW_COPY_AND_ASSIGN(TwoClientPasswordsSyncTest);
};
+class LegacyTwoClientPasswordsSyncTest : public SyncTest {
+ public:
+ LegacyTwoClientPasswordsSyncTest() : SyncTest(TWO_CLIENT_LEGACY) {}
+ virtual ~LegacyTwoClientPasswordsSyncTest() {}
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(LegacyTwoClientPasswordsSyncTest);
+};
+
// TCM ID - 3732277
IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, Add) {
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
AddLogin(GetPasswordStore(0), form);
ASSERT_EQ(1, GetPasswordCount(0));
- ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier());
+ ASSERT_TRUE(AwaitAllProfilesContainSamePasswordForms());
}
IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, Race) {
form1.password_value = base::ASCIIToUTF16("new_password");
AddLogin(GetPasswordStore(1), form1);
- ASSERT_TRUE(AwaitQuiescence());
- ASSERT_TRUE(AllProfilesContainSamePasswordForms());
-}
-
-// TCM ID - 4577932.
-IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, DisablePasswords) {
- ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
- ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier());
-
- ASSERT_TRUE(GetClient(1)->DisableSyncForDatatype(syncer::PASSWORDS));
- PasswordForm form = CreateTestPasswordForm(0);
- AddLogin(GetVerifierPasswordStore(), form);
- ASSERT_EQ(1, GetVerifierPasswordCount());
- AddLogin(GetPasswordStore(0), form);
- ASSERT_EQ(1, GetPasswordCount(0));
-
- ASSERT_TRUE(AwaitCommitActivityCompletion(GetClient(0)->service()));
- ASSERT_TRUE(ProfileContainsSamePasswordFormsAsVerifier(0));
- ASSERT_FALSE(ProfileContainsSamePasswordFormsAsVerifier(1));
-
- ASSERT_TRUE(GetClient(1)->EnableSyncForDatatype(syncer::PASSWORDS));
- ASSERT_TRUE(AwaitQuiescence());
- ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier());
- ASSERT_EQ(1, GetPasswordCount(1));
-}
-
-// TCM ID - 4649281.
-IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, DisableSync) {
- ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
- ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier());
-
- ASSERT_TRUE(GetClient(1)->DisableSyncForAllDatatypes());
- PasswordForm form = CreateTestPasswordForm(0);
- AddLogin(GetVerifierPasswordStore(), form);
- ASSERT_EQ(1, GetVerifierPasswordCount());
- AddLogin(GetPasswordStore(0), form);
- ASSERT_EQ(1, GetPasswordCount(0));
-
- ASSERT_TRUE(AwaitCommitActivityCompletion(GetClient(0)->service()));
- ASSERT_TRUE(ProfileContainsSamePasswordFormsAsVerifier(0));
- ASSERT_FALSE(ProfileContainsSamePasswordFormsAsVerifier(1));
-
- ASSERT_TRUE(GetClient(1)->EnableSyncForAllDatatypes());
- ASSERT_TRUE(AwaitQuiescence());
- ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier());
- ASSERT_EQ(1, GetPasswordCount(1));
-}
-
-IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, SetPassphrase) {
- ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-
- SetEncryptionPassphrase(0, kValidPassphrase, ProfileSyncService::EXPLICIT);
- ASSERT_TRUE(AwaitPassphraseAccepted(GetClient(0)->service()));
- ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
-
- ASSERT_TRUE(AwaitPassphraseRequired(GetClient(1)->service()));
- ASSERT_TRUE(SetDecryptionPassphrase(1, kValidPassphrase));
- ASSERT_TRUE(AwaitPassphraseAccepted(GetClient(1)->service()));
- ASSERT_TRUE(AwaitCommitActivityCompletion(GetClient(1)->service()));
+ ASSERT_TRUE(AwaitAllProfilesContainSamePasswordForms());
}
IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest,
ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
SetEncryptionPassphrase(0, kValidPassphrase, ProfileSyncService::EXPLICIT);
- ASSERT_TRUE(AwaitPassphraseAccepted(GetClient(0)->service()));
- ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+ ASSERT_TRUE(AwaitPassphraseAccepted(GetSyncService((0))));
- ASSERT_TRUE(AwaitPassphraseRequired(GetClient(1)->service()));
+ ASSERT_TRUE(AwaitPassphraseRequired(GetSyncService((1))));
ASSERT_TRUE(SetDecryptionPassphrase(1, kValidPassphrase));
- ASSERT_TRUE(AwaitPassphraseAccepted(GetClient(1)->service()));
+ ASSERT_TRUE(AwaitPassphraseAccepted(GetSyncService((1))));
PasswordForm form = CreateTestPasswordForm(0);
AddLogin(GetPasswordStore(0), form);
ASSERT_EQ(1, GetPasswordCount(0));
- ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_EQ(1, GetPasswordCount(1));
+ ASSERT_TRUE(AwaitAllProfilesContainSamePasswordForms());
}
// TCM ID - 4603879
PasswordForm form = CreateTestPasswordForm(0);
AddLogin(GetVerifierPasswordStore(), form);
AddLogin(GetPasswordStore(0), form);
- ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
+
+ // Wait for client 0 to commit and client 1 to receive the update.
+ ASSERT_TRUE(AwaitProfileContainsSamePasswordFormsAsVerifier(1));
form.password_value = base::ASCIIToUTF16("new_password");
UpdateLogin(GetVerifierPasswordStore(), form);
UpdateLogin(GetPasswordStore(1), form);
- ASSERT_TRUE(AwaitQuiescence());
-
ASSERT_EQ(1, GetVerifierPasswordCount());
+
+ // Wait for client 1 to commit and client 0 to receive the update.
+ ASSERT_TRUE(AwaitProfileContainsSamePasswordFormsAsVerifier(0));
ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier());
}
PasswordForm form1 = CreateTestPasswordForm(1);
AddLogin(GetVerifierPasswordStore(), form1);
AddLogin(GetPasswordStore(0), form1);
- ASSERT_TRUE(AwaitQuiescence());
+
+ // Wait for client 0 to commit and client 1 to receive the update.
+ ASSERT_TRUE(AwaitProfileContainsSamePasswordFormsAsVerifier(1));
RemoveLogin(GetPasswordStore(1), form0);
RemoveLogin(GetVerifierPasswordStore(), form0);
- ASSERT_TRUE(AwaitQuiescence());
-
ASSERT_EQ(1, GetVerifierPasswordCount());
+
+ // Wait for deletion from client 1 to propagate.
+ ASSERT_TRUE(AwaitProfileContainsSamePasswordFormsAsVerifier(0));
ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier());
}
PasswordForm form1 = CreateTestPasswordForm(1);
AddLogin(GetVerifierPasswordStore(), form1);
AddLogin(GetPasswordStore(0), form1);
- ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(AwaitProfileContainsSamePasswordFormsAsVerifier(1));
+ ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier());
RemoveLogins(GetPasswordStore(1));
RemoveLogins(GetVerifierPasswordStore());
- ASSERT_TRUE(AwaitQuiescence());
-
- ASSERT_EQ(0, GetVerifierPasswordCount());
+ ASSERT_TRUE(AwaitProfileContainsSamePasswordFormsAsVerifier(0));
ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier());
+ ASSERT_EQ(0, GetVerifierPasswordCount());
}
// TCM ID - 3694311
AddLogin(GetPasswordStore(1), form1);
PasswordForm form2 = CreateTestPasswordForm(2);
AddLogin(GetPasswordStore(1), form2);
- ASSERT_TRUE(AwaitQuiescence());
+ ASSERT_TRUE(AwaitAllProfilesContainSamePasswordForms());
ASSERT_EQ(3, GetPasswordCount(0));
- ASSERT_TRUE(AllProfilesContainSamePasswordForms());
-}
-
-IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest,
- SetPassphraseAndThenSetupSync) {
- ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
-
- ASSERT_TRUE(GetClient(0)->SetupSync());
- SetEncryptionPassphrase(0, kValidPassphrase, ProfileSyncService::EXPLICIT);
- ASSERT_TRUE(AwaitPassphraseAccepted(GetClient(0)->service()));
- ASSERT_TRUE(AwaitCommitActivityCompletion(GetClient(0)->service()));
-
- ASSERT_FALSE(GetClient(1)->SetupSync());
- ASSERT_TRUE(AwaitPassphraseRequired(GetClient(1)->service()));
- ASSERT_TRUE(SetDecryptionPassphrase(1, kValidPassphrase));
- ASSERT_TRUE(AwaitPassphraseAccepted(GetClient(1)->service()));
-
- // For some reason, the tests won't pass unless these flags are set.
- GetClient(1)->service()->SetSetupInProgress(false);
- GetClient(1)->service()->SetSyncSetupCompleted();
-
- ASSERT_TRUE(AwaitCommitActivityCompletion(GetClient(1)->service()));
-
- // Following ensures types are enabled and active (see bug 87572).
- syncer::ModelSafeRoutingInfo routes;
- GetClient(0)->service()->GetModelSafeRoutingInfo(&routes);
- ASSERT_EQ(syncer::GROUP_PASSWORD, routes[syncer::PASSWORDS]);
- routes.clear();
- GetClient(1)->service()->GetModelSafeRoutingInfo(&routes);
- ASSERT_EQ(syncer::GROUP_PASSWORD, routes[syncer::PASSWORDS]);
-}
-
-IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest,
- SetDifferentPassphraseAndThenSetupSync) {
- ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
-
- ASSERT_TRUE(GetClient(0)->SetupSync());
- SetEncryptionPassphrase(0, kValidPassphrase, ProfileSyncService::EXPLICIT);
- ASSERT_TRUE(AwaitPassphraseAccepted(GetClient(0)->service()));
- ASSERT_TRUE(AwaitCommitActivityCompletion(GetClient(0)->service()));
-
- // Setup 1 with a different passphrase, so that it fails to sync.
- ASSERT_FALSE(GetClient(1)->SetupSync());
- ASSERT_TRUE(AwaitPassphraseRequired(GetClient(1)->service()));
- ASSERT_FALSE(SetDecryptionPassphrase(1, kAnotherValidPassphrase));
- ASSERT_TRUE(AwaitPassphraseRequired(GetClient(1)->service()));
-
- // Add a password on 0 while clients have different passphrases.
- PasswordForm form0 = CreateTestPasswordForm(0);
- AddLogin(GetVerifierPasswordStore(), form0);
- AddLogin(GetPasswordStore(0), form0);
-
- ASSERT_TRUE(AwaitCommitActivityCompletion(GetClient(0)->service()));
-
- // Password hasn't been synced to 1 yet.
- ASSERT_FALSE(AllProfilesContainSamePasswordFormsAsVerifier());
-
- // Update 1 with the correct passphrase, the password should now sync over.
- ASSERT_TRUE(AwaitPassphraseRequired(GetClient(1)->service()));
- ASSERT_TRUE(SetDecryptionPassphrase(1, kValidPassphrase));
- ASSERT_TRUE(AwaitPassphraseAccepted(GetClient(1)->service()));
-
- // For some reason, the tests won't pass unless these flags are set.
- GetClient(1)->service()->SetSetupInProgress(false);
- GetClient(1)->service()->SetSyncSetupCompleted();
-
- ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
- ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier());
}