Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/feedback/feedback_common.h" | 5 #include "components/feedback/feedback_common.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/files/scoped_temp_dir.h" | |
| 8 #include "components/feedback/proto/common.pb.h" | 9 #include "components/feedback/proto/common.pb.h" |
| 9 #include "components/feedback/proto/dom.pb.h" | 10 #include "components/feedback/proto/dom.pb.h" |
| 10 #include "components/feedback/proto/extension.pb.h" | 11 #include "components/feedback/proto/extension.pb.h" |
| 11 #include "components/feedback/proto/math.pb.h" | 12 #include "components/feedback/proto/math.pb.h" |
| 12 #include "content/public/test/test_browser_thread.h" | 13 #include "content/public/test/test_browser_thread.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 15 #include "third_party/zlib/google/zip.h" | |
| 14 | 16 |
| 15 namespace { | 17 namespace { |
| 16 const char kOne[] = "one"; | 18 const char kOne[] = "one"; |
| 17 const char kTwo[] = "two"; | 19 const char kTwo[] = "two"; |
| 18 const char kThree[] = "three"; | 20 const char kThree[] = "three"; |
| 19 const char kFour[] = "four"; | 21 const char kFour[] = "four"; |
| 20 #define TEN_LINES "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n" | 22 #define TEN_LINES "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n" |
| 21 const char kLongLog[] = TEN_LINES TEN_LINES TEN_LINES TEN_LINES TEN_LINES; | 23 const char kLongLog[] = TEN_LINES TEN_LINES TEN_LINES TEN_LINES TEN_LINES; |
| 22 const char kLogsAttachmentName[] = "system_logs.zip"; | 24 const char kLogsAttachmentName[] = "system_logs.zip"; |
| 25 const char kLogsFilename[] = "system_logs.txt"; | |
| 23 } // namespace | 26 } // namespace |
| 24 | 27 |
| 25 class FeedbackCommonTest : public testing::Test { | 28 class FeedbackCommonTest : public testing::Test { |
| 26 protected: | 29 protected: |
| 27 FeedbackCommonTest() { | 30 FeedbackCommonTest() { |
| 28 feedback = scoped_refptr<FeedbackCommon>(new FeedbackCommon()); | 31 feedback = scoped_refptr<FeedbackCommon>(new FeedbackCommon()); |
| 29 } | 32 } |
| 30 | 33 |
| 31 ~FeedbackCommonTest() override {} | 34 ~FeedbackCommonTest() override {} |
| 32 | 35 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 70 // Add a large and small log, verify that an attachment has been | 73 // Add a large and small log, verify that an attachment has been |
| 71 // added with the right name. | 74 // added with the right name. |
| 72 feedback->AddLog(kOne, kTwo); | 75 feedback->AddLog(kOne, kTwo); |
| 73 feedback->AddLog(kThree, kLongLog); | 76 feedback->AddLog(kThree, kLongLog); |
| 74 feedback->CompressLogs(); | 77 feedback->CompressLogs(); |
| 75 feedback->PrepareReport(&report); | 78 feedback->PrepareReport(&report); |
| 76 | 79 |
| 77 EXPECT_EQ(1, report.product_specific_binary_data_size()); | 80 EXPECT_EQ(1, report.product_specific_binary_data_size()); |
| 78 EXPECT_EQ(kLogsAttachmentName, report.product_specific_binary_data(0).name()); | 81 EXPECT_EQ(kLogsAttachmentName, report.product_specific_binary_data(0).name()); |
| 79 } | 82 } |
| 83 | |
| 84 TEST_F(FeedbackCommonTest, TestAddLogsAnonymization) { | |
| 85 std::string mac_address = "Some text 00:11:22:33:44:55 text"; | |
| 86 std::string anonymized_mac_address = "Some text 00:11:22:00:00:01 text"; | |
| 87 feedback->AddLog(kOne, mac_address); | |
| 88 feedback->AddLog(kThree, mac_address + kLongLog); | |
| 89 feedback->CompressLogs(); | |
| 90 feedback->PrepareReport(&report); | |
|
vasilii
2015/12/17 12:40:37
The class members aren't marked with '_'. It's ver
battre
2015/12/17 13:24:24
Done.
| |
| 91 | |
| 92 // Verify that uncompressed data is anonymized. | |
|
vasilii
2015/12/17 12:40:37
But you compress them above.
battre
2015/12/17 13:24:24
The feedback can contain two types of data at the
vasilii
2015/12/17 13:39:05
Then it should go to a comment explaining why two
battre
2015/12/17 14:34:55
Done.
| |
| 93 ASSERT_EQ(1, report.web_data().product_specific_data_size()); | |
| 94 EXPECT_EQ(anonymized_mac_address, | |
| 95 report.web_data().product_specific_data(0).value()); | |
| 96 | |
| 97 // Verify that compressed data is anonymized. | |
| 98 ASSERT_EQ(1, report.product_specific_binary_data_size()); | |
| 99 const ::userfeedback::ProductSpecificBinaryData& binary_data = | |
| 100 report.product_specific_binary_data(0); | |
| 101 | |
| 102 base::ScopedTempDir scoped_dir; | |
| 103 ASSERT_TRUE(scoped_dir.CreateUniqueTempDir()); | |
| 104 base::FilePath zip_file = scoped_dir.path().Append("logs.zip"); | |
| 105 | |
| 106 ASSERT_TRUE(binary_data.has_data()); | |
| 107 bool success = base::WriteFile(zip_file, binary_data.data().data(), | |
|
vasilii
2015/12/17 12:40:37
Why do you test filesystem and zip here?
battre
2015/12/17 13:24:24
Not sure I understand you. My goal is to test whet
vasilii
2015/12/17 13:39:05
Isn't there a way to unzip |binary_data| without t
battre
2015/12/17 14:34:56
Ok, found one.
Done.
| |
| 108 binary_data.data().size()); | |
| 109 ASSERT_TRUE(success); | |
| 110 success = zip::Unzip(zip_file, scoped_dir.path()); | |
| 111 ASSERT_TRUE(success); | |
| 112 | |
| 113 std::string file_content; | |
| 114 success = base::ReadFileToString(scoped_dir.path().Append(kLogsFilename), | |
| 115 &file_content); | |
| 116 ASSERT_TRUE(success); | |
| 117 | |
| 118 EXPECT_TRUE(file_content.find(anonymized_mac_address) != std::string::npos); | |
| 119 EXPECT_TRUE(file_content.find(mac_address) == std::string::npos); | |
| 120 } | |
| OLD | NEW |