1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/location.h"
#include "chrome/browser/sync/test/integration/multi_client_status_change_checker.h"
#include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
#include "chrome/browser/sync/test/integration/sync_integration_test_util.h"
#include "chrome/browser/sync/test/integration/sync_service_impl_harness.h"
#include "chrome/browser/sync/test/integration/sync_test.h"
#include "chrome/browser/sync/test/integration/webauthn_credentials_helper.h"
#include "chrome/browser/ui/browser.h"
#include "components/sync/protocol/entity_specifics.pb.h"
#include "components/sync/protocol/webauthn_credential_specifics.pb.h"
#include "components/webauthn/core/browser/passkey_model.h"
#include "content/public/test/browser_test.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace {
using webauthn_credentials_helper::AwaitAllModelsMatch;
using webauthn_credentials_helper::GetModel;
using webauthn_credentials_helper::NewPasskey;
class TwoClientWebAuthnCredentialsSyncTest : public SyncTest {
public:
TwoClientWebAuthnCredentialsSyncTest() : SyncTest(TWO_CLIENT) {}
~TwoClientWebAuthnCredentialsSyncTest() override = default;
};
IN_PROC_BROWSER_TEST_F(TwoClientWebAuthnCredentialsSyncTest,
E2E_ENABLED(AddAndDelete)) {
ASSERT_TRUE(ResetSyncForPrimaryAccount());
ASSERT_TRUE(SetupSync());
webauthn::PasskeyModel& model0 = GetModel(0);
EXPECT_EQ(model0.GetAllSyncIds().size(), 0u);
sync_pb::WebauthnCredentialSpecifics passkey0 = NewPasskey();
const std::string sync_id0 = model0.AddNewPasskeyForTesting(passkey0);
EXPECT_EQ(model0.GetAllSyncIds().size(), 1u);
webauthn::PasskeyModel& model1 = GetModel(1);
ASSERT_TRUE(AwaitAllModelsMatch());
EXPECT_EQ(model1.GetAllSyncIds().size(), 1u);
const std::string sync_id1 = model1.AddNewPasskeyForTesting(NewPasskey());
ASSERT_TRUE(AwaitAllModelsMatch());
EXPECT_EQ(model1.GetAllSyncIds().size(), 2u);
ASSERT_TRUE(model1.DeletePasskey(passkey0.credential_id(), FROM_HERE));
ASSERT_TRUE(AwaitAllModelsMatch());
EXPECT_EQ(model1.GetAllSyncIds().size(), 1u);
}
} // namespace
|