diff options
Diffstat (limited to 'chromium/content/browser/conversions/conversion_policy_unittest.cc')
-rw-r--r-- | chromium/content/browser/conversions/conversion_policy_unittest.cc | 127 |
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 |