| Index: components/feedback/feedback_common_unittest.cc
|
| diff --git a/components/feedback/feedback_common_unittest.cc b/components/feedback/feedback_common_unittest.cc
|
| index d3fb9502210c7de0d591c84275b96038a58a6793..4496a9caa1d33a61af2e37a13d69205b1992de21 100644
|
| --- a/components/feedback/feedback_common_unittest.cc
|
| +++ b/components/feedback/feedback_common_unittest.cc
|
| @@ -11,6 +11,7 @@
|
| #include "components/feedback/proto/math.pb.h"
|
| #include "content/public/test/test_browser_thread.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "third_party/zlib/google/zip_reader.h"
|
|
|
| namespace {
|
| const char kOne[] = "one";
|
| @@ -20,60 +21,94 @@ const char kFour[] = "four";
|
| #define TEN_LINES "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n"
|
| const char kLongLog[] = TEN_LINES TEN_LINES TEN_LINES TEN_LINES TEN_LINES;
|
| const char kLogsAttachmentName[] = "system_logs.zip";
|
| +const char kLogsFilename[] = "system_logs.txt";
|
| } // namespace
|
|
|
| class FeedbackCommonTest : public testing::Test {
|
| protected:
|
| FeedbackCommonTest() {
|
| - feedback = scoped_refptr<FeedbackCommon>(new FeedbackCommon());
|
| + feedback_ = scoped_refptr<FeedbackCommon>(new FeedbackCommon());
|
| }
|
|
|
| ~FeedbackCommonTest() override {}
|
|
|
| - scoped_refptr<FeedbackCommon> feedback;
|
| - userfeedback::ExtensionSubmit report;
|
| + scoped_refptr<FeedbackCommon> feedback_;
|
| + userfeedback::ExtensionSubmit report_;
|
| };
|
|
|
| TEST_F(FeedbackCommonTest, TestBasicData) {
|
| // Test that basic data can be set and propagates to the request.
|
| - feedback->set_category_tag(kOne);
|
| - feedback->set_description(kTwo);
|
| - feedback->set_page_url(kThree);
|
| - feedback->set_user_email(kFour);
|
| - feedback->PrepareReport(&report);
|
| -
|
| - EXPECT_EQ(kOne, report.bucket());
|
| - EXPECT_EQ(kTwo, report.common_data().description());
|
| - EXPECT_EQ(kThree, report.web_data().url());
|
| - EXPECT_EQ(kFour, report.common_data().user_email());
|
| + feedback_->set_category_tag(kOne);
|
| + feedback_->set_description(kTwo);
|
| + feedback_->set_page_url(kThree);
|
| + feedback_->set_user_email(kFour);
|
| + feedback_->PrepareReport(&report_);
|
| +
|
| + EXPECT_EQ(kOne, report_.bucket());
|
| + EXPECT_EQ(kTwo, report_.common_data().description());
|
| + EXPECT_EQ(kThree, report_.web_data().url());
|
| + EXPECT_EQ(kFour, report_.common_data().user_email());
|
| }
|
|
|
| TEST_F(FeedbackCommonTest, TestAddLogs) {
|
| - feedback->AddLog(kOne, kTwo);
|
| - feedback->AddLog(kThree, kFour);
|
| + feedback_->AddLog(kOne, kTwo);
|
| + feedback_->AddLog(kThree, kFour);
|
|
|
| - EXPECT_EQ(2U, feedback->sys_info()->size());
|
| + EXPECT_EQ(2U, feedback_->sys_info()->size());
|
| }
|
|
|
| TEST_F(FeedbackCommonTest, TestCompressionThreshold) {
|
| // Add a large and small log, verify that only the small log gets
|
| // included in the report.
|
| - feedback->AddLog(kOne, kTwo);
|
| - feedback->AddLog(kThree, kLongLog);
|
| - feedback->PrepareReport(&report);
|
| + feedback_->AddLog(kOne, kTwo);
|
| + feedback_->AddLog(kThree, kLongLog);
|
| + feedback_->PrepareReport(&report_);
|
|
|
| - EXPECT_EQ(1, report.web_data().product_specific_data_size());
|
| - EXPECT_EQ(kOne, report.web_data().product_specific_data(0).key());
|
| + EXPECT_EQ(1, report_.web_data().product_specific_data_size());
|
| + EXPECT_EQ(kOne, report_.web_data().product_specific_data(0).key());
|
| }
|
|
|
| TEST_F(FeedbackCommonTest, TestCompression) {
|
| // Add a large and small log, verify that an attachment has been
|
| // added with the right name.
|
| - feedback->AddLog(kOne, kTwo);
|
| - feedback->AddLog(kThree, kLongLog);
|
| - feedback->CompressLogs();
|
| - feedback->PrepareReport(&report);
|
| + feedback_->AddLog(kOne, kTwo);
|
| + feedback_->AddLog(kThree, kLongLog);
|
| + feedback_->CompressLogs();
|
| + feedback_->PrepareReport(&report_);
|
| +
|
| + EXPECT_EQ(1, report_.product_specific_binary_data_size());
|
| + EXPECT_EQ(kLogsAttachmentName,
|
| + report_.product_specific_binary_data(0).name());
|
| +}
|
| +
|
| +TEST_F(FeedbackCommonTest, TestAddLogsAnonymization) {
|
| + std::string mac_address = "Some text 00:11:22:33:44:55 text";
|
| + std::string anonymized_mac_address = "Some text 00:11:22:00:00:01 text";
|
| + feedback_->AddLog(kOne, mac_address);
|
| + feedback_->AddLog(kThree, mac_address + kLongLog);
|
| + feedback_->CompressLogs();
|
| + feedback_->PrepareReport(&report_);
|
| +
|
| + // Log entry kOne and kThree are treated differently because of their size.
|
| + // kOne is stored uncompressed whereas kThree is large enough to be exported
|
| + // into a compressed file. Therefore, both need to be tested separately.
|
| +
|
| + // Verify that uncompressed data is anonymized.
|
| + ASSERT_EQ(1, report_.web_data().product_specific_data_size());
|
| + EXPECT_EQ(anonymized_mac_address,
|
| + report_.web_data().product_specific_data(0).value());
|
| +
|
| + // Verify that compressed data is anonymized.
|
| + ASSERT_EQ(1, report_.product_specific_binary_data_size());
|
| + const ::userfeedback::ProductSpecificBinaryData& binary_data =
|
| + report_.product_specific_binary_data(0);
|
| +
|
| + zip::ZipReader reader;
|
| + std::string content;
|
| + ASSERT_TRUE(reader.OpenFromString(binary_data.data()));
|
| + ASSERT_TRUE(reader.LocateAndOpenEntry(base::FilePath(kLogsFilename)));
|
| + ASSERT_TRUE(reader.ExtractCurrentEntryToString(1000u, &content));
|
|
|
| - EXPECT_EQ(1, report.product_specific_binary_data_size());
|
| - EXPECT_EQ(kLogsAttachmentName, report.product_specific_binary_data(0).name());
|
| + EXPECT_TRUE(content.find(anonymized_mac_address) != std::string::npos);
|
| + EXPECT_TRUE(content.find(mac_address) == std::string::npos);
|
| }
|
|
|