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

Side by Side Diff: webkit/browser/fileapi/sandbox_prioritized_origin_database_unittest.cc

Issue 253753007: Move all remaining fileapi and quota unit tests from webkit/ to content/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address feedback Created 6 years, 7 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
OLDNEW
(Empty)
1 // Copyright 2013 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 "base/basictypes.h"
6 #include "base/file_util.h"
7 #include "base/files/scoped_temp_dir.h"
8 #include "base/platform_file.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "webkit/browser/fileapi/sandbox_origin_database.h"
11 #include "webkit/browser/fileapi/sandbox_prioritized_origin_database.h"
12
13 namespace fileapi {
14
15 TEST(SandboxPrioritizedOriginDatabaseTest, BasicTest) {
16 base::ScopedTempDir dir;
17 base::FilePath path;
18 ASSERT_TRUE(dir.CreateUniqueTempDir());
19
20 const std::string kOrigin1("origin1");
21 const std::string kOrigin2("origin2");
22
23 SandboxPrioritizedOriginDatabase database(dir.path(), NULL);
24
25 // Set the kOrigin1 as a parimary origin.
26 EXPECT_TRUE(database.InitializePrimaryOrigin(kOrigin1));
27
28 // Add two origins.
29 EXPECT_TRUE(database.GetPathForOrigin(kOrigin1, &path));
30 EXPECT_TRUE(database.GetPathForOrigin(kOrigin2, &path));
31
32 // Verify them.
33 EXPECT_TRUE(database.HasOriginPath(kOrigin1));
34 EXPECT_TRUE(database.GetPathForOrigin(kOrigin1, &path));
35 EXPECT_FALSE(path.empty());
36 EXPECT_TRUE(database.HasOriginPath(kOrigin2));
37 EXPECT_TRUE(database.GetPathForOrigin(kOrigin2, &path));
38 EXPECT_FALSE(path.empty());
39
40 std::vector<SandboxOriginDatabaseInterface::OriginRecord> origins;
41 database.ListAllOrigins(&origins);
42 ASSERT_EQ(2U, origins.size());
43 EXPECT_TRUE(origins[0].origin == kOrigin1 ||
44 origins[1].origin == kOrigin1);
45 EXPECT_TRUE(origins[0].origin == kOrigin2 ||
46 origins[1].origin == kOrigin2);
47 EXPECT_NE(origins[0].path, origins[1].path);
48
49 // Try remove path for kOrigin1.
50 database.RemovePathForOrigin(kOrigin1);
51
52 // Verify the removal.
53 EXPECT_FALSE(database.HasOriginPath(kOrigin1));
54 EXPECT_TRUE(database.HasOriginPath(kOrigin2));
55 database.ListAllOrigins(&origins);
56 ASSERT_EQ(1U, origins.size());
57 EXPECT_EQ(kOrigin2, origins[0].origin);
58
59 // Try remove path for kOrigin2.
60 database.RemovePathForOrigin(kOrigin2);
61
62 // Verify the removal.
63 EXPECT_FALSE(database.HasOriginPath(kOrigin1));
64 EXPECT_FALSE(database.HasOriginPath(kOrigin2));
65 database.ListAllOrigins(&origins);
66 EXPECT_TRUE(origins.empty());
67 }
68
69 TEST(SandboxPrioritizedOriginDatabaseTest, SetPrimaryLaterTest) {
70 base::ScopedTempDir dir;
71 base::FilePath path;
72 ASSERT_TRUE(dir.CreateUniqueTempDir());
73
74 const std::string kOrigin1("origin1");
75 const std::string kOrigin2("origin2");
76
77 SandboxPrioritizedOriginDatabase database(dir.path(), NULL);
78
79 EXPECT_TRUE(database.GetPrimaryOrigin().empty());
80
81 EXPECT_TRUE(database.GetPathForOrigin(kOrigin1, &path));
82 EXPECT_TRUE(database.GetPathForOrigin(kOrigin2, &path));
83
84 // Set the kOrigin1 as a parimary origin.
85 EXPECT_TRUE(database.InitializePrimaryOrigin(kOrigin1));
86 EXPECT_EQ(kOrigin1, database.GetPrimaryOrigin());
87
88 // Regardless of whether it is initialized as primary or not
89 // they should just work.
90 EXPECT_TRUE(database.HasOriginPath(kOrigin1));
91 EXPECT_TRUE(database.GetPathForOrigin(kOrigin1, &path));
92 EXPECT_FALSE(path.empty());
93 EXPECT_TRUE(database.HasOriginPath(kOrigin2));
94 EXPECT_TRUE(database.GetPathForOrigin(kOrigin2, &path));
95 EXPECT_FALSE(path.empty());
96 }
97
98 TEST(SandboxPrioritizedOriginDatabaseTest, LostPrimaryOriginFileTest) {
99 base::ScopedTempDir dir;
100 base::FilePath path;
101 ASSERT_TRUE(dir.CreateUniqueTempDir());
102
103 const std::string kOrigin1("origin1");
104 const std::string kData("foo");
105
106 SandboxPrioritizedOriginDatabase database(dir.path(), NULL);
107
108 EXPECT_TRUE(database.GetPrimaryOrigin().empty());
109
110 // Set the kOrigin1 as a parimary origin.
111 EXPECT_TRUE(database.InitializePrimaryOrigin(kOrigin1));
112 EXPECT_EQ(kOrigin1, database.GetPrimaryOrigin());
113
114 // Make sure it works.
115 EXPECT_TRUE(database.HasOriginPath(kOrigin1));
116 EXPECT_TRUE(database.GetPathForOrigin(kOrigin1, &path));
117
118 // Reset the database.
119 database.DropDatabase();
120
121 // kOrigin1 should still be marked as primary.
122 EXPECT_TRUE(database.HasOriginPath(kOrigin1));
123 EXPECT_TRUE(database.GetPathForOrigin(kOrigin1, &path));
124
125 // Corrupt the primary origin file.
126 base::WriteFile(database.primary_origin_file(), kData.data(), kData.size());
127
128 // Reset the database.
129 database.DropDatabase();
130
131 // kOrigin1 is no longer marked as primary, and unfortunately we fail
132 // to find the data for the origin.
133 EXPECT_FALSE(database.HasOriginPath(kOrigin1));
134 }
135
136 TEST(SandboxPrioritizedOriginDatabaseTest, MigrationTest) {
137 base::ScopedTempDir dir;
138 ASSERT_TRUE(dir.CreateUniqueTempDir());
139
140 const std::string kOrigin1("origin1");
141 const std::string kOrigin2("origin2");
142 const std::string kFakeDirectoryData1("0123456789");
143 const std::string kFakeDirectoryData2("abcde");
144 base::FilePath old_dir_db_path1, old_dir_db_path2;
145 base::FilePath path1, path2;
146
147 // Initialize the directory with two origins using the regular
148 // SandboxOriginDatabase.
149 {
150 SandboxOriginDatabase database_old(dir.path(), NULL);
151 base::FilePath old_db_path = database_old.GetDatabasePath();
152 EXPECT_FALSE(base::PathExists(old_db_path));
153
154 // Initialize paths for kOrigin1 and kOrigin2.
155 EXPECT_TRUE(database_old.GetPathForOrigin(kOrigin1, &path1));
156 EXPECT_FALSE(path1.empty());
157 EXPECT_TRUE(database_old.GetPathForOrigin(kOrigin2, &path2));
158 EXPECT_FALSE(path2.empty());
159
160 EXPECT_TRUE(base::DirectoryExists(old_db_path));
161
162 // Populate the origin directory with some fake data.
163 old_dir_db_path1 = dir.path().Append(path1);
164 ASSERT_TRUE(base::CreateDirectory(old_dir_db_path1));
165 EXPECT_EQ(static_cast<int>(kFakeDirectoryData1.size()),
166 base::WriteFile(old_dir_db_path1.AppendASCII("dummy"),
167 kFakeDirectoryData1.data(),
168 kFakeDirectoryData1.size()));
169 old_dir_db_path2 = dir.path().Append(path2);
170 ASSERT_TRUE(base::CreateDirectory(old_dir_db_path2));
171 EXPECT_EQ(static_cast<int>(kFakeDirectoryData2.size()),
172 base::WriteFile(old_dir_db_path2.AppendASCII("dummy"),
173 kFakeDirectoryData2.data(),
174 kFakeDirectoryData2.size()));
175 }
176
177 // Re-open the directory using sandboxPrioritizedOriginDatabase.
178 SandboxPrioritizedOriginDatabase database(dir.path(), NULL);
179
180 // Set the kOrigin1 as a parimary origin.
181 // (Trying to initialize another origin should fail).
182 EXPECT_TRUE(database.InitializePrimaryOrigin(kOrigin1));
183 EXPECT_FALSE(database.InitializePrimaryOrigin(kOrigin2));
184
185 EXPECT_EQ(kOrigin1, database.GetPrimaryOrigin());
186
187 // Regardless of whether the origin is registered as primary or not
188 // it should just work.
189 EXPECT_TRUE(database.HasOriginPath(kOrigin1));
190 EXPECT_TRUE(database.GetPathForOrigin(kOrigin1, &path1));
191 EXPECT_TRUE(database.HasOriginPath(kOrigin2));
192 EXPECT_TRUE(database.GetPathForOrigin(kOrigin2, &path2));
193
194 // The directory content must be kept (or migrated if necessary) as well.
195 std::string origin_db_data;
196 base::FilePath dir_db_path = dir.path().Append(path1);
197 EXPECT_TRUE(base::PathExists(dir_db_path.AppendASCII("dummy")));
198 EXPECT_TRUE(base::ReadFileToString(
199 dir_db_path.AppendASCII("dummy"), &origin_db_data));
200 EXPECT_EQ(kFakeDirectoryData1, origin_db_data);
201
202 origin_db_data.clear();
203 dir_db_path = dir.path().Append(path2);
204 EXPECT_TRUE(base::PathExists(dir_db_path.AppendASCII("dummy")));
205 EXPECT_TRUE(base::ReadFileToString(
206 dir_db_path.AppendASCII("dummy"), &origin_db_data));
207 EXPECT_EQ(kFakeDirectoryData2, origin_db_data);
208
209 // After the migration the kOrigin1 directory database path must be gone.
210 EXPECT_FALSE(base::PathExists(old_dir_db_path1));
211 EXPECT_TRUE(base::PathExists(old_dir_db_path2));
212 }
213
214 } // namespace fileapi
OLDNEW
« no previous file with comments | « webkit/browser/fileapi/sandbox_origin_database_unittest.cc ('k') | webkit/browser/fileapi/timed_task_helper_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698