| // Copyright 2014 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "components/update_client/update_query_params.h" | 
 | #include "base/strings/stringprintf.h" | 
 | #include "base/system/sys_info.h" | 
 | #include "components/update_client/update_query_params_delegate.h" | 
 | #include "components/version_info/version_info.h" | 
 | #include "testing/gtest/include/gtest/gtest.h" | 
 |  | 
 | using base::StringPrintf; | 
 |  | 
 | namespace update_client { | 
 |  | 
 | namespace { | 
 |  | 
 | bool Contains(const std::string& source, const std::string& target) { | 
 |   return source.find(target) != std::string::npos; | 
 | } | 
 |  | 
 | class TestUpdateQueryParamsDelegate : public UpdateQueryParamsDelegate { | 
 |   std::string GetExtraParams() override { return "&cat=dog"; } | 
 | }; | 
 |  | 
 | }  // namespace | 
 |  | 
 | void TestParams(UpdateQueryParams::ProdId prod_id, bool extra_params) { | 
 |   std::string params = UpdateQueryParams::Get(prod_id); | 
 |  | 
 |   // This doesn't so much test what the values are (since that would be an | 
 |   // almost exact duplication of code with update_query_params.cc, and wouldn't | 
 |   // really test anything) as it is a verification that all the params are | 
 |   // present in the generated string. | 
 |   EXPECT_TRUE( | 
 |       Contains(params, StringPrintf("os=%s", UpdateQueryParams::GetOS()))); | 
 |   EXPECT_TRUE( | 
 |       Contains(params, StringPrintf("arch=%s", UpdateQueryParams::GetArch()))); | 
 |   EXPECT_TRUE(Contains( | 
 |       params, | 
 |       StringPrintf("os_arch=%s", | 
 |                    base::SysInfo().OperatingSystemArchitecture().c_str()))); | 
 |   EXPECT_TRUE(Contains( | 
 |       params, | 
 |       StringPrintf("prod=%s", UpdateQueryParams::GetProdIdString(prod_id)))); | 
 |   if (extra_params) | 
 |     EXPECT_TRUE(Contains(params, "cat=dog")); | 
 | } | 
 |  | 
 | void TestProdVersion() { | 
 |   EXPECT_EQ(version_info::GetVersionNumber(), | 
 |             UpdateQueryParams::GetProdVersion()); | 
 | } | 
 |  | 
 | TEST(UpdateQueryParamsTest, GetParams) { | 
 |   TestProdVersion(); | 
 |  | 
 |   TestParams(UpdateQueryParams::CRX, false); | 
 |   TestParams(UpdateQueryParams::CHROME, false); | 
 |  | 
 |   TestUpdateQueryParamsDelegate delegate; | 
 |   UpdateQueryParams::SetDelegate(&delegate); | 
 |  | 
 |   TestParams(UpdateQueryParams::CRX, true); | 
 |   TestParams(UpdateQueryParams::CHROME, true); | 
 | } | 
 |  | 
 | }  // namespace update_client |