Chromium Code Reviews| Index: chrome/browser/extensions/updater/extension_updater_unittest.cc |
| diff --git a/chrome/browser/extensions/updater/extension_updater_unittest.cc b/chrome/browser/extensions/updater/extension_updater_unittest.cc |
| index 1bd8576199c68d59fd031b892138ddf96dcb65b8..19b6ab9bbc7824d57256d417fef6927e5210995a 100644 |
| --- a/chrome/browser/extensions/updater/extension_updater_unittest.cc |
| +++ b/chrome/browser/extensions/updater/extension_updater_unittest.cc |
| @@ -45,6 +45,7 @@ |
| #include "chrome/common/extensions/extension_manifest_constants.h" |
| #include "chrome/common/extensions/manifest_handler.h" |
| #include "chrome/common/extensions/manifest_url_handler.h" |
| +#include "chrome/common/omaha_query_params.h" |
| #include "chrome/common/pref_names.h" |
| #include "chrome/test/base/testing_profile.h" |
| #include "content/public/browser/notification_details.h" |
| @@ -443,6 +444,32 @@ static void ExtractParameters(const std::string& params, |
| } |
| } |
| +static void VerifyQueryAndExtractParameters( |
| + const std::string& query, |
| + std::map<std::string, std::string>* result) { |
| + std::map<std::string, std::string> params; |
| + ExtractParameters(query, ¶ms); |
| + |
| +#if defined(GOOGLE_CHROME_BUILD) |
| + std::string prod = "chromecrx"; |
| +#else |
| + std::string prod = "chromiumcrx"; |
| +#endif |
| + std::string omaha_params = chrome::GetOmahaQueryParams(prod); |
| + std::map<std::string, std::string> expected; |
| + ExtractParameters(omaha_params, &expected); |
| + |
| + for (std::map<std::string, std::string>::iterator it = expected.begin(); |
| + it != expected.end(); ++it) { |
| + EXPECT_EQ(it->second, params[it->first]); |
| + } |
| + |
| + EXPECT_NE(params.find("x"), params.end()); |
| + std::string decoded = net::UnescapeURLComponent( |
| + params["x"], net::UnescapeRule::URL_SPECIAL_CHARS); |
| + ExtractParameters(decoded, result); |
| +} |
| + |
| // All of our tests that need to use private APIs of ExtensionUpdater live |
| // inside this class (which is a friend to ExtensionUpdater). |
| class ExtensionUpdaterTest : public testing::Test { |
| @@ -554,16 +581,10 @@ class ExtensionUpdaterTest : public testing::Test { |
| EXPECT_EQ("/bar", url.path()); |
| // Validate the extension request parameters in the query. It should |
| - // look something like "?x=id%3D<id>%26v%3D<version>%26uc". |
| + // look something like "x=id%3D<id>%26v%3D<version>%26uc". |
| EXPECT_TRUE(url.has_query()); |
| - std::vector<std::string> parts; |
| - base::SplitString(url.query(), '=', &parts); |
| - EXPECT_EQ(2u, parts.size()); |
| - EXPECT_EQ("x", parts[0]); |
| - std::string decoded = net::UnescapeURLComponent( |
| - parts[1], net::UnescapeRule::URL_SPECIAL_CHARS); |
| std::map<std::string, std::string> params; |
| - ExtractParameters(decoded, ¶ms); |
| + VerifyQueryAndExtractParameters(url.query(), ¶ms); |
| if (pending) { |
| EXPECT_TRUE(pending_extension_manager->IsIdPending(params["id"])); |
| EXPECT_EQ("0.0.0.0", params["v"]); |
| @@ -603,16 +624,10 @@ class ExtensionUpdaterTest : public testing::Test { |
| EXPECT_EQ("/service/update2/crx", url.path()); |
| // Validate the extension request parameters in the query. It should |
| - // look something like "?x=id%3D<id>%26v%3D<version>%26uc". |
| + // look something like "x=id%3D<id>%26v%3D<version>%26uc". |
| EXPECT_TRUE(url.has_query()); |
| - std::vector<std::string> parts; |
| - base::SplitString(url.query(), '=', &parts); |
| - EXPECT_EQ(2u, parts.size()); |
| - EXPECT_EQ("x", parts[0]); |
| - std::string decoded = net::UnescapeURLComponent( |
| - parts[1], net::UnescapeRule::URL_SPECIAL_CHARS); |
| std::map<std::string, std::string> params; |
| - ExtractParameters(decoded, ¶ms); |
| + VerifyQueryAndExtractParameters(url.query(), ¶ms); |
| EXPECT_EQ("com.google.crx.blacklist", params["id"]); |
| EXPECT_EQ("0", params["v"]); |
| EXPECT_EQ("", params["uc"]); |
| @@ -627,9 +642,12 @@ class ExtensionUpdaterTest : public testing::Test { |
| // option to appear in the x= parameter. |
| ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0); |
| fetch_data.AddExtension(id, version, &kNeverPingedData, "", ""); |
| - EXPECT_EQ("http://localhost/foo\?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |
| - "%26v%3D1.0%26uc", |
| - fetch_data.full_url().spec()); |
| + |
| + std::map<std::string, std::string> params; |
| + VerifyQueryAndExtractParameters(fetch_data.full_url().query(), ¶ms); |
| + EXPECT_EQ(id, params["id"]); |
| + EXPECT_EQ(version, params["v"]); |
| + EXPECT_EQ(params.end(), params.find("ap")); |
|
asargent_no_longer_on_chrome
2013/03/06 00:45:06
nice cleanup - this is much more readable!
|
| } |
| void TestUpdateUrlDataSimple() { |
| @@ -640,9 +658,11 @@ class ExtensionUpdaterTest : public testing::Test { |
| // option to appear in the x= parameter. |
| ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0); |
| fetch_data.AddExtension(id, version, &kNeverPingedData, "bar", ""); |
| - EXPECT_EQ("http://localhost/foo\?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |
| - "%26v%3D1.0%26uc%26ap%3Dbar", |
| - fetch_data.full_url().spec()); |
| + std::map<std::string, std::string> params; |
| + VerifyQueryAndExtractParameters(fetch_data.full_url().query(), ¶ms); |
| + EXPECT_EQ(id, params["id"]); |
| + EXPECT_EQ(version, params["v"]); |
| + EXPECT_EQ("bar", params["ap"]); |
| } |
| void TestUpdateUrlDataCompound() { |
| @@ -653,9 +673,11 @@ class ExtensionUpdaterTest : public testing::Test { |
| // option to appear in the x= parameter. |
| ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0); |
| fetch_data.AddExtension(id, version, &kNeverPingedData, "a=1&b=2&c", ""); |
| - EXPECT_EQ("http://localhost/foo\?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |
| - "%26v%3D1.0%26uc%26ap%3Da%253D1%2526b%253D2%2526c", |
| - fetch_data.full_url().spec()); |
| + std::map<std::string, std::string> params; |
| + VerifyQueryAndExtractParameters(fetch_data.full_url().query(), ¶ms); |
| + EXPECT_EQ(id, params["id"]); |
| + EXPECT_EQ(version, params["v"]); |
| + EXPECT_EQ("a%3D1%26b%3D2%26c", params["ap"]); |
| } |
| void TestUpdateUrlDataFromGallery(const std::string& gallery_url) { |
| @@ -695,9 +717,11 @@ class ExtensionUpdaterTest : public testing::Test { |
| ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0); |
| fetch_data.AddExtension(id, version, &kNeverPingedData, |
| kEmptyUpdateUrlData, install_source); |
| - EXPECT_EQ("http://localhost/foo\?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |
| - "%26v%3D1.0%26installsource%3Dinstally%26uc", |
| - fetch_data.full_url().spec()); |
| + std::map<std::string, std::string> params; |
| + VerifyQueryAndExtractParameters(fetch_data.full_url().query(), ¶ms); |
| + EXPECT_EQ(id, params["id"]); |
| + EXPECT_EQ(version, params["v"]); |
| + EXPECT_EQ(install_source, params["installsource"]); |
| } |
| void TestDetermineUpdates() { |