| Index: extensions/browser/verified_contents_unittest.cc
|
| diff --git a/extensions/browser/verified_contents_unittest.cc b/extensions/browser/verified_contents_unittest.cc
|
| index 80f1f813a30f9759ff77ab7e56677ebd33ba600d..865129c1093aac003feecf94b2fad6a13cedbde1 100644
|
| --- a/extensions/browser/verified_contents_unittest.cc
|
| +++ b/extensions/browser/verified_contents_unittest.cc
|
| @@ -19,21 +19,14 @@ namespace extensions {
|
|
|
| namespace {
|
|
|
| -bool Base64UrlStringEquals(std::string input, const std::string* bytes) {
|
| - if (!bytes)
|
| - return false;
|
| - if (!VerifiedContents::FixupBase64Encoding(&input))
|
| - return false;
|
| +std::string DecodeBase64Url(const std::string& encoded) {
|
| + std::string fixed_up_base64 = encoded;
|
| + if (!VerifiedContents::FixupBase64Encoding(&fixed_up_base64))
|
| + return std::string();
|
| std::string decoded;
|
| - if (!base::Base64Decode(input, &decoded))
|
| - return false;
|
| - if (decoded.size() != bytes->size())
|
| - return false;
|
| -
|
| - if (bytes->empty())
|
| - return true;
|
| -
|
| - return decoded == *bytes;
|
| + if (!base::Base64Decode(fixed_up_base64, &decoded))
|
| + return std::string();
|
| + return decoded;
|
| }
|
|
|
| bool GetPublicKey(const base::FilePath& path, std::string* public_key) {
|
| @@ -68,24 +61,69 @@ TEST(VerifiedContents, Simple) {
|
| EXPECT_EQ(contents.extension_id(), "abcdefghijklmnopabcdefghijklmnop");
|
| EXPECT_EQ("1.2.3", contents.version().GetString());
|
|
|
| - EXPECT_TRUE(Base64UrlStringEquals(
|
| - "-vyyIIn7iSCzg7X3ICUI5wZa3tG7w7vyiCckxZdJGfs",
|
| - contents.GetTreeHashRoot(
|
| - base::FilePath::FromUTF8Unsafe("manifest.json"))));
|
| - EXPECT_TRUE(Base64UrlStringEquals(
|
| - "txHiG5KQvNoPOSH5FbQo9Zb5gJ23j3oFB0Ru9DOnziw",
|
| - contents.GetTreeHashRoot(
|
| - base::FilePath::FromUTF8Unsafe("background.js"))));
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("manifest.json"),
|
| + DecodeBase64Url("-vyyIIn7iSCzg7X3ICUI5wZa3tG7w7vyiCckxZdJGfs")));
|
| +
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("background.js"),
|
| + DecodeBase64Url("txHiG5KQvNoPOSH5FbQo9Zb5gJ23j3oFB0Ru9DOnziw")));
|
|
|
| base::FilePath foo_bar_html =
|
| base::FilePath(FILE_PATH_LITERAL("foo")).AppendASCII("bar.html");
|
| EXPECT_FALSE(foo_bar_html.IsAbsolute());
|
| - EXPECT_TRUE(
|
| - Base64UrlStringEquals("L37LFbT_hmtxRL7AfGZN9YTpW6yoz_ZiQ1opLJn1NZU",
|
| - contents.GetTreeHashRoot(foo_bar_html)));
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + foo_bar_html,
|
| + DecodeBase64Url("L37LFbT_hmtxRL7AfGZN9YTpW6yoz_ZiQ1opLJn1NZU")));
|
|
|
| base::FilePath nonexistent = base::FilePath::FromUTF8Unsafe("nonexistent");
|
| - EXPECT_TRUE(contents.GetTreeHashRoot(nonexistent) == NULL);
|
| + EXPECT_FALSE(contents.HasTreeHashRoot(nonexistent));
|
| +
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("lowercase.html"),
|
| + DecodeBase64Url("HpLotLGCmmOdKYvGQmD3OkXMKGs458dbanY4WcfAZI0")));
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("Lowercase.Html"),
|
| + DecodeBase64Url("HpLotLGCmmOdKYvGQmD3OkXMKGs458dbanY4WcfAZI0")));
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("LOWERCASE.HTML"),
|
| + DecodeBase64Url("HpLotLGCmmOdKYvGQmD3OkXMKGs458dbanY4WcfAZI0")));
|
| +
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("ALLCAPS.HTML"),
|
| + DecodeBase64Url("bl-eV8ENowvtw6P14D4X1EP0mlcMoG-_aOx5o9C1364")));
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("AllCaps.Html"),
|
| + DecodeBase64Url("bl-eV8ENowvtw6P14D4X1EP0mlcMoG-_aOx5o9C1364")));
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("allcaps.html"),
|
| + DecodeBase64Url("bl-eV8ENowvtw6P14D4X1EP0mlcMoG-_aOx5o9C1364")));
|
| +
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("MixedCase.Html"),
|
| + DecodeBase64Url("zEAO9FwciigMNy3NtU2XNb-dS5TQMmVNx0T9h7WvXbQ")));
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("MIXEDCASE.HTML"),
|
| + DecodeBase64Url("zEAO9FwciigMNy3NtU2XNb-dS5TQMmVNx0T9h7WvXbQ")));
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("mixedcase.html"),
|
| + DecodeBase64Url("zEAO9FwciigMNy3NtU2XNb-dS5TQMmVNx0T9h7WvXbQ")));
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("mIxedcAse.Html"),
|
| + DecodeBase64Url("zEAO9FwciigMNy3NtU2XNb-dS5TQMmVNx0T9h7WvXbQ")));
|
| +
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("mIxedcAse.Html"),
|
| + DecodeBase64Url("nKRqUcJg1_QZWAeCb4uFd5ouC0McuGavKp8TFDRqBgg")));
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("MIXEDCASE.HTML"),
|
| + DecodeBase64Url("nKRqUcJg1_QZWAeCb4uFd5ouC0McuGavKp8TFDRqBgg")));
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("mixedcase.html"),
|
| + DecodeBase64Url("nKRqUcJg1_QZWAeCb4uFd5ouC0McuGavKp8TFDRqBgg")));
|
| + EXPECT_TRUE(contents.TreeHashRootEquals(
|
| + base::FilePath::FromUTF8Unsafe("MixedCase.Html"),
|
| + DecodeBase64Url("nKRqUcJg1_QZWAeCb4uFd5ouC0McuGavKp8TFDRqBgg")));
|
| }
|
|
|
| } // namespace extensions
|
|
|