blob: 972f9e45120bae044ba19cc58a6f4ef8d97001a2 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/updater/external_constants_override.h"
#include <utility>
#include <vector>
#include "base/memory/scoped_refptr.h"
#include "base/time/time.h"
#include "base/values.h"
#include "chrome/updater/constants.h"
#include "chrome/updater/external_constants.h"
#include "chrome/updater/external_constants_default.h"
#include "chrome/updater/updater_branding.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
namespace updater {
class ExternalConstantsOverriderTest : public ::testing::Test {};
TEST_F(ExternalConstantsOverriderTest, TestEmptyDictValue) {
auto overrider = base::MakeRefCounted<ExternalConstantsOverrider>(
base::Value::Dict(), CreateDefaultExternalConstants());
EXPECT_TRUE(overrider->UseCUP());
std::vector<GURL> urls = overrider->UpdateURL();
ASSERT_EQ(urls.size(), 1ul);
EXPECT_EQ(urls[0], GURL(UPDATE_CHECK_URL));
EXPECT_TRUE(urls[0].is_valid());
EXPECT_EQ(overrider->CrashUploadURL(), GURL(CRASH_UPLOAD_URL));
EXPECT_TRUE(overrider->CrashUploadURL().is_valid());
EXPECT_EQ(overrider->AppLogoURL(), GURL(APP_LOGO_URL));
EXPECT_TRUE(overrider->AppLogoURL().is_valid());
EXPECT_EQ(overrider->InitialDelay(), kInitialDelay);
EXPECT_EQ(overrider->ServerKeepAliveTime(), kServerKeepAliveTime);
EXPECT_EQ(overrider->DictPolicies().size(), 0U);
EXPECT_EQ(overrider->CecaConnectionTimeout(), kCecaConnectionTimeout);
}
TEST_F(ExternalConstantsOverriderTest, TestFullOverrides) {
base::Value::Dict overrides;
base::Value::List url_list;
url_list.Append("https://localhost/1/www");
url_list.Append("https://localhost/2/www");
base::Value::Dict dict_policies;
dict_policies.Set("a", 1);
dict_policies.Set("b", 2);
overrides.Set(kDevOverrideKeyUseCUP, false);
overrides.Set(kDevOverrideKeyUrl, std::move(url_list));
overrides.Set(kDevOverrideKeyCrashUploadUrl,
"https://localhost/2/crash_test");
overrides.Set(kDevOverrideKeyAppLogoUrl, "https://localhost/2/applogo/");
overrides.Set(kDevOverrideKeyInitialDelay, 137.1);
overrides.Set(kDevOverrideKeyServerKeepAliveSeconds, 1);
overrides.Set(kDevOverrideKeyDictPolicies, std::move(dict_policies));
overrides.Set(kDevOverrideKeyOverinstallTimeout, 3);
overrides.Set(kDevOverrideKeyIdleCheckPeriodSeconds, 4);
overrides.Set(kDevOverrideKeyCecaConnectionTimeout, 27);
auto overrider = base::MakeRefCounted<ExternalConstantsOverrider>(
std::move(overrides), CreateDefaultExternalConstants());
EXPECT_FALSE(overrider->UseCUP());
std::vector<GURL> urls = overrider->UpdateURL();
ASSERT_EQ(urls.size(), 2ul);
EXPECT_EQ(urls[0], GURL("https://localhost/1/www"));
EXPECT_TRUE(urls[0].is_valid());
EXPECT_EQ(urls[1], GURL("https://localhost/2/www"));
EXPECT_TRUE(urls[1].is_valid());
EXPECT_EQ(overrider->CrashUploadURL(),
GURL("https://localhost/2/crash_test"));
EXPECT_TRUE(overrider->CrashUploadURL().is_valid());
EXPECT_EQ(overrider->AppLogoURL(), GURL("https://localhost/2/applogo/"));
EXPECT_TRUE(overrider->AppLogoURL().is_valid());
EXPECT_EQ(overrider->InitialDelay(), base::Seconds(137.1));
EXPECT_EQ(overrider->ServerKeepAliveTime(), base::Seconds(1));
EXPECT_EQ(overrider->DictPolicies().size(), 2U);
EXPECT_EQ(overrider->OverinstallTimeout(), base::Seconds(3));
EXPECT_EQ(overrider->IdleCheckPeriod(), base::Seconds(4));
EXPECT_EQ(overrider->CecaConnectionTimeout(), base::Seconds(27));
}
TEST_F(ExternalConstantsOverriderTest, TestOverrideUnwrappedURL) {
base::Value::Dict overrides;
overrides.Set(kDevOverrideKeyUrl, "https://localhost/1/www");
auto overrider = base::MakeRefCounted<ExternalConstantsOverrider>(
std::move(overrides), CreateDefaultExternalConstants());
std::vector<GURL> urls = overrider->UpdateURL();
ASSERT_EQ(urls.size(), 1ul);
EXPECT_EQ(urls[0], GURL("https://localhost/1/www"));
EXPECT_TRUE(urls[0].is_valid());
// Non-overridden items should fall back to defaults
EXPECT_TRUE(overrider->UseCUP());
EXPECT_EQ(overrider->InitialDelay(), kInitialDelay);
EXPECT_EQ(overrider->ServerKeepAliveTime(), kServerKeepAliveTime);
EXPECT_EQ(overrider->DictPolicies().size(), 0U);
EXPECT_EQ(overrider->CecaConnectionTimeout(), kCecaConnectionTimeout);
}
} // namespace updater