Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: components/password_manager/core/browser/statistics_table_unittest.cc

Issue 2695233004: Implement PasswordStore::GetAllStats (Closed)
Patch Set: Add Mac Implementations Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/password_manager/core/browser/statistics_table.h" 5 #include "components/password_manager/core/browser/statistics_table.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/files/scoped_temp_dir.h" 9 #include "base/files/scoped_temp_dir.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 54
55 private: 55 private:
56 base::ScopedTempDir temp_dir_; 56 base::ScopedTempDir temp_dir_;
57 std::unique_ptr<sql::Connection> connection_; 57 std::unique_ptr<sql::Connection> connection_;
58 std::unique_ptr<StatisticsTable> db_; 58 std::unique_ptr<StatisticsTable> db_;
59 InteractionsStats test_data_; 59 InteractionsStats test_data_;
60 }; 60 };
61 61
62 TEST_F(StatisticsTableTest, Sanity) { 62 TEST_F(StatisticsTableTest, Sanity) {
63 EXPECT_TRUE(db()->AddRow(test_data())); 63 EXPECT_TRUE(db()->AddRow(test_data()));
64 EXPECT_THAT(db()->GetAllRows(), ElementsAre(test_data()));
64 EXPECT_THAT(db()->GetRows(test_data().origin_domain), 65 EXPECT_THAT(db()->GetRows(test_data().origin_domain),
65 ElementsAre(test_data())); 66 ElementsAre(test_data()));
66 EXPECT_TRUE(db()->RemoveRow(test_data().origin_domain)); 67 EXPECT_TRUE(db()->RemoveRow(test_data().origin_domain));
68 EXPECT_THAT(db()->GetAllRows(), IsEmpty());
67 EXPECT_THAT(db()->GetRows(test_data().origin_domain), IsEmpty()); 69 EXPECT_THAT(db()->GetRows(test_data().origin_domain), IsEmpty());
68 } 70 }
69 71
70 TEST_F(StatisticsTableTest, Reload) { 72 TEST_F(StatisticsTableTest, Reload) {
71 EXPECT_TRUE(db()->AddRow(test_data())); 73 EXPECT_TRUE(db()->AddRow(test_data()));
72 74
73 ReloadDatabase(); 75 ReloadDatabase();
74 76
77 EXPECT_THAT(db()->GetAllRows(), ElementsAre(test_data()));
75 EXPECT_THAT(db()->GetRows(test_data().origin_domain), 78 EXPECT_THAT(db()->GetRows(test_data().origin_domain),
76 ElementsAre(test_data())); 79 ElementsAre(test_data()));
77 } 80 }
78 81
79 TEST_F(StatisticsTableTest, DoubleOperation) { 82 TEST_F(StatisticsTableTest, DoubleOperation) {
80 EXPECT_TRUE(db()->AddRow(test_data())); 83 EXPECT_TRUE(db()->AddRow(test_data()));
81 test_data().dismissal_count++; 84 test_data().dismissal_count++;
82 EXPECT_TRUE(db()->AddRow(test_data())); 85 EXPECT_TRUE(db()->AddRow(test_data()));
83 86
87 EXPECT_THAT(db()->GetAllRows(), ElementsAre(test_data()));
84 EXPECT_THAT(db()->GetRows(test_data().origin_domain), 88 EXPECT_THAT(db()->GetRows(test_data().origin_domain),
85 ElementsAre(test_data())); 89 ElementsAre(test_data()));
86 90
87 EXPECT_TRUE(db()->RemoveRow(test_data().origin_domain)); 91 EXPECT_TRUE(db()->RemoveRow(test_data().origin_domain));
92 EXPECT_THAT(db()->GetAllRows(), IsEmpty());
88 EXPECT_THAT(db()->GetRows(test_data().origin_domain), IsEmpty()); 93 EXPECT_THAT(db()->GetRows(test_data().origin_domain), IsEmpty());
89 EXPECT_TRUE(db()->RemoveRow(test_data().origin_domain)); 94 EXPECT_TRUE(db()->RemoveRow(test_data().origin_domain));
90 } 95 }
91 96
92 TEST_F(StatisticsTableTest, DifferentUsernames) { 97 TEST_F(StatisticsTableTest, DifferentUsernames) {
93 InteractionsStats stats1 = test_data(); 98 InteractionsStats stats1 = test_data();
94 InteractionsStats stats2 = test_data(); 99 InteractionsStats stats2 = test_data();
95 stats2.username_value = base::ASCIIToUTF16(kUsername2); 100 stats2.username_value = base::ASCIIToUTF16(kUsername2);
96 101
97 EXPECT_TRUE(db()->AddRow(stats1)); 102 EXPECT_TRUE(db()->AddRow(stats1));
98 EXPECT_TRUE(db()->AddRow(stats2)); 103 EXPECT_TRUE(db()->AddRow(stats2));
104 EXPECT_THAT(db()->GetAllRows(), UnorderedElementsAre(stats1, stats2));
99 EXPECT_THAT(db()->GetRows(test_data().origin_domain), 105 EXPECT_THAT(db()->GetRows(test_data().origin_domain),
100 UnorderedElementsAre(stats1, stats2)); 106 UnorderedElementsAre(stats1, stats2));
101 EXPECT_TRUE(db()->RemoveRow(test_data().origin_domain)); 107 EXPECT_TRUE(db()->RemoveRow(test_data().origin_domain));
108 EXPECT_THAT(db()->GetAllRows(), IsEmpty());
102 EXPECT_THAT(db()->GetRows(test_data().origin_domain), IsEmpty()); 109 EXPECT_THAT(db()->GetRows(test_data().origin_domain), IsEmpty());
103 } 110 }
104 111
105 TEST_F(StatisticsTableTest, RemoveStatsByOriginAndTime) { 112 TEST_F(StatisticsTableTest, RemoveStatsByOriginAndTime) {
106 InteractionsStats stats1 = test_data(); 113 InteractionsStats stats1 = test_data();
107 stats1.update_time = base::Time::FromTimeT(1); 114 stats1.update_time = base::Time::FromTimeT(1);
108 InteractionsStats stats2 = test_data(); 115 InteractionsStats stats2 = test_data();
109 stats2.update_time = base::Time::FromTimeT(2); 116 stats2.update_time = base::Time::FromTimeT(2);
110 stats2.origin_domain = GURL(kTestDomain2); 117 stats2.origin_domain = GURL(kTestDomain2);
111 InteractionsStats stats3 = test_data(); 118 InteractionsStats stats3 = test_data();
112 stats3.update_time = base::Time::FromTimeT(2); 119 stats3.update_time = base::Time::FromTimeT(2);
113 stats3.origin_domain = GURL(kTestDomain3); 120 stats3.origin_domain = GURL(kTestDomain3);
114 InteractionsStats stats4 = test_data(); 121 InteractionsStats stats4 = test_data();
115 stats4.update_time = base::Time::FromTimeT(2); 122 stats4.update_time = base::Time::FromTimeT(2);
116 stats4.origin_domain = GURL(kTestDomain4); 123 stats4.origin_domain = GURL(kTestDomain4);
117 124
118 EXPECT_TRUE(db()->AddRow(stats1)); 125 EXPECT_TRUE(db()->AddRow(stats1));
119 EXPECT_TRUE(db()->AddRow(stats2)); 126 EXPECT_TRUE(db()->AddRow(stats2));
120 EXPECT_TRUE(db()->AddRow(stats3)); 127 EXPECT_TRUE(db()->AddRow(stats3));
121 EXPECT_TRUE(db()->AddRow(stats4)); 128 EXPECT_TRUE(db()->AddRow(stats4));
129 EXPECT_THAT(db()->GetAllRows(),
130 UnorderedElementsAre(stats1, stats2, stats3, stats4));
122 EXPECT_THAT(db()->GetRows(stats1.origin_domain), ElementsAre(stats1)); 131 EXPECT_THAT(db()->GetRows(stats1.origin_domain), ElementsAre(stats1));
123 EXPECT_THAT(db()->GetRows(stats2.origin_domain), ElementsAre(stats2)); 132 EXPECT_THAT(db()->GetRows(stats2.origin_domain), ElementsAre(stats2));
124 EXPECT_THAT(db()->GetRows(stats3.origin_domain), ElementsAre(stats3)); 133 EXPECT_THAT(db()->GetRows(stats3.origin_domain), ElementsAre(stats3));
125 EXPECT_THAT(db()->GetRows(stats4.origin_domain), ElementsAre(stats4)); 134 EXPECT_THAT(db()->GetRows(stats4.origin_domain), ElementsAre(stats4));
126 135
127 // Remove the entry with the timestamp 1 with no origin filter. 136 // Remove the entry with the timestamp 1 with no origin filter.
128 EXPECT_TRUE( 137 EXPECT_TRUE(
129 db()->RemoveStatsByOriginAndTime(base::Callback<bool(const GURL&)>(), 138 db()->RemoveStatsByOriginAndTime(base::Callback<bool(const GURL&)>(),
130 base::Time(), base::Time::FromTimeT(2))); 139 base::Time(), base::Time::FromTimeT(2)));
140 EXPECT_THAT(db()->GetAllRows(), UnorderedElementsAre(stats2, stats3, stats4));
131 EXPECT_THAT(db()->GetRows(stats1.origin_domain), IsEmpty()); 141 EXPECT_THAT(db()->GetRows(stats1.origin_domain), IsEmpty());
132 EXPECT_THAT(db()->GetRows(stats2.origin_domain), ElementsAre(stats2)); 142 EXPECT_THAT(db()->GetRows(stats2.origin_domain), ElementsAre(stats2));
133 EXPECT_THAT(db()->GetRows(stats3.origin_domain), ElementsAre(stats3)); 143 EXPECT_THAT(db()->GetRows(stats3.origin_domain), ElementsAre(stats3));
134 EXPECT_THAT(db()->GetRows(stats4.origin_domain), ElementsAre(stats4)); 144 EXPECT_THAT(db()->GetRows(stats4.origin_domain), ElementsAre(stats4));
135 145
136 // Remove the entries with the timestamp 2 that are NOT matching 146 // Remove the entries with the timestamp 2 that are NOT matching
137 // |kTestDomain3|. 147 // |kTestDomain3|.
138 EXPECT_TRUE(db()->RemoveStatsByOriginAndTime( 148 EXPECT_TRUE(db()->RemoveStatsByOriginAndTime(
139 base::Bind(static_cast<bool (*)(const GURL&, const GURL&)>(operator!=), 149 base::Bind(static_cast<bool (*)(const GURL&, const GURL&)>(operator!=),
140 stats3.origin_domain), 150 stats3.origin_domain),
141 base::Time::FromTimeT(2), base::Time())); 151 base::Time::FromTimeT(2), base::Time()));
152 EXPECT_THAT(db()->GetAllRows(), ElementsAre(stats3));
142 EXPECT_THAT(db()->GetRows(stats1.origin_domain), IsEmpty()); 153 EXPECT_THAT(db()->GetRows(stats1.origin_domain), IsEmpty());
143 EXPECT_THAT(db()->GetRows(stats2.origin_domain), IsEmpty()); 154 EXPECT_THAT(db()->GetRows(stats2.origin_domain), IsEmpty());
144 EXPECT_THAT(db()->GetRows(stats3.origin_domain), ElementsAre(stats3)); 155 EXPECT_THAT(db()->GetRows(stats3.origin_domain), ElementsAre(stats3));
145 EXPECT_THAT(db()->GetRows(stats4.origin_domain), IsEmpty()); 156 EXPECT_THAT(db()->GetRows(stats4.origin_domain), IsEmpty());
146 157
147 // Remove the entries with the timestamp 2 with no origin filter. 158 // Remove the entries with the timestamp 2 with no origin filter.
148 // This should delete the remaining entry. 159 // This should delete the remaining entry.
149 EXPECT_TRUE( 160 EXPECT_TRUE(
150 db()->RemoveStatsByOriginAndTime(base::Callback<bool(const GURL&)>(), 161 db()->RemoveStatsByOriginAndTime(base::Callback<bool(const GURL&)>(),
151 base::Time::FromTimeT(2), base::Time())); 162 base::Time::FromTimeT(2), base::Time()));
163 EXPECT_THAT(db()->GetAllRows(), IsEmpty());
152 EXPECT_THAT(db()->GetRows(stats1.origin_domain), IsEmpty()); 164 EXPECT_THAT(db()->GetRows(stats1.origin_domain), IsEmpty());
153 EXPECT_THAT(db()->GetRows(stats2.origin_domain), IsEmpty()); 165 EXPECT_THAT(db()->GetRows(stats2.origin_domain), IsEmpty());
154 EXPECT_THAT(db()->GetRows(stats3.origin_domain), IsEmpty()); 166 EXPECT_THAT(db()->GetRows(stats3.origin_domain), IsEmpty());
155 EXPECT_THAT(db()->GetRows(stats4.origin_domain), IsEmpty()); 167 EXPECT_THAT(db()->GetRows(stats4.origin_domain), IsEmpty());
156 } 168 }
157 169
158 TEST_F(StatisticsTableTest, BadURL) { 170 TEST_F(StatisticsTableTest, BadURL) {
159 test_data().origin_domain = GURL("trash"); 171 test_data().origin_domain = GURL("trash");
160 EXPECT_FALSE(db()->AddRow(test_data())); 172 EXPECT_FALSE(db()->AddRow(test_data()));
173 EXPECT_THAT(db()->GetAllRows(), IsEmpty());
161 EXPECT_THAT(db()->GetRows(test_data().origin_domain), IsEmpty()); 174 EXPECT_THAT(db()->GetRows(test_data().origin_domain), IsEmpty());
162 EXPECT_FALSE(db()->RemoveRow(test_data().origin_domain)); 175 EXPECT_FALSE(db()->RemoveRow(test_data().origin_domain));
163 } 176 }
164 177
165 TEST_F(StatisticsTableTest, EmptyURL) { 178 TEST_F(StatisticsTableTest, EmptyURL) {
166 test_data().origin_domain = GURL(); 179 test_data().origin_domain = GURL();
167 EXPECT_FALSE(db()->AddRow(test_data())); 180 EXPECT_FALSE(db()->AddRow(test_data()));
181 EXPECT_THAT(db()->GetAllRows(), IsEmpty());
168 EXPECT_THAT(db()->GetRows(test_data().origin_domain), IsEmpty()); 182 EXPECT_THAT(db()->GetRows(test_data().origin_domain), IsEmpty());
169 EXPECT_FALSE(db()->RemoveRow(test_data().origin_domain)); 183 EXPECT_FALSE(db()->RemoveRow(test_data().origin_domain));
170 } 184 }
171 185
172 } // namespace 186 } // namespace
173 } // namespace password_manager 187 } // namespace password_manager
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698