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/autofill/core/common/save_password_progress_logger.h" | 5 #include "components/autofill/core/common/save_password_progress_logger.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
12 #include "base/strings/stringprintf.h" | 12 #include "base/strings/stringprintf.h" |
13 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
14 #include "components/autofill/core/common/password_form.h" | 14 #include "components/autofill/core/common/password_form.h" |
15 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
16 #include "url/gurl.h" | 16 #include "url/gurl.h" |
17 | 17 |
18 using base::UTF8ToUTF16; | 18 using base::UTF8ToUTF16; |
19 | 19 |
20 namespace autofill { | 20 namespace autofill { |
21 | 21 |
22 namespace { | 22 namespace { |
23 | 23 |
24 const char kTestString[] = "Test"; | 24 const char kTestString[] = "Message"; // Corresponds to STRING_MESSAGE. |
25 | 25 |
26 class TestLogger : public SavePasswordProgressLogger { | 26 class TestLogger : public SavePasswordProgressLogger { |
27 public: | 27 public: |
28 bool LogsContainSubstring(const std::string& substring) { | 28 bool LogsContainSubstring(const std::string& substring) { |
29 return accumulated_log_.find(substring) != std::string::npos; | 29 return accumulated_log_.find(substring) != std::string::npos; |
30 } | 30 } |
31 | 31 |
32 std::string accumulated_log() { return accumulated_log_; } | 32 std::string accumulated_log() { return accumulated_log_; } |
33 | 33 |
34 private: | 34 private: |
35 virtual void SendLog(const std::string& log) OVERRIDE { | 35 virtual void SendLog(const std::string& log) OVERRIDE { |
36 accumulated_log_.append(log); | 36 accumulated_log_.append(log); |
37 } | 37 } |
38 | 38 |
39 std::string accumulated_log_; | 39 std::string accumulated_log_; |
40 }; | 40 }; |
41 | 41 |
42 }; // namespace | 42 }; // namespace |
43 | 43 |
44 TEST(SavePasswordProgressLoggerTest, LogPasswordForm) { | 44 TEST(SavePasswordProgressLoggerTest, LogPasswordForm) { |
45 TestLogger logger; | 45 TestLogger logger; |
46 PasswordForm form; | 46 PasswordForm form; |
47 form.action = GURL("http://example.org/verysecret?verysecret"); | 47 form.action = GURL("http://example.org/verysecret?verysecret"); |
48 form.password_element = UTF8ToUTF16("pwdelement"); | |
48 form.password_value = UTF8ToUTF16("verysecret"); | 49 form.password_value = UTF8ToUTF16("verysecret"); |
49 form.username_value = UTF8ToUTF16("verysecret"); | 50 form.username_value = UTF8ToUTF16("verysecret"); |
50 logger.LogPasswordForm(kTestString, form); | 51 logger.LogPasswordForm(SavePasswordProgressLogger::STRING_MESSAGE, form); |
51 SCOPED_TRACE(testing::Message() << "Log string = [" | 52 SCOPED_TRACE(testing::Message() << "Log string = [" |
52 << logger.accumulated_log() << "]"); | 53 << logger.accumulated_log() << "]"); |
53 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); | 54 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); |
55 EXPECT_TRUE(logger.LogsContainSubstring("pwdelement")); | |
54 EXPECT_TRUE(logger.LogsContainSubstring("http://example.org")); | 56 EXPECT_TRUE(logger.LogsContainSubstring("http://example.org")); |
55 EXPECT_FALSE(logger.LogsContainSubstring("verysecret")); | 57 EXPECT_FALSE(logger.LogsContainSubstring("verysecret")); |
56 } | 58 } |
57 | 59 |
60 TEST(SavePasswordProgressLoggerTest, LogPasswordFormElementID) { | |
61 // Test filtering element IDs. | |
62 TestLogger logger; | |
63 PasswordForm form; | |
64 const std::string kHTMLInside("Username <script> element"); | |
65 const std::string kHTMLInsideExpected("username script element"); | |
66 const std::string kIPAddressInside("y128.0.0.1Y"); | |
67 const std::string kIPAddressInsideExpected("y128 0 0 1y"); | |
68 const std::string kSpecialCharsInside("X@#a$%B&*c()D;:e+-x"); | |
69 const std::string kSpecialCharsInsideExpected("x a b c d e x"); | |
70 form.username_element = UTF8ToUTF16(kHTMLInside); | |
71 form.password_element = UTF8ToUTF16(kIPAddressInside); | |
72 form.old_password_element = UTF8ToUTF16(kSpecialCharsInside); | |
73 logger.LogPasswordForm(SavePasswordProgressLogger::STRING_MESSAGE, form); | |
74 SCOPED_TRACE(testing::Message() << "Log string = [" | |
75 << logger.accumulated_log() << "]"); | |
76 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); | |
77 EXPECT_FALSE(logger.LogsContainSubstring(kHTMLInside)); | |
78 EXPECT_TRUE(logger.LogsContainSubstring(kHTMLInsideExpected)); | |
79 EXPECT_FALSE(logger.LogsContainSubstring(kIPAddressInside)); | |
80 EXPECT_TRUE(logger.LogsContainSubstring(kIPAddressInsideExpected)); | |
81 EXPECT_FALSE(logger.LogsContainSubstring(kSpecialCharsInside)); | |
82 EXPECT_TRUE(logger.LogsContainSubstring(kSpecialCharsInsideExpected)); | |
83 } | |
84 | |
58 TEST(SavePasswordProgressLoggerTest, LogHTMLForm) { | 85 TEST(SavePasswordProgressLoggerTest, LogHTMLForm) { |
59 TestLogger logger; | 86 TestLogger logger; |
60 logger.LogHTMLForm(kTestString, | 87 logger.LogHTMLForm(SavePasswordProgressLogger::STRING_MESSAGE, |
61 "form_name", | 88 "formname", |
Ilya Sherman
2014/04/16 22:02:11
nit: IMO "form_name" is a better name, and we shou
vabr (Chromium)
2014/04/17 12:33:09
Done.
| |
62 "form_method", | 89 "post", |
63 GURL("http://example.org/verysecret?verysecret")); | 90 GURL("http://example.org/verysecret?verysecret")); |
64 SCOPED_TRACE(testing::Message() << "Log string = [" | 91 SCOPED_TRACE(testing::Message() << "Log string = [" |
65 << logger.accumulated_log() << "]"); | 92 << logger.accumulated_log() << "]"); |
66 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); | 93 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); |
67 EXPECT_TRUE(logger.LogsContainSubstring("form_name")); | 94 EXPECT_TRUE(logger.LogsContainSubstring("formname")); |
68 EXPECT_TRUE(logger.LogsContainSubstring("form_method")); | 95 EXPECT_TRUE(logger.LogsContainSubstring("POST")); |
69 EXPECT_TRUE(logger.LogsContainSubstring("http://example.org")); | 96 EXPECT_TRUE(logger.LogsContainSubstring("http://example.org")); |
70 EXPECT_FALSE(logger.LogsContainSubstring("verysecret")); | 97 EXPECT_FALSE(logger.LogsContainSubstring("verysecret")); |
71 } | 98 } |
72 | 99 |
73 TEST(SavePasswordProgressLoggerTest, LogURL) { | 100 TEST(SavePasswordProgressLoggerTest, LogURL) { |
74 TestLogger logger; | 101 TestLogger logger; |
75 logger.LogURL(kTestString, GURL("http://example.org/verysecret?verysecret")); | 102 logger.LogURL(SavePasswordProgressLogger::STRING_MESSAGE, |
103 GURL("http://example.org/verysecret?verysecret")); | |
76 SCOPED_TRACE(testing::Message() << "Log string = [" | 104 SCOPED_TRACE(testing::Message() << "Log string = [" |
77 << logger.accumulated_log() << "]"); | 105 << logger.accumulated_log() << "]"); |
78 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); | 106 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); |
79 EXPECT_TRUE(logger.LogsContainSubstring("http://example.org")); | 107 EXPECT_TRUE(logger.LogsContainSubstring("http://example.org")); |
80 EXPECT_FALSE(logger.LogsContainSubstring("verysecret")); | 108 EXPECT_FALSE(logger.LogsContainSubstring("verysecret")); |
81 } | 109 } |
82 | 110 |
83 TEST(SavePasswordProgressLoggerTest, LogBooleanTrue) { | 111 TEST(SavePasswordProgressLoggerTest, LogBooleanTrue) { |
84 TestLogger logger; | 112 TestLogger logger; |
85 logger.LogBoolean(kTestString, true); | 113 logger.LogBoolean(SavePasswordProgressLogger::STRING_MESSAGE, true); |
86 SCOPED_TRACE(testing::Message() << "Log string = [" | 114 SCOPED_TRACE(testing::Message() << "Log string = [" |
87 << logger.accumulated_log() << "]"); | 115 << logger.accumulated_log() << "]"); |
88 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); | 116 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); |
89 EXPECT_TRUE(logger.LogsContainSubstring("true")); | 117 EXPECT_TRUE(logger.LogsContainSubstring("true")); |
90 } | 118 } |
91 | 119 |
92 TEST(SavePasswordProgressLoggerTest, LogBooleanFalse) { | 120 TEST(SavePasswordProgressLoggerTest, LogBooleanFalse) { |
93 TestLogger logger; | 121 TestLogger logger; |
94 logger.LogBoolean(kTestString, false); | 122 logger.LogBoolean(SavePasswordProgressLogger::STRING_MESSAGE, false); |
95 SCOPED_TRACE(testing::Message() << "Log string = [" | 123 SCOPED_TRACE(testing::Message() << "Log string = [" |
96 << logger.accumulated_log() << "]"); | 124 << logger.accumulated_log() << "]"); |
97 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); | 125 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); |
98 EXPECT_TRUE(logger.LogsContainSubstring("false")); | 126 EXPECT_TRUE(logger.LogsContainSubstring("false")); |
99 } | 127 } |
100 | 128 |
101 TEST(SavePasswordProgressLoggerTest, LogSignedNumber) { | 129 TEST(SavePasswordProgressLoggerTest, LogSignedNumber) { |
102 TestLogger logger; | 130 TestLogger logger; |
103 int signed_number = -12345; | 131 int signed_number = -12345; |
104 logger.LogNumber(kTestString, signed_number); | 132 logger.LogNumber(SavePasswordProgressLogger::STRING_MESSAGE, signed_number); |
105 SCOPED_TRACE(testing::Message() << "Log string = [" | 133 SCOPED_TRACE(testing::Message() << "Log string = [" |
106 << logger.accumulated_log() << "]"); | 134 << logger.accumulated_log() << "]"); |
107 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); | 135 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); |
108 EXPECT_TRUE(logger.LogsContainSubstring("-12345")); | 136 EXPECT_TRUE(logger.LogsContainSubstring("-12345")); |
109 } | 137 } |
110 | 138 |
111 TEST(SavePasswordProgressLoggerTest, LogUnsignedNumber) { | 139 TEST(SavePasswordProgressLoggerTest, LogUnsignedNumber) { |
112 TestLogger logger; | 140 TestLogger logger; |
113 size_t unsigned_number = 654321; | 141 size_t unsigned_number = 654321; |
114 logger.LogNumber(kTestString, unsigned_number); | 142 logger.LogNumber(SavePasswordProgressLogger::STRING_MESSAGE, unsigned_number); |
115 SCOPED_TRACE(testing::Message() << "Log string = [" | 143 SCOPED_TRACE(testing::Message() << "Log string = [" |
116 << logger.accumulated_log() << "]"); | 144 << logger.accumulated_log() << "]"); |
117 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); | 145 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); |
118 EXPECT_TRUE(logger.LogsContainSubstring("654321")); | 146 EXPECT_TRUE(logger.LogsContainSubstring("654321")); |
119 } | 147 } |
120 | 148 |
121 TEST(SavePasswordProgressLoggerTest, LogFinalDecisionSave) { | |
122 TestLogger logger; | |
123 logger.LogFinalDecision(SavePasswordProgressLogger::DECISION_SAVE); | |
124 SCOPED_TRACE(testing::Message() << "Log string = [" | |
125 << logger.accumulated_log() << "]"); | |
126 EXPECT_TRUE(logger.LogsContainSubstring("SAVE")); | |
127 } | |
128 | |
129 TEST(SavePasswordProgressLoggerTest, LogFinalDecisionAsk) { | |
130 TestLogger logger; | |
131 logger.LogFinalDecision(SavePasswordProgressLogger::DECISION_ASK); | |
132 SCOPED_TRACE(testing::Message() << "Log string = [" | |
133 << logger.accumulated_log() << "]"); | |
134 EXPECT_TRUE(logger.LogsContainSubstring("ASK")); | |
135 } | |
136 | |
137 TEST(SavePasswordProgressLoggerTest, LogFinalDecisionDrop) { | |
138 TestLogger logger; | |
139 logger.LogFinalDecision(SavePasswordProgressLogger::DECISION_DROP); | |
140 SCOPED_TRACE(testing::Message() << "Log string = [" | |
141 << logger.accumulated_log() << "]"); | |
142 EXPECT_TRUE(logger.LogsContainSubstring("DROP")); | |
143 } | |
Ilya Sherman
2014/04/16 22:02:11
Hmm, why did you remove these tests?
vabr (Chromium)
2014/04/17 12:33:09
Because the LogFinalDecision() methods no longer e
| |
144 | |
145 TEST(SavePasswordProgressLoggerTest, LogMessage) { | 149 TEST(SavePasswordProgressLoggerTest, LogMessage) { |
146 TestLogger logger; | 150 TestLogger logger; |
147 logger.LogMessage(kTestString); | 151 logger.LogMessage(SavePasswordProgressLogger::STRING_MESSAGE); |
148 SCOPED_TRACE(testing::Message() << "Log string = [" | 152 SCOPED_TRACE(testing::Message() << "Log string = [" |
149 << logger.accumulated_log() << "]"); | 153 << logger.accumulated_log() << "]"); |
150 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); | 154 EXPECT_TRUE(logger.LogsContainSubstring(kTestString)); |
151 } | 155 } |
152 | 156 |
153 } // namespace autofill | 157 } // namespace autofill |
OLD | NEW |