blob: 68f35a8e4bd073f6b9464d5c33d0b97c7f30b654 [file] [log] [blame]
battre4cdaa7c2016-01-07 11:30:271// 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
9namespace feedback {
10
11class 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
31TEST_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
42TEST_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
64TEST_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
89TEST_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