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

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

Issue 151181: Add a few more unit tests for page actions (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 5 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
1 // Copyright (c) 2006-2008 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 "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"
11 #include "chrome/common/json_value_serializer.h" 11 #include "chrome/common/json_value_serializer.h"
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 EXPECT_EQ(path.Append(FILE_PATH_LITERAL("bar")) 236 EXPECT_EQ(path.Append(FILE_PATH_LITERAL("bar"))
237 .Append(FILE_PATH_LITERAL("baz.js")).value(), 237 .Append(FILE_PATH_LITERAL("baz.js")).value(),
238 Extension::GetResourcePath(extension.path(), "bar/baz.js").value()); 238 Extension::GetResourcePath(extension.path(), "bar/baz.js").value());
239 EXPECT_EQ(path.Append(FILE_PATH_LITERAL("baz.js")).value(), 239 EXPECT_EQ(path.Append(FILE_PATH_LITERAL("baz.js")).value(),
240 Extension::GetResourcePath(extension.path(), "bar/../baz.js") 240 Extension::GetResourcePath(extension.path(), "bar/../baz.js")
241 .value()); 241 .value());
242 EXPECT_EQ(FilePath().value(), 242 EXPECT_EQ(FilePath().value(),
243 Extension::GetResourcePath(extension.path(), "../baz.js").value()); 243 Extension::GetResourcePath(extension.path(), "../baz.js").value());
244 } 244 }
245 245
246 TEST(ExtensionTest, LoadPageActionHelper) {
247 Extension extension;
248 std::string error_msg;
249 scoped_ptr<PageAction> page_action;
250 DictionaryValue input;
251
252 // First try with an empty dictionary. We should get nothing back.
253 ASSERT_EQ(NULL, extension.LoadPageActionHelper(&input, 0, &error_msg));
254 ASSERT_STRNE("", error_msg.c_str());
255 error_msg = "";
256
257 // Now setup some values to use in the page action.
258 const std::string id("MyPageActionId");
259 const std::string name("MyPageActionName");
260 FilePath::StringType img1 = FILE_PATH_LITERAL("image1.png");
261 FilePath::StringType img2 = FILE_PATH_LITERAL("image2.png");
262
263 // Add the page_actions dictionary.
264 input.SetString(Extension::kPageActionIdKey, id);
265 input.SetString(Extension::kNameKey, name);
266 ListValue* icons = new ListValue;
267 icons->Set(0, Value::CreateStringValue(img1));
268 icons->Set(1, Value::CreateStringValue(img2));
269 input.Set(Extension::kIconPathsKey, icons);
270
271 // Parse the page action and read back the values from the object.
272 page_action.reset(extension.LoadPageActionHelper(&input, 0, &error_msg));
273 ASSERT_TRUE(NULL != page_action.get());
274 ASSERT_STREQ("", error_msg.c_str());
275 ASSERT_STREQ(id.c_str(), page_action->id().c_str());
276 ASSERT_STREQ(name.c_str(), page_action->name().c_str());
277 ASSERT_EQ(static_cast<size_t>(2), page_action->icon_paths().size());
rafaelw 2009/07/02 20:28:09 2u works as well. It's what extensions_service_uni
278 ASSERT_STREQ(img1.c_str(), page_action->icon_paths()[0].value().c_str());
279 ASSERT_STREQ(img2.c_str(), page_action->icon_paths()[1].value().c_str());
280 // Type hasn't been set, but it defaults to PERMANENT.
281 ASSERT_EQ(PageAction::PERMANENT, page_action->type());
282
283 // Explicitly set the same type and parse again.
284 input.SetString(Extension::kTypeKey, Extension::kPageActionTypePermanent);
285 page_action.reset(extension.LoadPageActionHelper(&input, 0, &error_msg));
286 ASSERT_TRUE(NULL != page_action.get());
287 ASSERT_STREQ("", error_msg.c_str());
288 ASSERT_EQ(PageAction::PERMANENT, page_action->type());
289
290 // Explicitly set the TAB type and parse again.
291 input.SetString(Extension::kTypeKey, Extension::kPageActionTypeTab);
292 page_action.reset(extension.LoadPageActionHelper(&input, 0, &error_msg));
293 ASSERT_TRUE(NULL != page_action.get());
294 ASSERT_STREQ("", error_msg.c_str());
295 ASSERT_EQ(PageAction::TAB, page_action->type());
296
297 // Make a deep copy of the input and remove one key at a time and see if we
298 // get the right error.
299 scoped_ptr<DictionaryValue> copy;
300
301 // First remove id key.
302 copy.reset(static_cast<DictionaryValue*>(input.DeepCopy()));
303 copy->Remove(Extension::kPageActionIdKey, NULL);
304 page_action.reset(extension.LoadPageActionHelper(copy.get(), 0, &error_msg));
305 ASSERT_TRUE(NULL == page_action.get());
306 ASSERT_TRUE(MatchPattern(error_msg.c_str(),
307 Extension::kInvalidPageActionIdError));
308
309 // Then remove the name key.
310 copy.reset(static_cast<DictionaryValue*>(input.DeepCopy()));
311 copy->Remove(Extension::kNameKey, NULL);
312 page_action.reset(extension.LoadPageActionHelper(copy.get(), 0, &error_msg));
313 ASSERT_TRUE(NULL == page_action.get());
314 ASSERT_TRUE(MatchPattern(error_msg.c_str(),
315 Extension::kInvalidNameError));
316
317 // Then remove the icon paths key.
318 copy.reset(static_cast<DictionaryValue*>(input.DeepCopy()));
319 copy->Remove(Extension::kIconPathsKey, NULL);
320 page_action.reset(extension.LoadPageActionHelper(copy.get(), 0, &error_msg));
321 ASSERT_TRUE(NULL == page_action.get());
322 ASSERT_TRUE(MatchPattern(error_msg.c_str(),
323 Extension::kInvalidPageActionIconPathsError));
324
325 // Then set the type to something bogus.
326 copy.reset(static_cast<DictionaryValue*>(input.DeepCopy()));
327 copy->SetString(Extension::kTypeKey, "something_bogus");
328 page_action.reset(extension.LoadPageActionHelper(copy.get(), 0, &error_msg));
329 ASSERT_TRUE(NULL == page_action.get());
330 ASSERT_TRUE(MatchPattern(error_msg.c_str(),
331 Extension::kInvalidPageActionTypeValueError));
332 }
333
246 TEST(ExtensionTest, IdIsValid) { 334 TEST(ExtensionTest, IdIsValid) {
247 EXPECT_TRUE(Extension::IdIsValid("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")); 335 EXPECT_TRUE(Extension::IdIsValid("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
248 EXPECT_TRUE(Extension::IdIsValid("pppppppppppppppppppppppppppppppp")); 336 EXPECT_TRUE(Extension::IdIsValid("pppppppppppppppppppppppppppppppp"));
249 EXPECT_TRUE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmnop")); 337 EXPECT_TRUE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmnop"));
250 EXPECT_TRUE(Extension::IdIsValid("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP")); 338 EXPECT_TRUE(Extension::IdIsValid("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP"));
251 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmno")); 339 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmno"));
252 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmnopa")); 340 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmnopa"));
253 EXPECT_FALSE(Extension::IdIsValid("0123456789abcdef0123456789abcdef")); 341 EXPECT_FALSE(Extension::IdIsValid("0123456789abcdef0123456789abcdef"));
254 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmnoq")); 342 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmnoq"));
255 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmno0")); 343 EXPECT_FALSE(Extension::IdIsValid("abcdefghijklmnopabcdefghijklmno0"));
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 Extension extension; 402 Extension extension;
315 std::string error; 403 std::string error;
316 input_value.SetString(Extension::kVersionKey, "1.0"); 404 input_value.SetString(Extension::kVersionKey, "1.0");
317 input_value.SetString(Extension::kNameKey, "Test"); 405 input_value.SetString(Extension::kNameKey, "Test");
318 input_value.SetString(Extension::kUpdateURLKey, invalid[i]); 406 input_value.SetString(Extension::kUpdateURLKey, invalid[i]);
319 407
320 EXPECT_FALSE(extension.InitFromValue(input_value, false, &error)); 408 EXPECT_FALSE(extension.InitFromValue(input_value, false, &error));
321 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidUpdateURLError)); 409 EXPECT_TRUE(MatchPattern(error, Extension::kInvalidUpdateURLError));
322 } 410 }
323 } 411 }
324
OLDNEW
« no previous file with comments | « chrome/common/extensions/extension.h ('k') | chrome/renderer/extensions/extension_api_client_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698