summaryrefslogtreecommitdiff
path: root/chromium/content/browser/conversions/conversion_policy_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/conversions/conversion_policy_unittest.cc')
-rw-r--r--chromium/content/browser/conversions/conversion_policy_unittest.cc127
1 files changed, 31 insertions, 96 deletions
diff --git a/chromium/content/browser/conversions/conversion_policy_unittest.cc b/chromium/content/browser/conversions/conversion_policy_unittest.cc
index b2e5941da25..15ff3505fb7 100644
--- a/chromium/content/browser/conversions/conversion_policy_unittest.cc
+++ b/chromium/content/browser/conversions/conversion_policy_unittest.cc
@@ -16,17 +16,6 @@ namespace content {
namespace {
-constexpr base::TimeDelta kDefaultExpiry = base::TimeDelta::FromDays(30);
-
-ConversionReport GetReport(base::Time impression_time,
- base::Time conversion_time,
- base::TimeDelta expiry = kDefaultExpiry) {
- return ConversionReport(
- ImpressionBuilder(impression_time).SetExpiry(expiry).Build(),
- /*conversion_data=*/"123", conversion_time,
- /*conversion_id=*/base::nullopt);
-}
-
// Fake ConversionNoiseProvider that return un-noised conversion data.
class EmptyNoiseProvider : public ConversionPolicy::NoiseProvider {
public:
@@ -59,6 +48,15 @@ TEST_F(ConversionPolicyTest, HighEntropyConversionData_StrippedToLowerBits) {
->GetSanitizedConversionData(conversion_data));
}
+TEST_F(ConversionPolicyTest, SanitizeHighEntropyImpressionData_Unchanged) {
+ uint64_t impression_data = 256LU;
+
+ // The policy should not alter the impression data, and return the hexadecimal
+ // representation.
+ EXPECT_EQ("100",
+ ConversionPolicy().GetSanitizedImpressionData(impression_data));
+}
+
TEST_F(ConversionPolicyTest, ThreeBitConversionData_Unchanged) {
std::unique_ptr<ConversionPolicy> policy = ConversionPolicy::CreateForTesting(
std::make_unique<EmptyNoiseProvider>());
@@ -75,100 +73,37 @@ TEST_F(ConversionPolicyTest, SantizizeConversionData_OutputHasNoise) {
->GetSanitizedConversionData(4UL));
}
-TEST_F(ConversionPolicyTest, ImmediateConversion_FirstWindowUsed) {
- base::Time impression_time = base::Time::Now();
- auto report = GetReport(impression_time, /*conversion_time=*/impression_time);
- EXPECT_EQ(impression_time + base::TimeDelta::FromDays(2),
- ConversionPolicy().GetReportTimeForConversion(report));
-}
-
-TEST_F(ConversionPolicyTest, ConversionImmediatelyBeforeWindow_NextWindowUsed) {
- base::Time impression_time = base::Time::Now();
- base::Time conversion_time = impression_time + base::TimeDelta::FromDays(2) -
- base::TimeDelta::FromMinutes(1);
- auto report = GetReport(impression_time, conversion_time);
- EXPECT_EQ(impression_time + base::TimeDelta::FromDays(7),
- ConversionPolicy().GetReportTimeForConversion(report));
-}
-
-TEST_F(ConversionPolicyTest, ConversionBeforeWindowDelay_WindowUsed) {
- base::Time impression_time = base::Time::Now();
-
- // The deadline for a window is 1 hour before the window. Use a time just
- // before the deadline.
- base::Time conversion_time = impression_time + base::TimeDelta::FromDays(2) -
- base::TimeDelta::FromMinutes(61);
- auto report = GetReport(impression_time, conversion_time);
- EXPECT_EQ(impression_time + base::TimeDelta::FromDays(2),
- ConversionPolicy().GetReportTimeForConversion(report));
+// This test will fail flakily if noise is used.
+TEST_F(ConversionPolicyTest, DebugMode_ConversionDataNotNoised) {
+ uint64_t conversion_data = 0UL;
+ for (int i = 0; i < 100; i++) {
+ EXPECT_EQ(base::NumberToString(conversion_data),
+ ConversionPolicy(true /* debug_mode */)
+ .GetSanitizedConversionData(conversion_data));
+ }
}
-TEST_F(ConversionPolicyTest,
- ImpressionExpiryBeforeTwoDayWindow_TwoDayWindowUsed) {
+TEST_F(ConversionPolicyTest, NoExpiryForImpression_DefaultUsed) {
base::Time impression_time = base::Time::Now();
- base::Time conversion_time = impression_time + base::TimeDelta::FromHours(1);
-
- // Set the impression to expire before the two day window.
- auto report = GetReport(impression_time, conversion_time,
- /*expiry=*/base::TimeDelta::FromHours(2));
- EXPECT_EQ(impression_time + base::TimeDelta::FromDays(2),
- ConversionPolicy().GetReportTimeForConversion(report));
+ EXPECT_EQ(impression_time + base::TimeDelta::FromDays(30),
+ ConversionPolicy().GetExpiryTimeForImpression(
+ /*declared_expiry=*/base::nullopt, impression_time));
}
-TEST_F(ConversionPolicyTest,
- ImpressionExpiryBeforeSevenDayWindow_ExpiryWindowUsed) {
+TEST_F(ConversionPolicyTest, LargeImpressionExpirySpecified_ClampedTo30Days) {
+ constexpr base::TimeDelta declared_expiry = base::TimeDelta::FromDays(60);
base::Time impression_time = base::Time::Now();
- base::Time conversion_time = impression_time + base::TimeDelta::FromDays(3);
-
- // Set the impression to expire before the two day window.
- auto report = GetReport(impression_time, conversion_time,
- /*expiry=*/base::TimeDelta::FromDays(4));
-
- // The expiry window is reported one hour after expiry time.
- EXPECT_EQ(impression_time + base::TimeDelta::FromDays(4) +
- base::TimeDelta::FromHours(1),
- ConversionPolicy().GetReportTimeForConversion(report));
+ EXPECT_EQ(impression_time + base::TimeDelta::FromDays(30),
+ ConversionPolicy().GetExpiryTimeForImpression(declared_expiry,
+ impression_time));
}
-TEST_F(ConversionPolicyTest,
- ImpressionExpiryAfterSevenDayWindow_ExpiryWindowUsed) {
+TEST_F(ConversionPolicyTest, ImpressionExpirySpecified_ExpiryOverrideDefault) {
+ constexpr base::TimeDelta declared_expiry = base::TimeDelta::FromDays(10);
base::Time impression_time = base::Time::Now();
- base::Time conversion_time = impression_time + base::TimeDelta::FromDays(7);
-
- // Set the impression to expire before the two day window.
- auto report = GetReport(impression_time, conversion_time,
- /*expiry=*/base::TimeDelta::FromDays(9));
-
- // The expiry window is reported one hour after expiry time.
- EXPECT_EQ(impression_time + base::TimeDelta::FromDays(9) +
- base::TimeDelta::FromHours(1),
- ConversionPolicy().GetReportTimeForConversion(report));
-}
-
-TEST_F(ConversionPolicyTest,
- SingleReportForConversion_AttributionCreditAssigned) {
- base::Time now = base::Time::Now();
- std::vector<ConversionReport> reports = {
- GetReport(/*impression_time=*/now, /*conversion_time=*/now)};
- ConversionPolicy().AssignAttributionCredits(&reports);
- EXPECT_EQ(1u, reports.size());
- EXPECT_EQ(100, reports[0].attribution_credit);
-}
-
-TEST_F(ConversionPolicyTest, TwoReportsForConversion_LastReceivesCredit) {
- base::Time now = base::Time::Now();
- std::vector<ConversionReport> reports = {
- GetReport(/*impression_time=*/now, /*conversion_time=*/now),
- GetReport(/*impression_time=*/now + base::TimeDelta::FromHours(100),
- /*conversion_time=*/now)};
- ConversionPolicy().AssignAttributionCredits(&reports);
- EXPECT_EQ(2u, reports.size());
- EXPECT_EQ(0, reports[0].attribution_credit);
- EXPECT_EQ(100, reports[1].attribution_credit);
-
- // Ensure the reports were not rearranged.
- EXPECT_EQ(now + base::TimeDelta::FromHours(100),
- reports[1].impression.impression_time());
+ EXPECT_EQ(impression_time + base::TimeDelta::FromDays(10),
+ ConversionPolicy().GetExpiryTimeForImpression(declared_expiry,
+ impression_time));
}
} // namespace content