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

Side by Side Diff: chrome/browser/password_manager/login_database_unittest.cc

Issue 1567022: Implement LoginDatabase on all platforms. (Closed)
Patch Set: Update Created 10 years, 8 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 (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "testing/gtest/include/gtest/gtest.h" 5 #include "testing/gtest/include/gtest/gtest.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
11 #include "base/time.h" 11 #include "base/time.h"
12 #include "chrome/browser/password_manager/login_database.h" 12 #include "chrome/browser/password_manager/login_database.h"
13 #if defined(OS_MACOSX)
14 #include "chrome/browser/password_manager/login_database_mac.h"
15 #endif
16 #include "chrome/common/chrome_paths.h" 13 #include "chrome/common/chrome_paths.h"
17 #include "webkit/glue/password_form.h" 14 #include "webkit/glue/password_form.h"
18 15
19 using webkit_glue::PasswordForm; 16 using webkit_glue::PasswordForm;
20 17
21 class LoginDatabaseTest : public testing::Test { 18 class LoginDatabaseTest : public testing::Test {
22 protected: 19 protected:
23 virtual void SetUp() { 20 virtual void SetUp() {
24 PathService::Get(chrome::DIR_TEST_DATA, &file_); 21 PathService::Get(chrome::DIR_TEST_DATA, &file_);
25 const std::string test_db = 22 const std::string test_db =
26 "TestMetadataStoreMacDatabase" + 23 "TestMetadataStoreMacDatabase" +
27 Int64ToString(base::Time::Now().ToInternalValue()) + ".db"; 24 Int64ToString(base::Time::Now().ToInternalValue()) + ".db";
28 file_ = file_.AppendASCII(test_db); 25 file_ = file_.AppendASCII(test_db);
29 file_util::Delete(file_, false); 26 file_util::Delete(file_, false);
30 } 27 }
31 28
32 virtual void TearDown() { 29 virtual void TearDown() {
33 file_util::Delete(file_, false); 30 file_util::Delete(file_, false);
34 } 31 }
35 32
36 FilePath file_; 33 FilePath file_;
37 }; 34 };
38 35
39 // Returns the correct concrete subclass for the platform. Caller is responsible
40 // for delete-ing the return object.
41 static LoginDatabase* CreateLoginDatabase() {
42 #if defined(OS_MACOSX)
43 return new LoginDatabaseMac();
44 #else
45 return NULL;
46 #endif
47 }
48
49 TEST_F(LoginDatabaseTest, Logins) { 36 TEST_F(LoginDatabaseTest, Logins) {
50 scoped_ptr<LoginDatabase> db(CreateLoginDatabase()); 37 scoped_ptr<LoginDatabase> db(new LoginDatabase());
51 if (!db.get())
52 return;
53 38
54 ASSERT_TRUE(db->Init(file_)); 39 ASSERT_TRUE(db->Init(file_));
55 40
56 std::vector<PasswordForm*> result; 41 std::vector<PasswordForm*> result;
57 42
58 // Verify the database is empty. 43 // Verify the database is empty.
59 EXPECT_TRUE(db->GetAutofillableLogins(&result)); 44 EXPECT_TRUE(db->GetAutofillableLogins(&result));
60 EXPECT_EQ(0U, result.size()); 45 EXPECT_EQ(0U, result.size());
61 46
62 // Example password form. 47 // Example password form.
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 } 189 }
205 190
206 static void ClearResults(std::vector<PasswordForm*>* results) { 191 static void ClearResults(std::vector<PasswordForm*>* results) {
207 for (size_t i = 0; i < results->size(); ++i) { 192 for (size_t i = 0; i < results->size(); ++i) {
208 delete (*results)[i]; 193 delete (*results)[i];
209 } 194 }
210 results->clear(); 195 results->clear();
211 } 196 }
212 197
213 TEST_F(LoginDatabaseTest, ClearPrivateData_SavedPasswords) { 198 TEST_F(LoginDatabaseTest, ClearPrivateData_SavedPasswords) {
214 scoped_ptr<LoginDatabase> db(CreateLoginDatabase()); 199 scoped_ptr<LoginDatabase> db(new LoginDatabase());
215 if (!db.get())
216 return;
217 200
218 EXPECT_TRUE(db->Init(file_)); 201 EXPECT_TRUE(db->Init(file_));
219 202
220 std::vector<PasswordForm*> result; 203 std::vector<PasswordForm*> result;
221 204
222 // Verify the database is empty. 205 // Verify the database is empty.
223 EXPECT_TRUE(db->GetAutofillableLogins(&result)); 206 EXPECT_TRUE(db->GetAutofillableLogins(&result));
224 EXPECT_EQ(0U, result.size()); 207 EXPECT_EQ(0U, result.size());
225 208
226 base::Time now = base::Time::Now(); 209 base::Time now = base::Time::Now();
227 base::TimeDelta one_day = base::TimeDelta::FromDays(1); 210 base::TimeDelta one_day = base::TimeDelta::FromDays(1);
228 211
229 // Create one with a 0 time. 212 // Create one with a 0 time.
230 EXPECT_TRUE(AddTimestampedLogin(db.get(), "1", "foo1", base::Time())); 213 EXPECT_TRUE(AddTimestampedLogin(db.get(), "1", "foo1", base::Time()));
231 // Create one for now and +/- 1 day. 214 // Create one for now and +/- 1 day.
232 EXPECT_TRUE(AddTimestampedLogin(db.get(), "2", "foo2", now - one_day)); 215 EXPECT_TRUE(AddTimestampedLogin(db.get(), "2", "foo2", now - one_day));
233 EXPECT_TRUE(AddTimestampedLogin(db.get(), "3", "foo3", now)); 216 EXPECT_TRUE(AddTimestampedLogin(db.get(), "3", "foo3", now));
234 EXPECT_TRUE(AddTimestampedLogin(db.get(), "4", "foo4", now + one_day)); 217 EXPECT_TRUE(AddTimestampedLogin(db.get(), "4", "foo4", now + one_day));
235 218
236 // Verify inserts worked. 219 // Verify inserts worked.
237 EXPECT_TRUE(db->GetAutofillableLogins(&result)); 220 EXPECT_TRUE(db->GetAutofillableLogins(&result));
238 EXPECT_EQ(4U, result.size()); 221 EXPECT_EQ(4U, result.size());
239 ClearResults(&result); 222 ClearResults(&result);
240 223
224 // Get everything from today's date and on.
225 EXPECT_TRUE(db->GetLoginsCreatedBetween(now, base::Time(), &result));
226 EXPECT_EQ(2U, result.size());
227 ClearResults(&result);
228
241 // Delete everything from today's date and on. 229 // Delete everything from today's date and on.
242 db->RemoveLoginsCreatedBetween(now, base::Time()); 230 db->RemoveLoginsCreatedBetween(now, base::Time());
243 231
244 // Should have deleted half of what we inserted. 232 // Should have deleted half of what we inserted.
245 EXPECT_TRUE(db->GetAutofillableLogins(&result)); 233 EXPECT_TRUE(db->GetAutofillableLogins(&result));
246 EXPECT_EQ(2U, result.size()); 234 EXPECT_EQ(2U, result.size());
247 ClearResults(&result); 235 ClearResults(&result);
248 236
249 // Delete with 0 date (should delete all). 237 // Delete with 0 date (should delete all).
250 db->RemoveLoginsCreatedBetween(base::Time(), base::Time()); 238 db->RemoveLoginsCreatedBetween(base::Time(), base::Time());
251 239
252 // Verify nothing is left. 240 // Verify nothing is left.
253 EXPECT_TRUE(db->GetAutofillableLogins(&result)); 241 EXPECT_TRUE(db->GetAutofillableLogins(&result));
254 EXPECT_EQ(0U, result.size()); 242 EXPECT_EQ(0U, result.size());
255 } 243 }
256 244
257 TEST_F(LoginDatabaseTest, BlacklistedLogins) { 245 TEST_F(LoginDatabaseTest, BlacklistedLogins) {
258 scoped_ptr<LoginDatabase> db(CreateLoginDatabase()); 246 scoped_ptr<LoginDatabase> db(new LoginDatabase());
259 if (!db.get())
260 return;
261 247
262 EXPECT_TRUE(db->Init(file_)); 248 EXPECT_TRUE(db->Init(file_));
263 std::vector<PasswordForm*> result; 249 std::vector<PasswordForm*> result;
264 250
265 // Verify the database is empty. 251 // Verify the database is empty.
266 EXPECT_TRUE(db->GetBlacklistLogins(&result)); 252 EXPECT_TRUE(db->GetBlacklistLogins(&result));
267 ASSERT_EQ(0U, result.size()); 253 ASSERT_EQ(0U, result.size());
268 254
269 // Save a form as blacklisted. 255 // Save a form as blacklisted.
270 PasswordForm form; 256 PasswordForm form;
(...skipping 16 matching lines...) Expand all
287 // GetLogins should give the blacklisted result. 273 // GetLogins should give the blacklisted result.
288 EXPECT_TRUE(db->GetLogins(form, &result)); 274 EXPECT_TRUE(db->GetLogins(form, &result));
289 EXPECT_EQ(1U, result.size()); 275 EXPECT_EQ(1U, result.size());
290 ClearResults(&result); 276 ClearResults(&result);
291 277
292 // So should GetAllBlacklistedLogins. 278 // So should GetAllBlacklistedLogins.
293 EXPECT_TRUE(db->GetBlacklistLogins(&result)); 279 EXPECT_TRUE(db->GetBlacklistLogins(&result));
294 EXPECT_EQ(1U, result.size()); 280 EXPECT_EQ(1U, result.size());
295 ClearResults(&result); 281 ClearResults(&result);
296 } 282 }
OLDNEW
« no previous file with comments | « chrome/browser/password_manager/login_database_posix.cc ('k') | chrome/browser/password_manager/login_database_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698