save_password_progress_logger_unittest.cc revision c5cede9ae108bb15f6b7a8aea21c7e1fefa2834c
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
18using base::UTF8ToUTF16;
19
20namespace autofill {
21
22namespace {
23
24const char kTestString[] = "Test";
25
26class 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  virtual void SendLog(const std::string& log) OVERRIDE {
36    accumulated_log_.append(log);
37  }
38
39  std::string accumulated_log_;
40};
41
42};  // namespace
43
44TEST(SavePasswordProgressLoggerTest, LogPasswordForm) {
45  TestLogger logger;
46  PasswordForm form;
47  form.action = GURL("http://example.org/verysecret?verysecret");
48  form.password_value = UTF8ToUTF16("verysecret");
49  form.username_value = UTF8ToUTF16("verysecret");
50  logger.LogPasswordForm(kTestString, form);
51  SCOPED_TRACE(testing::Message() << "Log string = ["
52                                  << logger.accumulated_log() << "]");
53  EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
54  EXPECT_TRUE(logger.LogsContainSubstring("http://example.org"));
55  EXPECT_FALSE(logger.LogsContainSubstring("verysecret"));
56}
57
58TEST(SavePasswordProgressLoggerTest, LogHTMLForm) {
59  TestLogger logger;
60  logger.LogHTMLForm(kTestString,
61                     "form_name",
62                     "form_method",
63                     GURL("http://example.org/verysecret?verysecret"));
64  SCOPED_TRACE(testing::Message() << "Log string = ["
65                                  << logger.accumulated_log() << "]");
66  EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
67  EXPECT_TRUE(logger.LogsContainSubstring("form_name"));
68  EXPECT_TRUE(logger.LogsContainSubstring("form_method"));
69  EXPECT_TRUE(logger.LogsContainSubstring("http://example.org"));
70  EXPECT_FALSE(logger.LogsContainSubstring("verysecret"));
71}
72
73TEST(SavePasswordProgressLoggerTest, LogURL) {
74  TestLogger logger;
75  logger.LogURL(kTestString, GURL("http://example.org/verysecret?verysecret"));
76  SCOPED_TRACE(testing::Message() << "Log string = ["
77                                  << logger.accumulated_log() << "]");
78  EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
79  EXPECT_TRUE(logger.LogsContainSubstring("http://example.org"));
80  EXPECT_FALSE(logger.LogsContainSubstring("verysecret"));
81}
82
83TEST(SavePasswordProgressLoggerTest, LogBooleanTrue) {
84  TestLogger logger;
85  logger.LogBoolean(kTestString, true);
86  SCOPED_TRACE(testing::Message() << "Log string = ["
87                                  << logger.accumulated_log() << "]");
88  EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
89  EXPECT_TRUE(logger.LogsContainSubstring("true"));
90}
91
92TEST(SavePasswordProgressLoggerTest, LogBooleanFalse) {
93  TestLogger logger;
94  logger.LogBoolean(kTestString, false);
95  SCOPED_TRACE(testing::Message() << "Log string = ["
96                                  << logger.accumulated_log() << "]");
97  EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
98  EXPECT_TRUE(logger.LogsContainSubstring("false"));
99}
100
101TEST(SavePasswordProgressLoggerTest, LogSignedNumber) {
102  TestLogger logger;
103  int signed_number = -12345;
104  logger.LogNumber(kTestString, signed_number);
105  SCOPED_TRACE(testing::Message() << "Log string = ["
106                                  << logger.accumulated_log() << "]");
107  EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
108  EXPECT_TRUE(logger.LogsContainSubstring("-12345"));
109}
110
111TEST(SavePasswordProgressLoggerTest, LogUnsignedNumber) {
112  TestLogger logger;
113  size_t unsigned_number = 654321;
114  logger.LogNumber(kTestString, unsigned_number);
115  SCOPED_TRACE(testing::Message() << "Log string = ["
116                                  << logger.accumulated_log() << "]");
117  EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
118  EXPECT_TRUE(logger.LogsContainSubstring("654321"));
119}
120
121TEST(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
129TEST(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
137TEST(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}
144
145TEST(SavePasswordProgressLoggerTest, LogMessage) {
146  TestLogger logger;
147  logger.LogMessage(kTestString);
148  SCOPED_TRACE(testing::Message() << "Log string = ["
149                                  << logger.accumulated_log() << "]");
150  EXPECT_TRUE(logger.LogsContainSubstring(kTestString));
151}
152
153}  // namespace autofill
154