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

Side by Side Diff: chrome/common/extensions/extension_file_util_unittest.cc

Issue 100573002: Move directory creation functions to base namespace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/common/extensions/extension_file_util.h" 5 #include "chrome/common/extensions/extension_file_util.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/files/scoped_temp_dir.h" 8 #include "base/files/scoped_temp_dir.h"
9 #include "base/json/json_string_value_serializer.h" 9 #include "base/json/json_string_value_serializer.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 18 matching lines...) Expand all
29 }; 29 };
30 30
31 TEST_F(ExtensionFileUtilTest, InstallUninstallGarbageCollect) { 31 TEST_F(ExtensionFileUtilTest, InstallUninstallGarbageCollect) {
32 base::ScopedTempDir temp; 32 base::ScopedTempDir temp;
33 ASSERT_TRUE(temp.CreateUniqueTempDir()); 33 ASSERT_TRUE(temp.CreateUniqueTempDir());
34 34
35 // Create a source extension. 35 // Create a source extension.
36 std::string extension_id("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); 36 std::string extension_id("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
37 std::string version("1.0"); 37 std::string version("1.0");
38 base::FilePath src = temp.path().AppendASCII(extension_id); 38 base::FilePath src = temp.path().AppendASCII(extension_id);
39 ASSERT_TRUE(file_util::CreateDirectory(src)); 39 ASSERT_TRUE(base::CreateDirectory(src));
40 40
41 // Create a extensions tree. 41 // Create a extensions tree.
42 base::FilePath all_extensions = temp.path().AppendASCII("extensions"); 42 base::FilePath all_extensions = temp.path().AppendASCII("extensions");
43 ASSERT_TRUE(file_util::CreateDirectory(all_extensions)); 43 ASSERT_TRUE(base::CreateDirectory(all_extensions));
44 44
45 // Install in empty directory. Should create parent directories as needed. 45 // Install in empty directory. Should create parent directories as needed.
46 base::FilePath version_1 = extension_file_util::InstallExtension( 46 base::FilePath version_1 = extension_file_util::InstallExtension(
47 src, 47 src,
48 extension_id, 48 extension_id,
49 version, 49 version,
50 all_extensions); 50 all_extensions);
51 ASSERT_EQ(version_1.value(), 51 ASSERT_EQ(version_1.value(),
52 all_extensions.AppendASCII(extension_id).AppendASCII("1.0_0") 52 all_extensions.AppendASCII(extension_id).AppendASCII("1.0_0")
53 .value()); 53 .value());
54 ASSERT_TRUE(base::DirectoryExists(version_1)); 54 ASSERT_TRUE(base::DirectoryExists(version_1));
55 55
56 // Should have moved the source. 56 // Should have moved the source.
57 ASSERT_FALSE(base::DirectoryExists(src)); 57 ASSERT_FALSE(base::DirectoryExists(src));
58 58
59 // Install again. Should create a new one with different name. 59 // Install again. Should create a new one with different name.
60 ASSERT_TRUE(file_util::CreateDirectory(src)); 60 ASSERT_TRUE(base::CreateDirectory(src));
61 base::FilePath version_2 = extension_file_util::InstallExtension( 61 base::FilePath version_2 = extension_file_util::InstallExtension(
62 src, 62 src,
63 extension_id, 63 extension_id,
64 version, 64 version,
65 all_extensions); 65 all_extensions);
66 ASSERT_EQ(version_2.value(), 66 ASSERT_EQ(version_2.value(),
67 all_extensions.AppendASCII(extension_id).AppendASCII("1.0_1") 67 all_extensions.AppendASCII(extension_id).AppendASCII("1.0_1")
68 .value()); 68 .value());
69 ASSERT_TRUE(base::DirectoryExists(version_2)); 69 ASSERT_TRUE(base::DirectoryExists(version_2));
70 70
71 // Should have moved the source. 71 // Should have moved the source.
72 ASSERT_FALSE(base::DirectoryExists(src)); 72 ASSERT_FALSE(base::DirectoryExists(src));
73 73
74 // Install yet again. Should create a new one with a different name. 74 // Install yet again. Should create a new one with a different name.
75 ASSERT_TRUE(file_util::CreateDirectory(src)); 75 ASSERT_TRUE(base::CreateDirectory(src));
76 base::FilePath version_3 = extension_file_util::InstallExtension( 76 base::FilePath version_3 = extension_file_util::InstallExtension(
77 src, 77 src,
78 extension_id, 78 extension_id,
79 version, 79 version,
80 all_extensions); 80 all_extensions);
81 ASSERT_EQ(version_3.value(), 81 ASSERT_EQ(version_3.value(),
82 all_extensions.AppendASCII(extension_id).AppendASCII("1.0_2") 82 all_extensions.AppendASCII(extension_id).AppendASCII("1.0_2")
83 .value()); 83 .value());
84 ASSERT_TRUE(base::DirectoryExists(version_3)); 84 ASSERT_TRUE(base::DirectoryExists(version_3));
85 85
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 install_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error)); 132 install_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error));
133 ASSERT_FALSE(extension.get() == NULL); 133 ASSERT_FALSE(extension.get() == NULL);
134 EXPECT_TRUE(error.empty()); 134 EXPECT_TRUE(error.empty());
135 } 135 }
136 136
137 TEST_F(ExtensionFileUtilTest, CheckIllegalFilenamesNoUnderscores) { 137 TEST_F(ExtensionFileUtilTest, CheckIllegalFilenamesNoUnderscores) {
138 base::ScopedTempDir temp; 138 base::ScopedTempDir temp;
139 ASSERT_TRUE(temp.CreateUniqueTempDir()); 139 ASSERT_TRUE(temp.CreateUniqueTempDir());
140 140
141 base::FilePath src_path = temp.path().AppendASCII("some_dir"); 141 base::FilePath src_path = temp.path().AppendASCII("some_dir");
142 ASSERT_TRUE(file_util::CreateDirectory(src_path)); 142 ASSERT_TRUE(base::CreateDirectory(src_path));
143 143
144 std::string data = "{ \"name\": { \"message\": \"foobar\" } }"; 144 std::string data = "{ \"name\": { \"message\": \"foobar\" } }";
145 ASSERT_TRUE(file_util::WriteFile(src_path.AppendASCII("some_file.txt"), 145 ASSERT_TRUE(file_util::WriteFile(src_path.AppendASCII("some_file.txt"),
146 data.c_str(), data.length())); 146 data.c_str(), data.length()));
147 std::string error; 147 std::string error;
148 EXPECT_TRUE(extension_file_util::CheckForIllegalFilenames(temp.path(), 148 EXPECT_TRUE(extension_file_util::CheckForIllegalFilenames(temp.path(),
149 &error)); 149 &error));
150 } 150 }
151 151
152 TEST_F(ExtensionFileUtilTest, CheckIllegalFilenamesOnlyReserved) { 152 TEST_F(ExtensionFileUtilTest, CheckIllegalFilenamesOnlyReserved) {
153 base::ScopedTempDir temp; 153 base::ScopedTempDir temp;
154 ASSERT_TRUE(temp.CreateUniqueTempDir()); 154 ASSERT_TRUE(temp.CreateUniqueTempDir());
155 155
156 const base::FilePath::CharType* folders[] = 156 const base::FilePath::CharType* folders[] =
157 { extensions::kLocaleFolder, extensions::kPlatformSpecificFolder }; 157 { extensions::kLocaleFolder, extensions::kPlatformSpecificFolder };
158 158
159 for (size_t i = 0; i < arraysize(folders); i++) { 159 for (size_t i = 0; i < arraysize(folders); i++) {
160 base::FilePath src_path = temp.path().Append(folders[i]); 160 base::FilePath src_path = temp.path().Append(folders[i]);
161 ASSERT_TRUE(file_util::CreateDirectory(src_path)); 161 ASSERT_TRUE(base::CreateDirectory(src_path));
162 } 162 }
163 163
164 std::string error; 164 std::string error;
165 EXPECT_TRUE(extension_file_util::CheckForIllegalFilenames(temp.path(), 165 EXPECT_TRUE(extension_file_util::CheckForIllegalFilenames(temp.path(),
166 &error)); 166 &error));
167 } 167 }
168 168
169 TEST_F(ExtensionFileUtilTest, CheckIllegalFilenamesReservedAndIllegal) { 169 TEST_F(ExtensionFileUtilTest, CheckIllegalFilenamesReservedAndIllegal) {
170 base::ScopedTempDir temp; 170 base::ScopedTempDir temp;
171 ASSERT_TRUE(temp.CreateUniqueTempDir()); 171 ASSERT_TRUE(temp.CreateUniqueTempDir());
172 172
173 base::FilePath src_path = temp.path().Append(extensions::kLocaleFolder); 173 base::FilePath src_path = temp.path().Append(extensions::kLocaleFolder);
174 ASSERT_TRUE(file_util::CreateDirectory(src_path)); 174 ASSERT_TRUE(base::CreateDirectory(src_path));
175 175
176 src_path = temp.path().AppendASCII("_some_dir"); 176 src_path = temp.path().AppendASCII("_some_dir");
177 ASSERT_TRUE(file_util::CreateDirectory(src_path)); 177 ASSERT_TRUE(base::CreateDirectory(src_path));
178 178
179 std::string error; 179 std::string error;
180 EXPECT_FALSE(extension_file_util::CheckForIllegalFilenames(temp.path(), 180 EXPECT_FALSE(extension_file_util::CheckForIllegalFilenames(temp.path(),
181 &error)); 181 &error));
182 } 182 }
183 183
184 TEST_F(ExtensionFileUtilTest, 184 TEST_F(ExtensionFileUtilTest,
185 LoadExtensionGivesHelpfullErrorOnMissingManifest) { 185 LoadExtensionGivesHelpfullErrorOnMissingManifest) {
186 base::FilePath install_dir; 186 base::FilePath install_dir;
187 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &install_dir)); 187 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &install_dir));
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 "uOwrmnQYxaMReFV68Z2w9DcLZn07f7/R9Wn72z89CxwJAFsDoNaDes4h48bX7plct\n" 350 "uOwrmnQYxaMReFV68Z2w9DcLZn07f7/R9Wn72z89CxwJAFsDoNaDes4h48bX7plct\n"
351 "s9ACjmTwcCigZjN2K7AGv7ntCLF3DnV5dK0dTHNaAdD3SbY3jl29Rk2CwiURSX6Ee\n" 351 "s9ACjmTwcCigZjN2K7AGv7ntCLF3DnV5dK0dTHNaAdD3SbY3jl29Rk2CwiURSX6Ee\n"
352 "g==\n" 352 "g==\n"
353 "-----END PRIVATE KEY-----\n"; 353 "-----END PRIVATE KEY-----\n";
354 354
355 TEST_F(ExtensionFileUtilTest, FindPrivateKeyFiles) { 355 TEST_F(ExtensionFileUtilTest, FindPrivateKeyFiles) {
356 base::ScopedTempDir temp; 356 base::ScopedTempDir temp;
357 ASSERT_TRUE(temp.CreateUniqueTempDir()); 357 ASSERT_TRUE(temp.CreateUniqueTempDir());
358 358
359 base::FilePath src_path = temp.path().AppendASCII("some_dir"); 359 base::FilePath src_path = temp.path().AppendASCII("some_dir");
360 ASSERT_TRUE(file_util::CreateDirectory(src_path)); 360 ASSERT_TRUE(base::CreateDirectory(src_path));
361 361
362 ASSERT_TRUE(file_util::WriteFile(src_path.AppendASCII("a_key.pem"), 362 ASSERT_TRUE(file_util::WriteFile(src_path.AppendASCII("a_key.pem"),
363 private_key, arraysize(private_key))); 363 private_key, arraysize(private_key)));
364 ASSERT_TRUE(file_util::WriteFile(src_path.AppendASCII("second_key.pem"), 364 ASSERT_TRUE(file_util::WriteFile(src_path.AppendASCII("second_key.pem"),
365 private_key, arraysize(private_key))); 365 private_key, arraysize(private_key)));
366 // Shouldn't find a key with a different extension. 366 // Shouldn't find a key with a different extension.
367 ASSERT_TRUE(file_util::WriteFile(src_path.AppendASCII("key.diff_ext"), 367 ASSERT_TRUE(file_util::WriteFile(src_path.AppendASCII("key.diff_ext"),
368 private_key, arraysize(private_key))); 368 private_key, arraysize(private_key)));
369 // Shouldn't find a key that isn't parsable. 369 // Shouldn't find a key that isn't parsable.
370 ASSERT_TRUE(file_util::WriteFile(src_path.AppendASCII("unparsable_key.pem"), 370 ASSERT_TRUE(file_util::WriteFile(src_path.AppendASCII("unparsable_key.pem"),
371 private_key, arraysize(private_key) - 30)); 371 private_key, arraysize(private_key) - 30));
372 std::vector<base::FilePath> private_keys = 372 std::vector<base::FilePath> private_keys =
373 extension_file_util::FindPrivateKeyFiles(temp.path()); 373 extension_file_util::FindPrivateKeyFiles(temp.path());
374 EXPECT_EQ(2U, private_keys.size()); 374 EXPECT_EQ(2U, private_keys.size());
375 EXPECT_THAT(private_keys, 375 EXPECT_THAT(private_keys,
376 testing::Contains(src_path.AppendASCII("a_key.pem"))); 376 testing::Contains(src_path.AppendASCII("a_key.pem")));
377 EXPECT_THAT(private_keys, 377 EXPECT_THAT(private_keys,
378 testing::Contains(src_path.AppendASCII("second_key.pem"))); 378 testing::Contains(src_path.AppendASCII("second_key.pem")));
379 } 379 }
380 380
381 TEST_F(ExtensionFileUtilTest, WarnOnPrivateKey) { 381 TEST_F(ExtensionFileUtilTest, WarnOnPrivateKey) {
382 base::ScopedTempDir temp; 382 base::ScopedTempDir temp;
383 ASSERT_TRUE(temp.CreateUniqueTempDir()); 383 ASSERT_TRUE(temp.CreateUniqueTempDir());
384 384
385 base::FilePath ext_path = temp.path().AppendASCII("ext_root"); 385 base::FilePath ext_path = temp.path().AppendASCII("ext_root");
386 ASSERT_TRUE(file_util::CreateDirectory(ext_path)); 386 ASSERT_TRUE(base::CreateDirectory(ext_path));
387 387
388 const char manifest[] = 388 const char manifest[] =
389 "{\n" 389 "{\n"
390 " \"name\": \"Test Extension\",\n" 390 " \"name\": \"Test Extension\",\n"
391 " \"version\": \"1.0\",\n" 391 " \"version\": \"1.0\",\n"
392 " \"manifest_version\": 2,\n" 392 " \"manifest_version\": 2,\n"
393 " \"description\": \"The first extension that I made.\"\n" 393 " \"description\": \"The first extension that I made.\"\n"
394 "}\n"; 394 "}\n";
395 ASSERT_TRUE(file_util::WriteFile(ext_path.AppendASCII("manifest.json"), 395 ASSERT_TRUE(file_util::WriteFile(ext_path.AppendASCII("manifest.json"),
396 manifest, strlen(manifest))); 396 manifest, strlen(manifest)));
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 scoped_refptr<Extension> extension3(extension_file_util::LoadExtension( 458 scoped_refptr<Extension> extension3(extension_file_util::LoadExtension(
459 ext_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error)); 459 ext_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error));
460 EXPECT_TRUE(extension3.get() == NULL); 460 EXPECT_TRUE(extension3.get() == NULL);
461 EXPECT_STREQ("Could not load icon 'icon.png' for page action.", 461 EXPECT_STREQ("Could not load icon 'icon.png' for page action.",
462 error.c_str()); 462 error.c_str());
463 } 463 }
464 464
465 // TODO(aa): More tests as motivation allows. Maybe steal some from 465 // TODO(aa): More tests as motivation allows. Maybe steal some from
466 // ExtensionService? Many of them could probably be tested here without the 466 // ExtensionService? Many of them could probably be tested here without the
467 // MessageLoop shenanigans. 467 // MessageLoop shenanigans.
OLDNEW
« no previous file with comments | « chrome/common/extensions/extension_file_util.cc ('k') | chrome/common/extensions/extension_l10n_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698