| Index: chrome/install_static/install_details_unittest.cc
|
| diff --git a/chrome/install_static/install_details_unittest.cc b/chrome/install_static/install_details_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1627028e5ba6664d923c6f675f22e78365191e0a
|
| --- /dev/null
|
| +++ b/chrome/install_static/install_details_unittest.cc
|
| @@ -0,0 +1,151 @@
|
| +// Copyright 2016 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 "chrome/install_static/install_details.h"
|
| +
|
| +#include <string>
|
| +
|
| +#include "base/macros.h"
|
| +#include "chrome/install_static/install_modes.h"
|
| +#include "components/version_info/version_info_values.h"
|
| +#include "testing/gmock/include/gmock/gmock.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +using ::testing::StrEq;
|
| +
|
| +namespace install_static {
|
| +
|
| +class FakeInstallDetails : public InstallDetails {
|
| + public:
|
| + FakeInstallDetails() : InstallDetails(&payload) {
|
| + constants.size = sizeof(constants);
|
| + constants.install_suffix = L"";
|
| + constants.default_channel_name = L"";
|
| + constants.supports_multi_install = true;
|
| + if (kUseGoogleUpdateIntegration) {
|
| + constants.app_guid = L"testguid";
|
| + constants.channel_strategy = ChannelStrategy::FIXED;
|
| + } else {
|
| + constants.app_guid = L"";
|
| + constants.channel_strategy = ChannelStrategy::UNSUPPORTED;
|
| + }
|
| + payload.size = sizeof(payload);
|
| + payload.product_version = product_version.c_str();
|
| + payload.mode = &constants;
|
| + payload.channel = channel.c_str();
|
| + payload.channel_length = channel.length();
|
| + }
|
| +
|
| + void set_product_version(const char* version) {
|
| + product_version.assign(version);
|
| + payload.product_version = product_version.c_str();
|
| + }
|
| +
|
| + void set_payload_size(size_t size) { payload.size = size; }
|
| +
|
| + void set_mode_size(size_t size) { constants.size = size; }
|
| +
|
| + InstallConstants constants = InstallConstants();
|
| + std::wstring channel = std::wstring(L"testchannel");
|
| + std::string product_version = std::string(PRODUCT_VERSION);
|
| + Payload payload = Payload();
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(FakeInstallDetails);
|
| +};
|
| +
|
| +TEST(InstallDetailsTest, GetClientStateKeyPath) {
|
| + FakeInstallDetails details;
|
| + if (kUseGoogleUpdateIntegration) {
|
| + // Single-install.
|
| + EXPECT_THAT(details.GetClientStateKeyPath(false),
|
| + StrEq(L"Software\\Google\\Update\\ClientState\\testguid"));
|
| + EXPECT_THAT(details.GetClientStateKeyPath(true),
|
| + StrEq(L"Software\\Google\\Update\\ClientState\\testguid"));
|
| +
|
| + // Multi-install.
|
| + details.payload.multi_install = true;
|
| + EXPECT_THAT(details.GetClientStateKeyPath(false),
|
| + StrEq(L"Software\\Google\\Update\\ClientState\\testguid"));
|
| + EXPECT_THAT(details.GetClientStateKeyPath(true),
|
| + StrEq(std::wstring(L"Software\\Google\\Update\\ClientState\\")
|
| + .append(kBinariesAppGuid)));
|
| + } else {
|
| + // Single-install.
|
| + EXPECT_THAT(details.GetClientStateKeyPath(false),
|
| + StrEq(std::wstring(L"Software\\").append(kProductPathName)));
|
| + EXPECT_THAT(details.GetClientStateKeyPath(true),
|
| + StrEq(std::wstring(L"Software\\").append(kProductPathName)));
|
| +
|
| + // Multi-install.
|
| + details.payload.multi_install = true;
|
| + EXPECT_THAT(details.GetClientStateKeyPath(false),
|
| + StrEq(std::wstring(L"Software\\").append(kProductPathName)));
|
| + EXPECT_THAT(details.GetClientStateKeyPath(true),
|
| + StrEq(std::wstring(L"Software\\").append(kBinariesPathName)));
|
| + }
|
| +}
|
| +
|
| +TEST(InstallDetailsTest, GetClientStateMediumKeyPath) {
|
| + FakeInstallDetails details;
|
| + if (kUseGoogleUpdateIntegration) {
|
| + // Single-install.
|
| + EXPECT_THAT(
|
| + details.GetClientStateMediumKeyPath(false),
|
| + StrEq(L"Software\\Google\\Update\\ClientStateMedium\\testguid"));
|
| + EXPECT_THAT(
|
| + details.GetClientStateMediumKeyPath(true),
|
| + StrEq(L"Software\\Google\\Update\\ClientStateMedium\\testguid"));
|
| +
|
| + // Multi-install.
|
| + details.payload.multi_install = true;
|
| + EXPECT_THAT(
|
| + details.GetClientStateMediumKeyPath(false),
|
| + StrEq(L"Software\\Google\\Update\\ClientStateMedium\\testguid"));
|
| + EXPECT_THAT(
|
| + details.GetClientStateMediumKeyPath(true),
|
| + StrEq(std::wstring(L"Software\\Google\\Update\\ClientStateMedium\\")
|
| + .append(kBinariesAppGuid)));
|
| + } else {
|
| + // Single-install.
|
| + EXPECT_THAT(details.GetClientStateKeyPath(false),
|
| + StrEq(std::wstring(L"Software\\").append(kProductPathName)));
|
| + EXPECT_THAT(details.GetClientStateKeyPath(true),
|
| + StrEq(std::wstring(L"Software\\").append(kProductPathName)));
|
| +
|
| + // Multi-install.
|
| + details.payload.multi_install = true;
|
| + EXPECT_THAT(details.GetClientStateKeyPath(false),
|
| + StrEq(std::wstring(L"Software\\").append(kProductPathName)));
|
| + EXPECT_THAT(details.GetClientStateKeyPath(true),
|
| + StrEq(std::wstring(L"Software\\").append(kBinariesPathName)));
|
| + }
|
| +}
|
| +
|
| +TEST(InstallDetailsTest, VersionMismatch) {
|
| + // All is well to begin with.
|
| + EXPECT_FALSE(FakeInstallDetails().VersionMismatch());
|
| +
|
| + // Bad product version.
|
| + {
|
| + FakeInstallDetails details;
|
| + details.set_product_version("0.1.2.3");
|
| + EXPECT_TRUE(details.VersionMismatch());
|
| + }
|
| +
|
| + // Bad Payload size.
|
| + {
|
| + FakeInstallDetails details;
|
| + details.set_payload_size(sizeof(InstallDetails::Payload) + 1);
|
| + EXPECT_TRUE(details.VersionMismatch());
|
| + }
|
| +
|
| + // Bad InstallConstants size.
|
| + {
|
| + FakeInstallDetails details;
|
| + details.set_mode_size(sizeof(InstallConstants) + 1);
|
| + EXPECT_TRUE(details.VersionMismatch());
|
| + }
|
| +}
|
| +
|
| +} // namespace install_static
|
|
|