Chromium Code Reviews| Index: components/certificate_reporting/error_report_unittest.cc |
| diff --git a/components/certificate_reporting/error_report_unittest.cc b/components/certificate_reporting/error_report_unittest.cc |
| index c49b5448a5365ddbf56d91749c003edcd4c5ac48..f6d4167be1f203c4fe2c532033525ac4ed76d221 100644 |
| --- a/components/certificate_reporting/error_report_unittest.cc |
| +++ b/components/certificate_reporting/error_report_unittest.cc |
| @@ -7,10 +7,16 @@ |
| #include <set> |
| #include <string> |
| +#include "base/feature_list.h" |
| #include "base/files/file_path.h" |
| #include "base/files/file_util.h" |
| +#include "base/memory/ptr_util.h" |
| +#include "base/metrics/field_trial.h" |
| #include "base/path_service.h" |
| +#include "base/test/mock_entropy_provider.h" |
| +#include "base/test/scoped_feature_list.h" |
| #include "components/certificate_reporting/cert_logger.pb.h" |
| +#include "components/variations/variations_associated_data.h" |
| #include "net/cert/cert_status_flags.h" |
| #include "net/ssl/ssl_info.h" |
| #include "net/test/cert_test_util.h" |
| @@ -178,6 +184,59 @@ TEST(ErrorReportTest, CertificateTransparencyError) { |
| VerifyErrorReportSerialization(report_known, ssl_info, cert_errors)); |
| } |
| +// Tests that information about relevant features are included in the |
| +// report. |
| +TEST(ErrorReportTest, FeatureInfo) { |
| + // Set up a test feature. |
| + const std::string kTrialName = "Trial"; |
| + const std::string kGroupName = "group"; |
| + base::Feature kDummyFeature{"dummy_feature", |
| + base::FEATURE_ENABLED_BY_DEFAULT}; |
| + std::map<std::string, std::string> params; |
| + params["foo"] = "bar"; |
| + params["foo2"] = "bar2"; |
| + |
| + variations::testing::ClearAllVariationParams(); |
| + std::unique_ptr<base::FieldTrialList> field_trial_list; |
| + field_trial_list.reset(); |
|
meacer
2016/10/26 20:20:31
Needed?
estark
2016/10/28 00:02:34
Done.
|
| + field_trial_list.reset( |
| + new base::FieldTrialList(base::MakeUnique<base::MockEntropyProvider>())); |
| + |
| + base::FieldTrial* trial = base::FieldTrialList::FactoryGetFieldTrial( |
| + kTrialName, 100, kGroupName, 1971, 1, 1, |
| + base::FieldTrial::SESSION_RANDOMIZED, nullptr /* default_group_number */); |
| + ASSERT_TRUE( |
| + variations::AssociateVariationParams(kTrialName, kGroupName, params)); |
| + |
| + std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); |
| + feature_list->RegisterFieldTrialOverride( |
| + kDummyFeature.name, base::FeatureList::OVERRIDE_ENABLE_FEATURE, trial); |
| + std::unique_ptr<base::test::ScopedFeatureList> scoped_feature_list( |
| + new base::test::ScopedFeatureList()); |
| + scoped_feature_list->InitWithFeatureList(std::move(feature_list)); |
| + |
| + // Serialize a report containing information about the test feature. |
| + SSLInfo ssl_info; |
| + ASSERT_NO_FATAL_FAILURE( |
| + GetTestSSLInfo(INCLUDE_UNVERIFIED_CERT_CHAIN, &ssl_info, kCertStatus)); |
| + ErrorReport report(kDummyHostname, ssl_info); |
| + report.AddFeature(kDummyFeature); |
| + std::string serialized_report; |
| + ASSERT_TRUE(report.Serialize(&serialized_report)); |
| + |
| + // Check that the report contains the test feature information. |
| + CertLoggerRequest parsed; |
| + ASSERT_TRUE(parsed.ParseFromString(serialized_report)); |
| + ASSERT_EQ(1, parsed.features_info().size()); |
| + EXPECT_EQ(kDummyFeature.name, parsed.features_info(0).feature()); |
| + EXPECT_TRUE(parsed.features_info(0).enabled()); |
| + std::map<std::string, std::string> parsed_params; |
| + for (const auto& param : parsed.features_info(0).params()) { |
| + parsed_params[param.name()] = param.value(); |
| + } |
| + EXPECT_EQ(params, parsed_params); |
| +} |
| + |
| } // namespace |
| } // namespace certificate_reporting |