blob: e10758a31e97d3f7767dd5e40fc4694523ad178d [file] [log] [blame]
// Copyright 2015 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 "components/password_manager/core/browser/password_bubble_experiment.h"
#include <ostream>
#include "base/feature_list.h"
#include "base/strings/string_number_conversions.h"
#include "base/test/scoped_feature_list.h"
#include "build/chromeos_buildflags.h"
#include "components/password_manager/core/common/password_manager_features.h"
#include "components/password_manager/core/common/password_manager_pref_names.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
#include "components/prefs/testing_pref_service.h"
#include "components/signin/public/base/signin_pref_names.h"
#include "components/signin/public/identity_manager/identity_manager.h"
#include "components/sync/base/model_type.h"
#include "components/sync/driver/test_sync_service.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace password_bubble_experiment {
namespace {
enum class CustomPassphraseState { NONE, SET };
} // namespace
class PasswordManagerPasswordBubbleExperimentTest : public testing::Test {
public:
PasswordManagerPasswordBubbleExperimentTest() {
signin::IdentityManager::RegisterProfilePrefs(pref_service_.registry());
}
syncer::TestSyncService* sync_service() { return &fake_sync_service_; }
protected:
void SetupFakeSyncServiceForTestCase(syncer::ModelType type,
CustomPassphraseState passphrase_state) {
sync_service()->SetPreferredDataTypes({type});
sync_service()->SetActiveDataTypes({type});
sync_service()->SetIsUsingExplicitPassphrase(passphrase_state ==
CustomPassphraseState::SET);
}
private:
syncer::TestSyncService fake_sync_service_;
TestingPrefServiceSimple pref_service_;
};
TEST_F(PasswordManagerPasswordBubbleExperimentTest, IsSmartLockUser) {
constexpr struct {
syncer::ModelType type;
CustomPassphraseState passphrase_state;
bool expected_sync_user;
} kTestData[] = {
{syncer::ModelType::BOOKMARKS, CustomPassphraseState::NONE, false},
{syncer::ModelType::BOOKMARKS, CustomPassphraseState::SET, false},
{syncer::ModelType::PASSWORDS, CustomPassphraseState::NONE, true},
{syncer::ModelType::PASSWORDS, CustomPassphraseState::SET, true},
};
for (const auto& test_case : kTestData) {
SCOPED_TRACE(testing::Message("#test_case = ") << (&test_case - kTestData));
SetupFakeSyncServiceForTestCase(test_case.type, test_case.passphrase_state);
EXPECT_EQ(test_case.expected_sync_user, IsSmartLockUser(sync_service()));
}
}
} // namespace password_bubble_experiment