| Index: components/data_reduction_proxy/browser/data_reduction_proxy_params_unittest.cc
|
| diff --git a/components/data_reduction_proxy/browser/data_reduction_proxy_params_unittest.cc b/components/data_reduction_proxy/browser/data_reduction_proxy_params_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..37cb3bb2b6e306f5058000ea8e258bda7d89a9b5
|
| --- /dev/null
|
| +++ b/components/data_reduction_proxy/browser/data_reduction_proxy_params_unittest.cc
|
| @@ -0,0 +1,295 @@
|
| +// 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/data_reduction_proxy/browser/data_reduction_proxy_params.h"
|
| +
|
| +#include "base/command_line.h"
|
| +#include "base/logging.h"
|
| +#include "components/data_reduction_proxy/common/data_reduction_proxy_switches.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace {
|
| +// Test values to replacethe values specified in preprocessor defines.
|
| +static const char kDefaultKey[] = "test-key";
|
| +static const char kDefaultDevOrigin[] = "https://dev.net:443/";
|
| +static const char kDefaultOrigin[] = "https://origin.net:443/";
|
| +static const char kDefaultFallbackOrigin[] = "http://fallback.net:80/";
|
| +static const char kDefaultSSLOrigin[] = "http://ssl.net:1080/";
|
| +static const char kDefaultAltOrigin[] = "https://alt.net:443/";
|
| +static const char kDefaultAltFallbackOrigin[] = "http://altfallback.net:80/";
|
| +static const char kDefaultProbeURL[] = "http://probe.net/";
|
| +
|
| +static const char kFlagKey[] = "test-flag-key";
|
| +static const char kFlagOrigin[] = "https://origin.org:443/";
|
| +static const char kFlagFallbackOrigin[] = "http://fallback.org:80/";
|
| +static const char kFlagSSLOrigin[] = "http://ssl.org:1080/";
|
| +static const char kFlagAltOrigin[] = "https://alt.org:443/";
|
| +static const char kFlagAltFallbackOrigin[] = "http://altfallback.org:80/";
|
| +static const char kFlagProbeURL[] = "http://probe.org/";
|
| +
|
| +// Used to emulate having constants defined by the preprocessor.
|
| +static const unsigned int HAS_NOTHING = 0x0;
|
| +static const unsigned int HAS_KEY = 0x1;
|
| +static const unsigned int HAS_DEV_ORIGIN = 0x2;
|
| +static const unsigned int HAS_ORIGIN = 0x4;
|
| +static const unsigned int HAS_FALLBACK_ORIGIN = 0x8;
|
| +static const unsigned int HAS_SSL_ORIGIN = 0x10;
|
| +static const unsigned int HAS_ALT_ORIGIN = 0x20;
|
| +static const unsigned int HAS_ALT_FALLBACK_ORIGIN = 0x40;
|
| +static const unsigned int HAS_PROBE_URL = 0x80;
|
| +static const unsigned int HAS_EVERYTHING = 0xff;
|
| +} // namespace
|
| +
|
| +namespace data_reduction_proxy {
|
| +class TestDataReductionProxyParams : public DataReductionProxyParams {
|
| + public:
|
| +
|
| + TestDataReductionProxyParams(int flags,
|
| + unsigned int has_definitions)
|
| + : DataReductionProxyParams(flags,
|
| + false),
|
| + has_definitions_(has_definitions) {
|
| + init_result_ = Init(flags & DataReductionProxyParams::kAllowed,
|
| + flags & DataReductionProxyParams::kFallbackAllowed,
|
| + flags & DataReductionProxyParams::kAlternativeAllowed);
|
| + }
|
| +
|
| + bool init_result() const {
|
| + return init_result_;
|
| + }
|
| +
|
| + protected:
|
| + virtual std::string GetDefaultKey() const OVERRIDE {
|
| + return GetDefinition(HAS_KEY, kDefaultKey);
|
| + }
|
| +
|
| + virtual std::string GetDefaultDevOrigin() const OVERRIDE {
|
| + return GetDefinition(HAS_DEV_ORIGIN, kDefaultDevOrigin);
|
| + }
|
| +
|
| + virtual std::string GetDefaultOrigin() const OVERRIDE {
|
| + return GetDefinition(HAS_ORIGIN, kDefaultOrigin);
|
| + }
|
| +
|
| + virtual std::string GetDefaultFallbackOrigin() const OVERRIDE {
|
| + return GetDefinition(HAS_FALLBACK_ORIGIN, kDefaultFallbackOrigin);
|
| + }
|
| +
|
| + virtual std::string GetDefaultSSLOrigin() const OVERRIDE {
|
| + return GetDefinition(HAS_SSL_ORIGIN, kDefaultSSLOrigin);
|
| + }
|
| +
|
| + virtual std::string GetDefaultAltOrigin() const OVERRIDE {
|
| + return GetDefinition(HAS_ALT_ORIGIN, kDefaultAltOrigin);
|
| + }
|
| +
|
| + virtual std::string GetDefaultAltFallbackOrigin() const OVERRIDE {
|
| + return GetDefinition(HAS_ALT_FALLBACK_ORIGIN, kDefaultAltFallbackOrigin);
|
| + }
|
| +
|
| + virtual std::string GetDefaultProbeURL() const OVERRIDE {
|
| + return GetDefinition(HAS_PROBE_URL, kDefaultProbeURL);
|
| + }
|
| +
|
| + private:
|
| + std::string GetDefinition(unsigned int has_def,
|
| + const std::string& definition) const {
|
| + return ((has_definitions_ & has_def) ? definition : std::string());
|
| + }
|
| +
|
| + unsigned int has_definitions_;
|
| + bool init_result_;
|
| +};
|
| +
|
| +class DataReductionProxyParamsTest : public testing::Test {
|
| + public:
|
| + void CheckParams(const TestDataReductionProxyParams& params,
|
| + bool expected_init_result,
|
| + bool expected_allowed,
|
| + bool expected_fallback_allowed,
|
| + bool expected_alternative_allowed,
|
| + bool expected_promo_allowed) {
|
| + EXPECT_EQ(expected_init_result, params.init_result());
|
| + EXPECT_EQ(expected_allowed, params.allowed());
|
| + EXPECT_EQ(expected_fallback_allowed, params.fallback_allowed());
|
| + EXPECT_EQ(expected_alternative_allowed, params.alternative_allowed());
|
| + EXPECT_EQ(expected_promo_allowed, params.promo_allowed());
|
| + }
|
| + void CheckValues(const TestDataReductionProxyParams& params,
|
| + const std::string expected_key,
|
| + const std::string& expected_origin,
|
| + const std::string& expected_fallback_origin,
|
| + const std::string& expected_ssl_origin,
|
| + const std::string& expected_alt_origin,
|
| + const std::string& expected_alt_fallback_origin,
|
| + const std::string& expected_probe_url) {
|
| + EXPECT_EQ(expected_key, params.key());
|
| + EXPECT_EQ(GURL(expected_origin), params.origin());
|
| + EXPECT_EQ(GURL(expected_fallback_origin), params.fallback_origin());
|
| + EXPECT_EQ(GURL(expected_ssl_origin), params.ssl_origin());
|
| + EXPECT_EQ(GURL(expected_alt_origin), params.alt_origin());
|
| + EXPECT_EQ(GURL(expected_alt_fallback_origin), params.alt_fallback_origin());
|
| + EXPECT_EQ(GURL(expected_probe_url), params.probe_url());
|
| + }
|
| +};
|
| +
|
| +TEST_F(DataReductionProxyParamsTest, EverythingDefined) {
|
| + TestDataReductionProxyParams params(
|
| + DataReductionProxyParams::kAllowed |
|
| + DataReductionProxyParams::kFallbackAllowed |
|
| + DataReductionProxyParams::kPromoAllowed, HAS_EVERYTHING);
|
| + CheckParams(params, true, true, true, false, true);
|
| + CheckValues(params,
|
| + kDefaultKey,
|
| + kDefaultDevOrigin,
|
| + kDefaultFallbackOrigin,
|
| + kDefaultSSLOrigin,
|
| + kDefaultAltOrigin,
|
| + kDefaultAltFallbackOrigin,
|
| + kDefaultProbeURL);
|
| +}
|
| +
|
| +TEST_F(DataReductionProxyParamsTest, NoDevOrigin) {
|
| + TestDataReductionProxyParams params(
|
| + DataReductionProxyParams::kAllowed |
|
| + DataReductionProxyParams::kFallbackAllowed |
|
| + DataReductionProxyParams::kPromoAllowed,
|
| + HAS_EVERYTHING & ~HAS_DEV_ORIGIN);
|
| + CheckParams(params, true, true, true, false, true);
|
| + CheckValues(params,
|
| + kDefaultKey,
|
| + kDefaultOrigin,
|
| + kDefaultFallbackOrigin,
|
| + kDefaultSSLOrigin,
|
| + kDefaultAltOrigin,
|
| + kDefaultAltFallbackOrigin,
|
| + kDefaultProbeURL);
|
| +}
|
| +
|
| +TEST_F(DataReductionProxyParamsTest, Flags) {
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionProxyKey, kFlagKey);
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionProxy, kFlagOrigin);
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionProxyFallback, kFlagFallbackOrigin);
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionSSLProxy, kFlagSSLOrigin);
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionProxyAlt, kFlagAltOrigin);
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionProxyAltFallback, kFlagAltFallbackOrigin);
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionProxyProbeURL, kFlagProbeURL);
|
| + TestDataReductionProxyParams params(
|
| + DataReductionProxyParams::kAllowed |
|
| + DataReductionProxyParams::kFallbackAllowed |
|
| + DataReductionProxyParams::kAlternativeAllowed |
|
| + DataReductionProxyParams::kPromoAllowed, HAS_EVERYTHING);
|
| + CheckParams(params, true, true, true, true, true);
|
| + CheckValues(params,
|
| + kFlagKey,
|
| + kFlagOrigin,
|
| + kFlagFallbackOrigin,
|
| + kFlagSSLOrigin,
|
| + kFlagAltOrigin,
|
| + kFlagAltFallbackOrigin,
|
| + kFlagProbeURL);
|
| +}
|
| +
|
| +TEST_F(DataReductionProxyParamsTest, FlagsNoKey) {
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionProxy, kFlagOrigin);
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionProxyFallback, kFlagFallbackOrigin);
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionSSLProxy, kFlagSSLOrigin);
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionProxyAlt, kFlagAltOrigin);
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionProxyAltFallback, kFlagAltFallbackOrigin);
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionProxyProbeURL, kFlagProbeURL);
|
| + TestDataReductionProxyParams params(
|
| + DataReductionProxyParams::kAllowed |
|
| + DataReductionProxyParams::kFallbackAllowed |
|
| + DataReductionProxyParams::kAlternativeAllowed |
|
| + DataReductionProxyParams::kPromoAllowed, HAS_EVERYTHING);
|
| + EXPECT_FALSE(params.init_result());
|
| +}
|
| +
|
| +TEST_F(DataReductionProxyParamsTest, InvalidConfigurations) {
|
| + const struct {
|
| + bool allowed;
|
| + bool fallback_allowed;
|
| + bool alternative_allowed;
|
| + bool promo_allowed;
|
| + unsigned int missing_definitions;
|
| + bool expected_result;
|
| + } tests[] = {
|
| + { true, true, true, true, HAS_NOTHING, true },
|
| + { true, true, true, true, HAS_KEY, false },
|
| + { true, true, true, true, HAS_DEV_ORIGIN, true },
|
| + { true, true, true, true, HAS_ORIGIN, true },
|
| + { true, true, true, true, HAS_ORIGIN | HAS_DEV_ORIGIN, false },
|
| + { true, true, true, true, HAS_FALLBACK_ORIGIN, false },
|
| + { true, true, true, true, HAS_SSL_ORIGIN, false },
|
| + { true, true, true, true, HAS_ALT_ORIGIN, false },
|
| + { true, true, true, true, HAS_ALT_FALLBACK_ORIGIN, false },
|
| + { true, true, true, true, HAS_PROBE_URL, false },
|
| +
|
| + { true, false, true, true, HAS_NOTHING, true },
|
| + { true, false, true, true, HAS_KEY, false },
|
| + { true, false, true, true, HAS_ORIGIN | HAS_DEV_ORIGIN, false },
|
| + { true, false, true, true, HAS_FALLBACK_ORIGIN, true },
|
| + { true, false, true, true, HAS_SSL_ORIGIN, false },
|
| + { true, false, true, true, HAS_ALT_ORIGIN, false },
|
| + { true, false, true, true, HAS_ALT_FALLBACK_ORIGIN, true },
|
| + { true, false, true, true, HAS_PROBE_URL, false },
|
| +
|
| + { true, true, false, true, HAS_NOTHING, true },
|
| + { true, true, false, true, HAS_KEY, false },
|
| + { true, true, false, true, HAS_ORIGIN | HAS_DEV_ORIGIN, false },
|
| + { true, true, false, true, HAS_FALLBACK_ORIGIN, false },
|
| + { true, true, false, true, HAS_SSL_ORIGIN, true },
|
| + { true, true, false, true, HAS_ALT_ORIGIN, true },
|
| + { true, true, false, true, HAS_ALT_FALLBACK_ORIGIN, true },
|
| + { true, true, false, true, HAS_PROBE_URL, false },
|
| +
|
| + { true, false, false, true, HAS_KEY, false },
|
| + { true, false, false, true, HAS_ORIGIN | HAS_DEV_ORIGIN, false },
|
| + { true, false, false, true, HAS_FALLBACK_ORIGIN, true },
|
| + { true, false, false, true, HAS_SSL_ORIGIN, true },
|
| + { true, false, false, true, HAS_ALT_ORIGIN, true },
|
| + { true, false, false, true, HAS_ALT_FALLBACK_ORIGIN, true },
|
| + { true, false, false, true, HAS_PROBE_URL, false },
|
| +
|
| + { false, true, true, true, HAS_NOTHING, false },
|
| + { false, true, true, true, HAS_KEY, false },
|
| + { false, true, true, true, HAS_ORIGIN | HAS_DEV_ORIGIN, false },
|
| + { false, true, true, true, HAS_FALLBACK_ORIGIN, false },
|
| + { false, true, true, true, HAS_SSL_ORIGIN, false },
|
| + { false, true, true, true, HAS_ALT_ORIGIN, false },
|
| + { false, true, true, true, HAS_ALT_FALLBACK_ORIGIN, false },
|
| + { false, true, true, true, HAS_PROBE_URL, false },
|
| + };
|
| +
|
| + for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
|
| + int flags = 0;
|
| + if (tests[i].allowed)
|
| + flags |= DataReductionProxyParams::kAllowed;
|
| + if (tests[i].fallback_allowed)
|
| + flags |= DataReductionProxyParams::kFallbackAllowed;
|
| + if (tests[i].alternative_allowed)
|
| + flags |= DataReductionProxyParams::kAlternativeAllowed;
|
| + if (tests[i].promo_allowed)
|
| + flags |= DataReductionProxyParams::kPromoAllowed;
|
| + TestDataReductionProxyParams params(
|
| + flags,
|
| + HAS_EVERYTHING & ~(tests[i].missing_definitions));
|
| + EXPECT_EQ(tests[i].expected_result, params.init_result());
|
| + }
|
| +}
|
| +
|
| +} // namespace data_reduction_proxy
|
|
|