#include "components/feature_engagement/internal/feature_config_event_storage_validator.h"
#include <string>
#include "base/feature_list.h"
#include "base/metrics/field_trial.h"
#include "base/test/scoped_feature_list.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "components/feature_engagement/internal/editable_configuration.h"
#include "components/feature_engagement/internal/event_model.h"
#include "components/feature_engagement/internal/proto/feature_event.pb.h"
#include "components/feature_engagement/public/configuration.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace feature_engagement {
namespace {
BASE_FEATURE(…);
BASE_FEATURE(…);
BASE_FEATURE(…);
BASE_FEATURE(…);
FeatureConfig kNeverStored;
FeatureConfig kStoredInUsed1Day;
FeatureConfig kStoredInUsed2Days;
FeatureConfig kStoredInUsed10Days;
FeatureConfig kStoredInTrigger1Day;
FeatureConfig kStoredInTrigger2Days;
FeatureConfig kStoredInTrigger10Days;
FeatureConfig kStoredInEventConfigs1Day;
FeatureConfig kStoredInEventConfigs2Days;
FeatureConfig kStoredInEventConfigs10Days;
GroupConfig kGroupNeverStored;
void InitializeStorageFeatureConfigs() { … }
class FeatureConfigEventStorageValidatorTest : public ::testing::Test { … };
}
TEST_F(FeatureConfigEventStorageValidatorTest,
ShouldOnlyUseConfigFromEnabledFeatures) { … }
TEST_F(FeatureConfigEventStorageValidatorTest,
ShouldStoreIfSingleConfigHasMinimum1DayStorage) { … }
TEST_F(FeatureConfigEventStorageValidatorTest,
ShouldStoreIfAnyConfigHasMinimum1DayStorage) { … }
TEST_F(FeatureConfigEventStorageValidatorTest,
ShouldKeepIfSingleConfigMeetsEventAge) { … }
TEST_F(FeatureConfigEventStorageValidatorTest,
ShouldKeepIfAnyConfigMeetsEventAge) { … }
#if BUILDFLAG(IS_CHROMEOS_ASH)
TEST_F(FeatureConfigEventStorageValidatorTest,
ShouldStoreIfEventStartsWithPrefix) {
scoped_feature_list_.InitWithFeatures({kEventStorageTestFeatureFoo}, {});
UseConfig(kNeverStored);
EXPECT_FALSE(validator_.ShouldStore("myevent"));
UseConfigEventPrefix(kNeverStored, "event");
EXPECT_FALSE(validator_.ShouldStore("myevent"));
UseConfigEventPrefix(kNeverStored, "tneveym");
EXPECT_FALSE(validator_.ShouldStore("myevent"));
UseConfigEventPrefix(kNeverStored, "eventmy");
EXPECT_FALSE(validator_.ShouldStore("myevent"));
UseConfigEventPrefix(kNeverStored, "ymevent");
EXPECT_FALSE(validator_.ShouldStore("myevent"));
UseConfigEventPrefix(kNeverStored, "myeventfoo");
EXPECT_FALSE(validator_.ShouldStore("myevent"));
UseConfigEventPrefix(kNeverStored, "myevent");
EXPECT_FALSE(validator_.ShouldStore("my_event"));
UseConfigEventPrefix(kNeverStored, "myevent");
EXPECT_FALSE(validator_.ShouldStore("_myevent"));
UseConfigEventPrefix(kNeverStored, "myevent");
EXPECT_FALSE(validator_.ShouldStore("1myevent"));
UseConfigEventPrefix(kNeverStored, "myevent");
EXPECT_TRUE(validator_.ShouldStore("myevent"));
UseConfigEventPrefix(kNeverStored, "myevent");
EXPECT_TRUE(validator_.ShouldStore("myevent_a"));
UseConfigEventPrefix(kNeverStored, "myevent");
EXPECT_TRUE(validator_.ShouldStore("myevent1"));
UseConfigEventPrefix(kNeverStored, "Myevent");
EXPECT_FALSE(validator_.ShouldStore("myevent"));
UseConfigEventPrefix(kNeverStored, "myEvent");
EXPECT_FALSE(validator_.ShouldStore("myevent"));
UseConfigEventPrefix(kNeverStored, "Myevent");
EXPECT_TRUE(validator_.ShouldStore("Myevent"));
UseConfigEventPrefix(kNeverStored, "MyEvent");
EXPECT_FALSE(validator_.ShouldStore("Myevent"));
UseConfigEventPrefix(kNeverStored, "MyEvent");
EXPECT_TRUE(validator_.ShouldStore("MyEvent"));
UseConfigEventPrefix(kNeverStored, "myevent");
EXPECT_FALSE(validator_.ShouldStore(""));
UseConfigEventPrefix(kNeverStored, "myevent");
EXPECT_FALSE(validator_.ShouldStore(" "));
UseConfigEventPrefix(kNeverStored, "myevent");
EXPECT_FALSE(validator_.ShouldStore(" "));
UseConfigEventPrefix(kNeverStored, " myevent");
EXPECT_FALSE(validator_.ShouldStore(" "));
UseConfigEventPrefix(kNeverStored, "myevent");
EXPECT_FALSE(validator_.ShouldStore(" myevent"));
UseConfigEventPrefix(kNeverStored, "myevent");
EXPECT_FALSE(validator_.ShouldStore(" myevent"));
UseConfigEventPrefix(kNeverStored, " myevent");
EXPECT_FALSE(validator_.ShouldStore(" myevent"));
}
#endif
}