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

Side by Side Diff: chrome/browser/firefox_importer_unittest.cc

Issue 3035: Move importer files into an importer subdirectory. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/firefox3_importer.cc ('k') | chrome/browser/firefox_importer_utils.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2006-2008 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 "testing/gtest/include/gtest/gtest.h"
6
7 #include "base/file_util.h"
8 #include "base/path_service.h"
9 #include "chrome/browser/firefox2_importer.h"
10 #include "chrome/browser/firefox_importer_utils.h"
11 #include "chrome/browser/firefox_profile_lock.h"
12 #include "chrome/common/chrome_paths.h"
13
14 TEST(FirefoxImporterTest, Firefox2NSS3Decryptor) {
15 std::wstring nss_path;
16 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &nss_path));
17 file_util::AppendToPath(&nss_path, L"firefox2_nss");
18 std::wstring db_path;
19 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &db_path));
20 file_util::AppendToPath(&db_path, L"firefox2_profile");
21 NSSDecryptor decryptor;
22 EXPECT_TRUE(decryptor.Init(nss_path, db_path));
23 EXPECT_EQ(L"hello", decryptor.Decrypt("MDIEEPgAAAAAAAAAAAAAAAAAAAE"
24 "wFAYIKoZIhvcNAwcECBJM63MpT9rtBAjMCm7qo/EhlA=="));
25 // Test UTF-16 encoding.
26 EXPECT_EQ(L"\x4E2D", decryptor.Decrypt("MDIEEPgAAAAAAAAAAAAAAAAAAAE"
27 "wFAYIKoZIhvcNAwcECN9OQ5ZFmhb8BAiFo1Z+fUvaIQ=="));
28 }
29
30 TEST(FirefoxImporterTest, Firefox3NSS3Decryptor) {
31 std::wstring nss_path;
32 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &nss_path));
33 file_util::AppendToPath(&nss_path, L"firefox3_nss");
34 std::wstring db_path;
35 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &db_path));
36 file_util::AppendToPath(&db_path, L"firefox3_profile");
37 NSSDecryptor decryptor;
38 EXPECT_TRUE(decryptor.Init(nss_path, db_path));
39 EXPECT_EQ(L"hello", decryptor.Decrypt("MDIEEPgAAAAAAAAAAAAAAAAAAAE"
40 "wFAYIKoZIhvcNAwcECKajtRg4qFSHBAhv9luFkXgDJA=="));
41 // Test UTF-16 encoding.
42 EXPECT_EQ(L"\x4E2D", decryptor.Decrypt("MDIEEPgAAAAAAAAAAAAAAAAAAAE"
43 "wFAYIKoZIhvcNAwcECLWqqiccfQHWBAie74hxnULxlw=="));
44 }
45
46 TEST(FirefoxImporterTest, Firefox2BookmarkParse) {
47 bool result;
48
49 // Tests charset.
50 std::string charset;
51 result = Firefox2Importer::ParseCharsetFromLine(
52 "<META HTTP-EQUIV=\"Content-Type\" "
53 "CONTENT=\"text/html; charset=UTF-8\">",
54 &charset);
55 EXPECT_TRUE(result);
56 EXPECT_EQ("UTF-8", charset);
57
58 // Escaped characters in name.
59 std::wstring folder_name;
60 bool is_toolbar_folder;
61 result = Firefox2Importer::ParseFolderNameFromLine(
62 "<DT><H3 ADD_DATE=\"1207558707\" >&lt; &gt;"
63 " &amp; &quot; &#39; \\ /</H3>",
64 charset, &folder_name, &is_toolbar_folder);
65 EXPECT_TRUE(result);
66 EXPECT_EQ(L"< > & \" ' \\ /", folder_name);
67 EXPECT_EQ(false, is_toolbar_folder);
68
69 // Empty name and toolbar folder attribute.
70 result = Firefox2Importer::ParseFolderNameFromLine(
71 "<DT><H3 PERSONAL_TOOLBAR_FOLDER=\"true\"></H3>",
72 charset, &folder_name, &is_toolbar_folder);
73 EXPECT_TRUE(result);
74 EXPECT_EQ(L"", folder_name);
75 EXPECT_EQ(true, is_toolbar_folder);
76
77 // Unicode characters in title and shortcut.
78 std::wstring title;
79 GURL url, favicon;
80 std::wstring shortcut;
81 std::wstring post_data;
82 Time add_date;
83 result = Firefox2Importer::ParseBookmarkFromLine(
84 "<DT><A HREF=\"http://chinese.site.cn/path?query=1#ref\" "
85 "SHORTCUTURL=\"\xE4\xB8\xAD\">\xE4\xB8\xAD\xE6\x96\x87</A>",
86 charset, &title, &url, &favicon, &shortcut, &add_date, &post_data);
87 EXPECT_TRUE(result);
88 EXPECT_EQ(L"\x4E2D\x6587", title);
89 EXPECT_EQ("http://chinese.site.cn/path?query=1#ref", url.spec());
90 EXPECT_EQ(L"\x4E2D", shortcut);
91 EXPECT_EQ(L"", post_data);
92 EXPECT_TRUE(Time() == add_date);
93
94 // No shortcut, and url contains %22 ('"' character).
95 result = Firefox2Importer::ParseBookmarkFromLine(
96 "<DT><A HREF=\"http://domain.com/?q=%22<>%22\">name</A>",
97 charset, &title, &url, &favicon, &shortcut, &add_date, &post_data);
98 EXPECT_TRUE(result);
99 EXPECT_EQ(L"name", title);
100 EXPECT_EQ("http://domain.com/?q=\"%3C%3E\"", url.spec());
101 EXPECT_EQ(L"", shortcut);
102 EXPECT_EQ(L"", post_data);
103 EXPECT_TRUE(Time() == add_date);
104
105 // Creation date.
106 result = Firefox2Importer::ParseBookmarkFromLine(
107 "<DT><A HREF=\"http://site/\" ADD_DATE=\"1121301154\">name</A>",
108 charset, &title, &url, &favicon, &shortcut, &add_date, &post_data);
109 EXPECT_TRUE(result);
110 EXPECT_EQ(L"name", title);
111 EXPECT_EQ(GURL("http://site/"), url);
112 EXPECT_EQ(L"", shortcut);
113 EXPECT_EQ(L"", post_data);
114 EXPECT_TRUE(Time::FromTimeT(1121301154) == add_date);
115
116 // Post-data
117 result = Firefox2Importer::ParseBookmarkFromLine(
118 "<DT><A HREF=\"http://localhost:8080/test/hello.html\" ADD_DATE=\""
119 "1212447159\" LAST_VISIT=\"1212447251\" LAST_MODIFIED=\"1212447248\""
120 "SHORTCUTURL=\"post\" ICON=\"data:\" POST_DATA=\"lname%3D%25s\""
121 "LAST_CHARSET=\"UTF-8\" ID=\"rdf:#$weKaR3\">Test Post keyword</A>",
122 charset, &title, &url, &favicon, &shortcut, &add_date, &post_data);
123 EXPECT_TRUE(result);
124 EXPECT_EQ(L"Test Post keyword", title);
125 EXPECT_EQ("http://localhost:8080/test/hello.html", url.spec());
126 EXPECT_EQ(L"post", shortcut);
127 EXPECT_EQ(L"lname%3D%25s", post_data);
128 EXPECT_TRUE(Time::FromTimeT(1212447159) == add_date);
129
130 // Invalid case.
131 result = Firefox2Importer::ParseBookmarkFromLine(
132 "<DT><A HREF=\"http://domain.com/?q=%22",
133 charset, &title, &url, &favicon, &shortcut, &add_date, &post_data);
134 EXPECT_FALSE(result);
135 EXPECT_EQ(L"", title);
136 EXPECT_EQ("", url.spec());
137 EXPECT_EQ(L"", shortcut);
138 EXPECT_EQ(L"", post_data);
139 EXPECT_TRUE(Time() == add_date);
140 }
141
142 // Tests basic functionality and verifies that the lock file is deleted after
143 // use.
144 TEST(FirefoxImporterTest, ProfileLock) {
145 std::wstring test_path;
146 file_util::CreateNewTempDirectory(L"firefox_profile", &test_path);
147 std::wstring lock_file_path = test_path;
148 file_util::AppendToPath(&lock_file_path, FirefoxProfileLock::kLockFileName);
149
150 scoped_ptr<FirefoxProfileLock> lock;
151 EXPECT_EQ(static_cast<FirefoxProfileLock*>(NULL), lock.get());
152 EXPECT_FALSE(file_util::PathExists(lock_file_path));
153 lock.reset(new FirefoxProfileLock(test_path));
154 EXPECT_TRUE(lock->HasAcquired());
155 EXPECT_TRUE(file_util::PathExists(lock_file_path));
156 lock->Unlock();
157 EXPECT_FALSE(lock->HasAcquired());
158 EXPECT_FALSE(file_util::PathExists(lock_file_path));
159 lock->Lock();
160 EXPECT_TRUE(lock->HasAcquired());
161 EXPECT_TRUE(file_util::PathExists(lock_file_path));
162 lock->Lock();
163 EXPECT_TRUE(lock->HasAcquired());
164 lock->Unlock();
165 EXPECT_FALSE(lock->HasAcquired());
166 EXPECT_FALSE(file_util::PathExists(lock_file_path));
167 }
168
169 // If for some reason the lock file is left behind by the previous owner, we
170 // should still be able to lock it, at least in the Windows implementation.
171 TEST(FirefoxImporterTest, ProfileLockOrphaned) {
172 std::wstring test_path;
173 file_util::CreateNewTempDirectory(L"firefox_profile", &test_path);
174 std::wstring lock_file_path = test_path;
175 file_util::AppendToPath(&lock_file_path, FirefoxProfileLock::kLockFileName);
176
177 // Create the orphaned lock file.
178 HANDLE lock_file = CreateFile(lock_file_path.c_str(),
179 GENERIC_READ | GENERIC_WRITE,
180 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL,
181 NULL);
182 CloseHandle(lock_file);
183 EXPECT_TRUE(file_util::PathExists(lock_file_path));
184
185 scoped_ptr<FirefoxProfileLock> lock;
186 EXPECT_EQ(static_cast<FirefoxProfileLock*>(NULL), lock.get());
187 lock.reset(new FirefoxProfileLock(test_path));
188 EXPECT_TRUE(lock->HasAcquired());
189 lock->Unlock();
190 EXPECT_FALSE(lock->HasAcquired());
191 }
192
193 // Tests two locks contending for the same lock file.
194 TEST(FirefoxImporterTest, ProfileLockContention) {
195 std::wstring test_path;
196 file_util::CreateNewTempDirectory(L"firefox_profile", &test_path);
197
198 scoped_ptr<FirefoxProfileLock> lock1;
199 EXPECT_EQ(static_cast<FirefoxProfileLock*>(NULL), lock1.get());
200 lock1.reset(new FirefoxProfileLock(test_path));
201 EXPECT_TRUE(lock1->HasAcquired());
202
203 scoped_ptr<FirefoxProfileLock> lock2;
204 EXPECT_EQ(static_cast<FirefoxProfileLock*>(NULL), lock2.get());
205 lock2.reset(new FirefoxProfileLock(test_path));
206 EXPECT_FALSE(lock2->HasAcquired());
207
208 lock1->Unlock();
209 EXPECT_FALSE(lock1->HasAcquired());
210
211 lock2->Lock();
212 EXPECT_TRUE(lock2->HasAcquired());
213 lock2->Unlock();
214 EXPECT_FALSE(lock2->HasAcquired());
215 }
216
OLDNEW
« no previous file with comments | « chrome/browser/firefox3_importer.cc ('k') | chrome/browser/firefox_importer_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698