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

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

Issue 126014: Verify signed .crx extension installations (Closed)
Patch Set: final changes Created 11 years, 6 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
« no previous file with comments | « chrome/common/extensions/extension.cc ('k') | chrome/common/extensions/extension_unpacker.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 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 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 "base/file_path.h" 5 #include "base/file_path.h"
6 #include "base/string_util.h" 6 #include "base/string_util.h"
7 #include "base/path_service.h" 7 #include "base/path_service.h"
8 #include "chrome/common/chrome_paths.h" 8 #include "chrome/common/chrome_paths.h"
9 #include "chrome/common/extensions/extension.h" 9 #include "chrome/common/extensions/extension.h"
10 #include "chrome/common/extensions/extension_error_reporter.h" 10 #include "chrome/common/extensions/extension_error_reporter.h"
(...skipping 25 matching lines...) Expand all
36 JSONFileValueSerializer serializer(extensions_path); 36 JSONFileValueSerializer serializer(extensions_path);
37 scoped_ptr<DictionaryValue> valid_value( 37 scoped_ptr<DictionaryValue> valid_value(
38 static_cast<DictionaryValue*>(serializer.Deserialize(&error))); 38 static_cast<DictionaryValue*>(serializer.Deserialize(&error)));
39 ASSERT_TRUE(valid_value.get()); 39 ASSERT_TRUE(valid_value.get());
40 ASSERT_EQ("", error); 40 ASSERT_EQ("", error);
41 ASSERT_TRUE(extension.InitFromValue(*valid_value, true, &error)); 41 ASSERT_TRUE(extension.InitFromValue(*valid_value, true, &error));
42 ASSERT_EQ("", error); 42 ASSERT_EQ("", error);
43 43
44 scoped_ptr<DictionaryValue> input_value; 44 scoped_ptr<DictionaryValue> input_value;
45 45
46 // Test missing and invalid ids
47 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy()));
48 input_value->Remove(Extension::kIdKey, NULL);
49 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error));
50 EXPECT_EQ(Extension::kInvalidIdError, error);
51
52 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy()));
53 input_value->SetInteger(Extension::kIdKey, 42);
54 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error));
55 EXPECT_EQ(Extension::kInvalidIdError, error);
56
57 // Test missing and invalid versions 46 // Test missing and invalid versions
58 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); 47 input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy()));
59 input_value->Remove(Extension::kVersionKey, NULL); 48 input_value->Remove(Extension::kVersionKey, NULL);
60 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); 49 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error));
61 EXPECT_EQ(Extension::kInvalidVersionError, error); 50 EXPECT_EQ(Extension::kInvalidVersionError, error);
62 51
63 input_value->SetInteger(Extension::kVersionKey, 42); 52 input_value->SetInteger(Extension::kVersionKey, 42);
64 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); 53 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error));
65 EXPECT_EQ(Extension::kInvalidVersionError, error); 54 EXPECT_EQ(Extension::kInvalidVersionError, error);
66 55
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); 186 EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error));
198 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidPermissionSchemeError)); 187 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidPermissionSchemeError));
199 } 188 }
200 189
201 TEST(ExtensionTest, InitFromValueValid) { 190 TEST(ExtensionTest, InitFromValueValid) {
202 #if defined(OS_WIN) 191 #if defined(OS_WIN)
203 FilePath path(FILE_PATH_LITERAL("C:\\foo")); 192 FilePath path(FILE_PATH_LITERAL("C:\\foo"));
204 #elif defined(OS_POSIX) 193 #elif defined(OS_POSIX)
205 FilePath path(FILE_PATH_LITERAL("/foo")); 194 FilePath path(FILE_PATH_LITERAL("/foo"));
206 #endif 195 #endif
196 Extension::ResetGeneratedIdCounter();
197
207 Extension extension(path); 198 Extension extension(path);
208 std::string error; 199 std::string error;
209 DictionaryValue input_value; 200 DictionaryValue input_value;
210 201
211 // Test minimal extension 202 // Test minimal extension
212 input_value.SetString(Extension::kIdKey,
213 "00123456789ABCDEF0123456789ABCDEF0123456");
214 input_value.SetString(Extension::kVersionKey, "1.0.0.0"); 203 input_value.SetString(Extension::kVersionKey, "1.0.0.0");
215 input_value.SetString(Extension::kNameKey, "my extension"); 204 input_value.SetString(Extension::kNameKey, "my extension");
216 205
217 EXPECT_TRUE(extension.InitFromValue(input_value, true, &error)); 206 EXPECT_TRUE(extension.InitFromValue(input_value, false, &error));
218 EXPECT_EQ("", error); 207 EXPECT_EQ("", error);
219 EXPECT_EQ("00123456789abcdef0123456789abcdef0123456", extension.id()); 208 EXPECT_EQ("0000000000000000000000000000000000000000", extension.id());
220 EXPECT_EQ("1.0.0.0", extension.VersionString()); 209 EXPECT_EQ("1.0.0.0", extension.VersionString());
221 EXPECT_EQ("my extension", extension.name()); 210 EXPECT_EQ("my extension", extension.name());
222 EXPECT_EQ("chrome-extension://00123456789abcdef0123456789abcdef0123456/", 211 EXPECT_EQ("chrome-extension://0000000000000000000000000000000000000000/",
223 extension.url().spec()); 212 extension.url().spec());
224 EXPECT_EQ(path.value(), extension.path().value()); 213 EXPECT_EQ(path.value(), extension.path().value());
225 } 214 }
226 215
227 TEST(ExtensionTest, GetResourceURLAndPath) { 216 TEST(ExtensionTest, GetResourceURLAndPath) {
228 #if defined(OS_WIN) 217 #if defined(OS_WIN)
229 FilePath path(FILE_PATH_LITERAL("C:\\foo")); 218 FilePath path(FILE_PATH_LITERAL("C:\\foo"));
230 #elif defined(OS_POSIX) 219 #elif defined(OS_POSIX)
231 FilePath path(FILE_PATH_LITERAL("/foo")); 220 FilePath path(FILE_PATH_LITERAL("/foo"));
232 #endif 221 #endif
233 Extension extension(path); 222 Extension extension(path);
234 DictionaryValue input_value; 223 DictionaryValue input_value;
235 input_value.SetString(Extension::kIdKey,
236 "00123456789ABCDEF0123456789ABCDEF0123456");
237 input_value.SetString(Extension::kVersionKey, "1.0.0.0"); 224 input_value.SetString(Extension::kVersionKey, "1.0.0.0");
238 input_value.SetString(Extension::kNameKey, "my extension"); 225 input_value.SetString(Extension::kNameKey, "my extension");
239 EXPECT_TRUE(extension.InitFromValue(input_value, true, NULL)); 226 EXPECT_TRUE(extension.InitFromValue(input_value, false, NULL));
240 227
241 EXPECT_EQ(extension.url().spec() + "bar/baz.js", 228 EXPECT_EQ(extension.url().spec() + "bar/baz.js",
242 Extension::GetResourceURL(extension.url(), "bar/baz.js").spec()); 229 Extension::GetResourceURL(extension.url(), "bar/baz.js").spec());
243 EXPECT_EQ(extension.url().spec() + "baz.js", 230 EXPECT_EQ(extension.url().spec() + "baz.js",
244 Extension::GetResourceURL(extension.url(), "bar/../baz.js").spec()); 231 Extension::GetResourceURL(extension.url(), "bar/../baz.js").spec());
245 EXPECT_EQ(extension.url().spec() + "baz.js", 232 EXPECT_EQ(extension.url().spec() + "baz.js",
246 Extension::GetResourceURL(extension.url(), "../baz.js").spec()); 233 Extension::GetResourceURL(extension.url(), "../baz.js").spec());
247 234
248 EXPECT_EQ(path.Append(FILE_PATH_LITERAL("bar")) 235 EXPECT_EQ(path.Append(FILE_PATH_LITERAL("bar"))
249 .Append(FILE_PATH_LITERAL("baz.js")).value(), 236 .Append(FILE_PATH_LITERAL("baz.js")).value(),
250 Extension::GetResourcePath(extension.path(), "bar/baz.js").value()); 237 Extension::GetResourcePath(extension.path(), "bar/baz.js").value());
251 EXPECT_EQ(path.Append(FILE_PATH_LITERAL("baz.js")).value(), 238 EXPECT_EQ(path.Append(FILE_PATH_LITERAL("baz.js")).value(),
252 Extension::GetResourcePath(extension.path(), "bar/../baz.js") 239 Extension::GetResourcePath(extension.path(), "bar/../baz.js")
253 .value()); 240 .value());
254 EXPECT_EQ(FilePath().value(), 241 EXPECT_EQ(FilePath().value(),
255 Extension::GetResourcePath(extension.path(), "../baz.js").value()); 242 Extension::GetResourcePath(extension.path(), "../baz.js").value());
256 } 243 }
OLDNEW
« no previous file with comments | « chrome/common/extensions/extension.cc ('k') | chrome/common/extensions/extension_unpacker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698