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 |