Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / components / autofill / core / common / save_password_progress_logger_unittest.cc
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
3 // found in the LICENSE file.
4
5 #include "components/autofill/core/common/save_password_progress_logger.h"
6
7 #include <limits>
8
9 #include "base/bind.h"
10 #include "base/logging.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "base/strings/stringprintf.h"
13 #include "base/strings/utf_string_conversions.h"
14 #include "components/autofill/core/common/password_form.h"
15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "url/gurl.h"
17
18 using base::UTF8ToUTF16;
19
20 namespace autofill {
21
22 namespace {
23
24 const char kTestString[] = "Message";  // Corresponds to STRING_MESSAGE.
25
26 class TestLogger : public SavePasswordProgressLogger {
27  public:
28   bool LogsContainSubstring(const std::string& substring) {
29     return accumulated_log_.find(substring) != std::string::npos;
30   }
31
32   std::string accumulated_log() { return accumulated_log_; }
33
34  private:
35   void SendLog(const std::string& log) override {
36     accumulated_log_.append(log);
37   }
38
39   std::string accumulated_log_;
40 };
41
42 };  // namespace
43
44 TEST(SavePasswordProgressLoggerTest, LogPasswordForm) {
45   TestLogger logger;
46   PasswordForm form;
47   form.action = GURL("http://example.org/verysecret?verysecret");
48   form.password_element = UTF8ToUTF16("pwdelement");
49   form.password_value = UTF8ToUTF16("verysecret");
50   form.username_value = UTF8ToUTF16("verysecret");
51   logger.LogPasswordForm(SavePasswordProgressLogger::STRING_MESSAGE, form);
52   SCOPED_TRACE(testing::Message() << "Log string = ["
53                                   << logger.accumulated_log() << "]");
54   EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
55   EXPECT_TRUE(logger.LogsContainSubstring("pwdelement"));
56   EXPECT_TRUE(logger.LogsContainSubstring("http://example.org"));
57   EXPECT_FALSE(logger.LogsContainSubstring("verysecret"));
58 }
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.new_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
85 TEST(SavePasswordProgressLoggerTest, LogHTMLForm) {
86   TestLogger logger;
87   logger.LogHTMLForm(SavePasswordProgressLogger::STRING_MESSAGE,
88                      "form_name",
89                      GURL("http://example.org/verysecret?verysecret"));
90   SCOPED_TRACE(testing::Message() << "Log string = ["
91                                   << logger.accumulated_log() << "]");
92   EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
93   EXPECT_TRUE(logger.LogsContainSubstring("form_name"));
94   EXPECT_TRUE(logger.LogsContainSubstring("http://example.org"));
95   EXPECT_FALSE(logger.LogsContainSubstring("verysecret"));
96 }
97
98 TEST(SavePasswordProgressLoggerTest, LogURL) {
99   TestLogger logger;
100   logger.LogURL(SavePasswordProgressLogger::STRING_MESSAGE,
101                 GURL("http://example.org/verysecret?verysecret"));
102   SCOPED_TRACE(testing::Message() << "Log string = ["
103                                   << logger.accumulated_log() << "]");
104   EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
105   EXPECT_TRUE(logger.LogsContainSubstring("http://example.org"));
106   EXPECT_FALSE(logger.LogsContainSubstring("verysecret"));
107 }
108
109 TEST(SavePasswordProgressLoggerTest, LogBooleanTrue) {
110   TestLogger logger;
111   logger.LogBoolean(SavePasswordProgressLogger::STRING_MESSAGE, true);
112   SCOPED_TRACE(testing::Message() << "Log string = ["
113                                   << logger.accumulated_log() << "]");
114   EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
115   EXPECT_TRUE(logger.LogsContainSubstring("true"));
116 }
117
118 TEST(SavePasswordProgressLoggerTest, LogBooleanFalse) {
119   TestLogger logger;
120   logger.LogBoolean(SavePasswordProgressLogger::STRING_MESSAGE, false);
121   SCOPED_TRACE(testing::Message() << "Log string = ["
122                                   << logger.accumulated_log() << "]");
123   EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
124   EXPECT_TRUE(logger.LogsContainSubstring("false"));
125 }
126
127 TEST(SavePasswordProgressLoggerTest, LogSignedNumber) {
128   TestLogger logger;
129   int signed_number = -12345;
130   logger.LogNumber(SavePasswordProgressLogger::STRING_MESSAGE, signed_number);
131   SCOPED_TRACE(testing::Message() << "Log string = ["
132                                   << logger.accumulated_log() << "]");
133   EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
134   EXPECT_TRUE(logger.LogsContainSubstring("-12345"));
135 }
136
137 TEST(SavePasswordProgressLoggerTest, LogUnsignedNumber) {
138   TestLogger logger;
139   size_t unsigned_number = 654321;
140   logger.LogNumber(SavePasswordProgressLogger::STRING_MESSAGE, unsigned_number);
141   SCOPED_TRACE(testing::Message() << "Log string = ["
142                                   << logger.accumulated_log() << "]");
143   EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
144   EXPECT_TRUE(logger.LogsContainSubstring("654321"));
145 }
146
147 TEST(SavePasswordProgressLoggerTest, LogMessage) {
148   TestLogger logger;
149   logger.LogMessage(SavePasswordProgressLogger::STRING_MESSAGE);
150   SCOPED_TRACE(testing::Message() << "Log string = ["
151                                   << logger.accumulated_log() << "]");
152   EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
153 }
154
155 }  // namespace autofill