| Index: components/autofill/core/common/save_password_progress_logger_unittest.cc
|
| diff --git a/components/autofill/core/common/save_password_progress_logger_unittest.cc b/components/autofill/core/common/save_password_progress_logger_unittest.cc
|
| index 9c0950562a1d1fd287efafbb0a221bfda3b6c09c..eb6dedf18883264ee2732c4d67bdfa9eee255a05 100644
|
| --- a/components/autofill/core/common/save_password_progress_logger_unittest.cc
|
| +++ b/components/autofill/core/common/save_password_progress_logger_unittest.cc
|
| @@ -21,22 +21,28 @@ namespace autofill {
|
|
|
| namespace {
|
|
|
| -const char kTestString[] = "Test";
|
| +const char kTestString[] = "Message"; // Corresponds to STRING_MESSAGE.
|
|
|
| class TestLogger : public SavePasswordProgressLogger {
|
| public:
|
| bool LogsContainSubstring(const std::string& substring) {
|
| - return accumulated_log_.find(substring) != std::string::npos;
|
| + return GetAccumulatedLog().find(substring) != std::string::npos;
|
| }
|
|
|
| - std::string accumulated_log() { return accumulated_log_; }
|
| + std::string GetAccumulatedLog() {
|
| + return SanitizeStructuredLogs(accumulated_logs_);
|
| + }
|
| +
|
| + std::vector<SavePasswordProgressLogger::StructuredLog> accumulated_logs() {
|
| + return accumulated_logs_;
|
| + }
|
|
|
| private:
|
| - virtual void SendLog(const std::string& log) OVERRIDE {
|
| - accumulated_log_.append(log);
|
| + virtual void SendLog(const std::vector<StructuredLog>& logs) OVERRIDE {
|
| + accumulated_logs_ = logs;
|
| }
|
|
|
| - std::string accumulated_log_;
|
| + std::vector<SavePasswordProgressLogger::StructuredLog> accumulated_logs_;
|
| };
|
|
|
| }; // namespace
|
| @@ -45,36 +51,39 @@ TEST(SavePasswordProgressLoggerTest, LogPasswordForm) {
|
| TestLogger logger;
|
| PasswordForm form;
|
| form.action = GURL("http://example.org/verysecret?verysecret");
|
| + form.password_element = UTF8ToUTF16("pwdelement");
|
| form.password_value = UTF8ToUTF16("verysecret");
|
| form.username_value = UTF8ToUTF16("verysecret");
|
| - logger.LogPasswordForm(kTestString, form);
|
| + logger.LogPasswordForm(SavePasswordProgressLogger::STRING_MESSAGE, form);
|
| SCOPED_TRACE(testing::Message() << "Log string = ["
|
| - << logger.accumulated_log() << "]");
|
| + << logger.GetAccumulatedLog() << "]");
|
| EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
|
| + EXPECT_TRUE(logger.LogsContainSubstring("pwdelement"));
|
| EXPECT_TRUE(logger.LogsContainSubstring("http://example.org"));
|
| EXPECT_FALSE(logger.LogsContainSubstring("verysecret"));
|
| }
|
|
|
| TEST(SavePasswordProgressLoggerTest, LogHTMLForm) {
|
| TestLogger logger;
|
| - logger.LogHTMLForm(kTestString,
|
| - "form_name",
|
| - "form_method",
|
| + logger.LogHTMLForm(SavePasswordProgressLogger::STRING_MESSAGE,
|
| + "formname",
|
| + "post",
|
| GURL("http://example.org/verysecret?verysecret"));
|
| SCOPED_TRACE(testing::Message() << "Log string = ["
|
| - << logger.accumulated_log() << "]");
|
| + << logger.GetAccumulatedLog() << "]");
|
| EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
|
| - EXPECT_TRUE(logger.LogsContainSubstring("form_name"));
|
| - EXPECT_TRUE(logger.LogsContainSubstring("form_method"));
|
| + EXPECT_TRUE(logger.LogsContainSubstring("formname"));
|
| + EXPECT_TRUE(logger.LogsContainSubstring("POST"));
|
| EXPECT_TRUE(logger.LogsContainSubstring("http://example.org"));
|
| EXPECT_FALSE(logger.LogsContainSubstring("verysecret"));
|
| }
|
|
|
| TEST(SavePasswordProgressLoggerTest, LogURL) {
|
| TestLogger logger;
|
| - logger.LogURL(kTestString, GURL("http://example.org/verysecret?verysecret"));
|
| + logger.LogURL(SavePasswordProgressLogger::STRING_MESSAGE,
|
| + GURL("http://example.org/verysecret?verysecret"));
|
| SCOPED_TRACE(testing::Message() << "Log string = ["
|
| - << logger.accumulated_log() << "]");
|
| + << logger.GetAccumulatedLog() << "]");
|
| EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
|
| EXPECT_TRUE(logger.LogsContainSubstring("http://example.org"));
|
| EXPECT_FALSE(logger.LogsContainSubstring("verysecret"));
|
| @@ -82,18 +91,18 @@ TEST(SavePasswordProgressLoggerTest, LogURL) {
|
|
|
| TEST(SavePasswordProgressLoggerTest, LogBooleanTrue) {
|
| TestLogger logger;
|
| - logger.LogBoolean(kTestString, true);
|
| + logger.LogBoolean(SavePasswordProgressLogger::STRING_MESSAGE, true);
|
| SCOPED_TRACE(testing::Message() << "Log string = ["
|
| - << logger.accumulated_log() << "]");
|
| + << logger.GetAccumulatedLog() << "]");
|
| EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
|
| EXPECT_TRUE(logger.LogsContainSubstring("true"));
|
| }
|
|
|
| TEST(SavePasswordProgressLoggerTest, LogBooleanFalse) {
|
| TestLogger logger;
|
| - logger.LogBoolean(kTestString, false);
|
| + logger.LogBoolean(SavePasswordProgressLogger::STRING_MESSAGE, false);
|
| SCOPED_TRACE(testing::Message() << "Log string = ["
|
| - << logger.accumulated_log() << "]");
|
| + << logger.GetAccumulatedLog() << "]");
|
| EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
|
| EXPECT_TRUE(logger.LogsContainSubstring("false"));
|
| }
|
| @@ -101,9 +110,9 @@ TEST(SavePasswordProgressLoggerTest, LogBooleanFalse) {
|
| TEST(SavePasswordProgressLoggerTest, LogSignedNumber) {
|
| TestLogger logger;
|
| int signed_number = -12345;
|
| - logger.LogNumber(kTestString, signed_number);
|
| + logger.LogNumber(SavePasswordProgressLogger::STRING_MESSAGE, signed_number);
|
| SCOPED_TRACE(testing::Message() << "Log string = ["
|
| - << logger.accumulated_log() << "]");
|
| + << logger.GetAccumulatedLog() << "]");
|
| EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
|
| EXPECT_TRUE(logger.LogsContainSubstring("-12345"));
|
| }
|
| @@ -111,43 +120,45 @@ TEST(SavePasswordProgressLoggerTest, LogSignedNumber) {
|
| TEST(SavePasswordProgressLoggerTest, LogUnsignedNumber) {
|
| TestLogger logger;
|
| size_t unsigned_number = 654321;
|
| - logger.LogNumber(kTestString, unsigned_number);
|
| + logger.LogNumber(SavePasswordProgressLogger::STRING_MESSAGE, unsigned_number);
|
| SCOPED_TRACE(testing::Message() << "Log string = ["
|
| - << logger.accumulated_log() << "]");
|
| + << logger.GetAccumulatedLog() << "]");
|
| EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
|
| EXPECT_TRUE(logger.LogsContainSubstring("654321"));
|
| }
|
|
|
| -TEST(SavePasswordProgressLoggerTest, LogFinalDecisionSave) {
|
| - TestLogger logger;
|
| - logger.LogFinalDecision(SavePasswordProgressLogger::DECISION_SAVE);
|
| - SCOPED_TRACE(testing::Message() << "Log string = ["
|
| - << logger.accumulated_log() << "]");
|
| - EXPECT_TRUE(logger.LogsContainSubstring("SAVE"));
|
| -}
|
| -
|
| -TEST(SavePasswordProgressLoggerTest, LogFinalDecisionAsk) {
|
| - TestLogger logger;
|
| - logger.LogFinalDecision(SavePasswordProgressLogger::DECISION_ASK);
|
| - SCOPED_TRACE(testing::Message() << "Log string = ["
|
| - << logger.accumulated_log() << "]");
|
| - EXPECT_TRUE(logger.LogsContainSubstring("ASK"));
|
| -}
|
| -
|
| -TEST(SavePasswordProgressLoggerTest, LogFinalDecisionDrop) {
|
| +TEST(SavePasswordProgressLoggerTest, LogMessage) {
|
| TestLogger logger;
|
| - logger.LogFinalDecision(SavePasswordProgressLogger::DECISION_DROP);
|
| + logger.LogMessage(SavePasswordProgressLogger::STRING_MESSAGE);
|
| SCOPED_TRACE(testing::Message() << "Log string = ["
|
| - << logger.accumulated_log() << "]");
|
| - EXPECT_TRUE(logger.LogsContainSubstring("DROP"));
|
| + << logger.GetAccumulatedLog() << "]");
|
| + EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
|
| }
|
|
|
| -TEST(SavePasswordProgressLoggerTest, LogMessage) {
|
| +TEST(SavePasswordProgressLoggerTest, SanitizeStructuredLogs) {
|
| + // The sanitizing method actually letting safe content through is tested in
|
| + // the rest of this file. The same goes for scrubbing URLs. Here we test that
|
| + // element IDs, the only source of free strings, is properly filtered.
|
| TestLogger logger;
|
| - logger.LogMessage(kTestString);
|
| + PasswordForm form;
|
| + const std::string kHTMLInside("Username <script> element");
|
| + const std::string kHTMLInsideExpected("username script element");
|
| + const std::string kIPAddressInside("y128.0.0.1Y");
|
| + const std::string kIPAddressInsideExpected("y128 0 0 1y");
|
| + const std::string kSpecialCharsInside("X@#a$%B&*c()D;:e+-x");
|
| + const std::string kSpecialCharsInsideExpected("x a b c d e x");
|
| + form.username_element = UTF8ToUTF16(kHTMLInside);
|
| + form.password_element = UTF8ToUTF16(kIPAddressInside);
|
| + form.old_password_element = UTF8ToUTF16(kSpecialCharsInside);
|
| + logger.LogPasswordForm(SavePasswordProgressLogger::STRING_MESSAGE, form);
|
| SCOPED_TRACE(testing::Message() << "Log string = ["
|
| - << logger.accumulated_log() << "]");
|
| + << logger.GetAccumulatedLog() << "]");
|
| EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
|
| + EXPECT_FALSE(logger.LogsContainSubstring(kHTMLInside));
|
| + EXPECT_TRUE(logger.LogsContainSubstring(kHTMLInsideExpected));
|
| + EXPECT_FALSE(logger.LogsContainSubstring(kIPAddressInside));
|
| + EXPECT_TRUE(logger.LogsContainSubstring(kIPAddressInsideExpected));
|
| + EXPECT_FALSE(logger.LogsContainSubstring(kSpecialCharsInside));
|
| + EXPECT_TRUE(logger.LogsContainSubstring(kSpecialCharsInsideExpected));
|
| }
|
| -
|
| } // namespace autofill
|
|
|