battre | 4cdaa7c | 2016-01-07 11:30:27 | [diff] [blame^] | 1 | // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #include "components/feedback/anonymizer_tool.h" |
| 6 | |
| 7 | #include <gtest/gtest.h> |
| 8 | |
| 9 | namespace feedback { |
| 10 | |
| 11 | class AnonymizerToolTest : public testing::Test { |
| 12 | protected: |
| 13 | std::string AnonymizeMACAddresses(const std::string& input) { |
| 14 | return anonymizer_.AnonymizeMACAddresses(input); |
| 15 | } |
| 16 | |
| 17 | std::string AnonymizeCustomPatterns(const std::string& input) { |
| 18 | return anonymizer_.AnonymizeCustomPatterns(input); |
| 19 | } |
| 20 | |
| 21 | static std::string AnonymizeCustomPattern( |
| 22 | const std::string& input, |
| 23 | const std::string& pattern, |
| 24 | std::map<std::string, std::string>* space) { |
| 25 | return AnonymizerTool::AnonymizeCustomPattern(input, pattern, space); |
| 26 | } |
| 27 | |
| 28 | AnonymizerTool anonymizer_; |
| 29 | }; |
| 30 | |
| 31 | TEST_F(AnonymizerToolTest, Anonymize) { |
| 32 | EXPECT_EQ("", anonymizer_.Anonymize("")); |
| 33 | EXPECT_EQ("foo\nbar\n", anonymizer_.Anonymize("foo\nbar\n")); |
| 34 | |
| 35 | // Make sure MAC address anonymization is invoked. |
| 36 | EXPECT_EQ("02:46:8a:00:00:01", anonymizer_.Anonymize("02:46:8a:ce:13:57")); |
| 37 | |
| 38 | // Make sure custom pattern anonymization is invoked. |
| 39 | EXPECT_EQ("Cell ID: '1'", AnonymizeCustomPatterns("Cell ID: 'A1B2'")); |
| 40 | } |
| 41 | |
| 42 | TEST_F(AnonymizerToolTest, AnonymizeMACAddresses) { |
| 43 | EXPECT_EQ("", AnonymizeMACAddresses("")); |
| 44 | EXPECT_EQ("foo\nbar\n", AnonymizeMACAddresses("foo\nbar\n")); |
| 45 | EXPECT_EQ("11:22:33:44:55", AnonymizeMACAddresses("11:22:33:44:55")); |
| 46 | EXPECT_EQ("aa:bb:cc:00:00:01", AnonymizeMACAddresses("aa:bb:cc:dd:ee:ff")); |
| 47 | EXPECT_EQ( |
| 48 | "BSSID: aa:bb:cc:00:00:01 in the middle\n" |
| 49 | "bb:cc:dd:00:00:02 start of line\n" |
| 50 | "end of line aa:bb:cc:00:00:01\n" |
| 51 | "no match across lines aa:bb:cc:\n" |
| 52 | "dd:ee:ff two on the same line:\n" |
| 53 | "x bb:cc:dd:00:00:02 cc:dd:ee:00:00:03 x\n", |
| 54 | AnonymizeMACAddresses("BSSID: aa:bb:cc:dd:ee:ff in the middle\n" |
| 55 | "bb:cc:dd:ee:ff:00 start of line\n" |
| 56 | "end of line aa:bb:cc:dd:ee:ff\n" |
| 57 | "no match across lines aa:bb:cc:\n" |
| 58 | "dd:ee:ff two on the same line:\n" |
| 59 | "x bb:cc:dd:ee:ff:00 cc:dd:ee:ff:00:11 x\n")); |
| 60 | EXPECT_EQ("Remember bb:cc:dd:00:00:02?", |
| 61 | AnonymizeMACAddresses("Remember bB:Cc:DD:ee:ff:00?")); |
| 62 | } |
| 63 | |
| 64 | TEST_F(AnonymizerToolTest, AnonymizeCustomPatterns) { |
| 65 | EXPECT_EQ("", AnonymizeCustomPatterns("")); |
| 66 | |
| 67 | EXPECT_EQ("Cell ID: '1'", AnonymizeCustomPatterns("Cell ID: 'A1B2'")); |
| 68 | EXPECT_EQ("Cell ID: '2'", AnonymizeCustomPatterns("Cell ID: 'C1D2'")); |
| 69 | EXPECT_EQ("foo Cell ID: '1' bar", |
| 70 | AnonymizeCustomPatterns("foo Cell ID: 'A1B2' bar")); |
| 71 | |
| 72 | EXPECT_EQ("foo Location area code: '1' bar", |
| 73 | AnonymizeCustomPatterns("foo Location area code: 'A1B2' bar")); |
| 74 | |
| 75 | EXPECT_EQ("foo\na SSID='1' b\n'", |
| 76 | AnonymizeCustomPatterns("foo\na SSID='Joe's' b\n'")); |
| 77 | EXPECT_EQ("ssid '2'", AnonymizeCustomPatterns("ssid 'My AP'")); |
| 78 | EXPECT_EQ("bssid 'aa:bb'", AnonymizeCustomPatterns("bssid 'aa:bb'")); |
| 79 | |
| 80 | EXPECT_EQ("Scan SSID - hexdump(len=6): 1\nfoo", |
| 81 | AnonymizeCustomPatterns( |
| 82 | "Scan SSID - hexdump(len=6): 47 6f 6f 67 6c 65\nfoo")); |
| 83 | |
| 84 | EXPECT_EQ( |
| 85 | "a\nb [SSID=1] [SSID=2] [SSID=foo\nbar] b", |
| 86 | AnonymizeCustomPatterns("a\nb [SSID=foo] [SSID=bar] [SSID=foo\nbar] b")); |
| 87 | } |
| 88 | |
| 89 | TEST_F(AnonymizerToolTest, AnonymizeCustomPattern) { |
| 90 | const char kPattern[] = "(\\b(?i)id:? ')(\\d+)(')"; |
| 91 | std::map<std::string, std::string> space; |
| 92 | EXPECT_EQ("", AnonymizeCustomPattern("", kPattern, &space)); |
| 93 | EXPECT_EQ("foo\nbar\n", |
| 94 | AnonymizeCustomPattern("foo\nbar\n", kPattern, &space)); |
| 95 | EXPECT_EQ("id '1'", AnonymizeCustomPattern("id '2345'", kPattern, &space)); |
| 96 | EXPECT_EQ("id '2'", AnonymizeCustomPattern("id '1234'", kPattern, &space)); |
| 97 | EXPECT_EQ("id: '2'", AnonymizeCustomPattern("id: '1234'", kPattern, &space)); |
| 98 | EXPECT_EQ("ID: '1'", AnonymizeCustomPattern("ID: '2345'", kPattern, &space)); |
| 99 | EXPECT_EQ("x1 id '1' 1x id '2'\nid '1'\n", |
| 100 | AnonymizeCustomPattern("x1 id '2345' 1x id '1234'\nid '2345'\n", |
| 101 | kPattern, &space)); |
| 102 | space.clear(); |
| 103 | EXPECT_EQ("id '1'", AnonymizeCustomPattern("id '1234'", kPattern, &space)); |
| 104 | |
| 105 | space.clear(); |
| 106 | EXPECT_EQ("x1z", AnonymizeCustomPattern("xyz", "()(y+)()", &space)); |
| 107 | } |
| 108 | |
| 109 | } // namespace feedback |