X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fcomponents%2Fdata_reduction_proxy%2Fbrowser%2Fdata_reduction_proxy_settings_unittest.cc;h=9e77071709a43c8f135a36e33ec4bac241f4bf5c;hb=4a1a0bdd01eef90b0826a0e761d3379d3715c10f;hp=0dd2a6a8505ce40e334e0a160345b615e0cc6cf2;hpb=b1be5ca53587d23e7aeb77b26861fdc0a181ffd8;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/components/data_reduction_proxy/browser/data_reduction_proxy_settings_unittest.cc b/src/components/data_reduction_proxy/browser/data_reduction_proxy_settings_unittest.cc index 0dd2a6a..9e77071 100644 --- a/src/components/data_reduction_proxy/browser/data_reduction_proxy_settings_unittest.cc +++ b/src/components/data_reduction_proxy/browser/data_reduction_proxy_settings_unittest.cc @@ -20,14 +20,6 @@ namespace { -const char kDataReductionProxy[] = "https://foo.com:443/"; -const char kDataReductionProxyDev[] = "http://foo-dev.com:80"; -const char kDataReductionProxyFallback[] = "http://bar.com:80"; -const char kDataReductionProxyKey[] = "12345"; -const char kDataReductionProxyAlt[] = "https://alt.com:443/"; -const char kDataReductionProxyAltFallback[] = "http://alt2.com:80"; -const char kDataReductionProxySSL[] = "http://ssl.com:80"; - const char kProbeURLWithOKResponse[] = "http://ok.org/"; const char kProbeURLWithBadResponse[] = "http://bad.org/"; const char kProbeURLWithNoResponse[] = "http://no.org/"; @@ -42,105 +34,79 @@ class DataReductionProxySettingsTest DataReductionProxySettings> { }; - -TEST_F(DataReductionProxySettingsTest, TestAuthenticationInit) { - net::HttpAuthCache cache; - DataReductionProxyParams drp_params( - DataReductionProxyParams::kAllowed | - DataReductionProxyParams::kFallbackAllowed | - DataReductionProxyParams::kPromoAllowed); - drp_params.set_key(kDataReductionProxyKey); - DataReductionProxySettings::InitDataReductionAuthentication( - &cache, &drp_params); - DataReductionProxyParams::DataReductionProxyList proxies = - drp_params.GetAllowedProxies(); - for (DataReductionProxyParams::DataReductionProxyList::iterator it = - proxies.begin(); it != proxies.end(); ++it) { - net::HttpAuthCache::Entry* entry = cache.LookupByPath(*it, - std::string("/")); - EXPECT_TRUE(entry != NULL); - EXPECT_EQ(net::HttpAuth::AUTH_SCHEME_SPDYPROXY, entry->scheme()); - EXPECT_EQ("SpdyProxy", entry->auth_challenge().substr(0,9)); - } - GURL bad_server = GURL("https://bad.proxy.com/"); - net::HttpAuthCache::Entry* entry = - cache.LookupByPath(bad_server, std::string()); - EXPECT_TRUE(entry == NULL); -} - TEST_F(DataReductionProxySettingsTest, TestGetDataReductionProxyOrigin) { // SetUp() adds the origin to the command line, which should be returned here. std::string result = settings_->params()->origin().spec(); - EXPECT_EQ(GURL(kDataReductionProxy), GURL(result)); + EXPECT_EQ(GURL(expected_params_->DefaultOrigin()), GURL(result)); } TEST_F(DataReductionProxySettingsTest, TestGetDataReductionProxyDevOrigin) { CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kDataReductionProxyDev, kDataReductionProxyDev); - ResetSettings(true, true, false, true); + switches::kDataReductionProxyDev, expected_params_->DefaultDevOrigin()); + ResetSettings(true, true, false, true, false); std::string result = settings_->params()->origin().spec(); - EXPECT_EQ(GURL(kDataReductionProxyDev), GURL(result)); + EXPECT_EQ(GURL(expected_params_->DefaultDevOrigin()), GURL(result)); } TEST_F(DataReductionProxySettingsTest, TestGetDataReductionProxies) { - DataReductionProxyParams drp_params( - DataReductionProxyParams::kAllowed | - DataReductionProxyParams::kFallbackAllowed | - DataReductionProxyParams::kPromoAllowed); DataReductionProxyParams::DataReductionProxyList proxies = - drp_params.GetAllowedProxies(); + expected_params_->GetAllowedProxies(); unsigned int expected_proxy_size = 2u; EXPECT_EQ(expected_proxy_size, proxies.size()); - // Command line proxies have precedence, so even if there were other values - // compiled in, these should be the ones in the list. - EXPECT_EQ("foo.com", proxies[0].host()); - EXPECT_EQ(443 ,proxies[0].EffectiveIntPort()); - EXPECT_EQ("bar.com", proxies[1].host()); - EXPECT_EQ(80, proxies[1].EffectiveIntPort()); -} - -TEST_F(DataReductionProxySettingsTest, TestAuthHashGeneration) { - std::string salt = "8675309"; // Jenny's number to test the hash generator. - std::string salted_key = salt + kDataReductionProxyKey + salt; - base::string16 expected_hash = base::UTF8ToUTF16(base::MD5String(salted_key)); - EXPECT_EQ(expected_hash, - DataReductionProxySettings::AuthHashForSalt( - 8675309, kDataReductionProxyKey)); + net::HostPortPair expected_origin = + net::HostPortPair::FromURL(GURL(expected_params_->DefaultOrigin())); + net::HostPortPair expected_fallback_origin = + net::HostPortPair::FromURL( + GURL(expected_params_->DefaultFallbackOrigin())); + EXPECT_EQ(expected_origin.host(), proxies[0].host()); + EXPECT_EQ(expected_origin.port() ,proxies[0].EffectiveIntPort()); + EXPECT_EQ(expected_fallback_origin.host(), proxies[1].host()); + EXPECT_EQ(expected_fallback_origin.port(), proxies[1].EffectiveIntPort()); } TEST_F(DataReductionProxySettingsTest, TestSetProxyConfigs) { + TestDataReductionProxyParams drp_params( + DataReductionProxyParams::kAllowed | + DataReductionProxyParams::kFallbackAllowed | + DataReductionProxyParams::kPromoAllowed, + TestDataReductionProxyParams::HAS_EVERYTHING & + ~TestDataReductionProxyParams::HAS_DEV_ORIGIN); CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kDataReductionProxyAlt, kDataReductionProxyAlt); + switches::kDataReductionProxyAlt, drp_params.DefaultAltOrigin()); CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kDataReductionProxyAltFallback, kDataReductionProxyAltFallback); + switches::kDataReductionProxyAltFallback, + drp_params.DefaultAltFallbackOrigin()); CommandLine::ForCurrentProcess()->AppendSwitchASCII( - switches::kDataReductionSSLProxy, kDataReductionProxySSL); - ResetSettings(true, true, true, true); + switches::kDataReductionSSLProxy, drp_params.DefaultSSLOrigin()); + ResetSettings(true, true, true, true, false); TestDataReductionProxyConfig* config = static_cast( settings_->configurator()); settings_->SetProxyConfigs(true, true, false, false); EXPECT_TRUE(config->enabled_); - EXPECT_TRUE(net::HostPortPair::FromString(kDataReductionProxyAlt).Equals( - net::HostPortPair::FromString(config->origin_))); - EXPECT_TRUE( - net::HostPortPair::FromString(kDataReductionProxyAltFallback).Equals( + EXPECT_TRUE(net::HostPortPair::FromString( + expected_params_->DefaultAltOrigin()).Equals( + net::HostPortPair::FromString(config->origin_))); + EXPECT_TRUE(net::HostPortPair::FromString( + expected_params_->DefaultAltFallbackOrigin()).Equals( net::HostPortPair::FromString(config->fallback_origin_))); - EXPECT_TRUE(net::HostPortPair::FromString(kDataReductionProxySSL).Equals( - net::HostPortPair::FromString(config->ssl_origin_))); + EXPECT_TRUE(net::HostPortPair::FromString( + expected_params_->DefaultSSLOrigin()).Equals( + net::HostPortPair::FromString(config->ssl_origin_))); settings_->SetProxyConfigs(true, false, false, false); EXPECT_TRUE(config->enabled_); - EXPECT_TRUE(net::HostPortPair::FromString(kDataReductionProxy).Equals( - net::HostPortPair::FromString(config->origin_))); - EXPECT_TRUE(net::HostPortPair::FromString(kDataReductionProxyFallback).Equals( - net::HostPortPair::FromString(config->fallback_origin_))); + EXPECT_TRUE(net::HostPortPair::FromString(drp_params.DefaultOrigin()).Equals( + net::HostPortPair::FromString(config->origin_))); + EXPECT_TRUE(net::HostPortPair::FromString( + drp_params.DefaultFallbackOrigin()).Equals( + net::HostPortPair::FromString(config->fallback_origin_))); EXPECT_EQ("", config->ssl_origin_); settings_->SetProxyConfigs(false, true, false, false); @@ -156,6 +122,20 @@ TEST_F(DataReductionProxySettingsTest, TestSetProxyConfigs) { EXPECT_EQ("", config->ssl_origin_); } +TEST_F(DataReductionProxySettingsTest, TestSetProxyConfigsHoldback) { + ResetSettings(true, true, true, true, true); + TestDataReductionProxyConfig* config = + static_cast( + settings_->configurator()); + + // Holdback. + settings_->SetProxyConfigs(true, true, false, false); + EXPECT_FALSE(config->enabled_); + EXPECT_EQ("", config->origin_); + EXPECT_EQ("", config->fallback_origin_); + EXPECT_EQ("", config->ssl_origin_); +} + TEST_F(DataReductionProxySettingsTest, TestIsProxyEnabledOrManaged) { settings_->InitPrefMembers(); base::MessageLoopForUI loop; @@ -177,61 +157,6 @@ TEST_F(DataReductionProxySettingsTest, TestIsProxyEnabledOrManaged) { base::MessageLoop::current()->RunUntilIdle(); } -TEST_F(DataReductionProxySettingsTest, TestAcceptableChallenges) { - typedef struct { - std::string host; - std::string realm; - bool expected_to_succeed; - } challenge_test; - - challenge_test tests[] = { - {"foo.com:443", "", false}, // 0. No realm. - {"foo.com:443", "xxx", false}, // 1. Wrong realm. - {"foo.com:443", "spdyproxy", false}, // 2. Case matters. - {"foo.com:443", "SpdyProxy", true}, // 3. OK. - {"foo.com:443", "SpdyProxy1234567", true}, // 4. OK - {"bar.com:80", "SpdyProxy1234567", true}, // 5. OK. - {"foo.com:443", "SpdyProxyxxx", true}, // 6. OK - {"", "SpdyProxy1234567", false}, // 7. No challenger. - {"xxx.net:443", "SpdyProxy1234567", false}, // 8. Wrong host. - {"foo.com", "SpdyProxy1234567", false}, // 9. No port. - {"foo.com:80", "SpdyProxy1234567", false}, // 10.Wrong port. - {"bar.com:81", "SpdyProxy1234567", false}, // 11.Wrong port. - }; - - for (int i = 0; i <= 11; ++i) { - scoped_refptr auth_info(new net::AuthChallengeInfo); - auth_info->challenger = net::HostPortPair::FromString(tests[i].host); - auth_info->realm = tests[i].realm; - EXPECT_EQ(tests[i].expected_to_succeed, - settings_->IsAcceptableAuthChallenge(auth_info.get())); - } -} - -TEST_F(DataReductionProxySettingsTest, TestChallengeTokens) { - typedef struct { - std::string realm; - bool expected_empty_token; - } token_test; - - token_test tests[] = { - {"", true}, // 0. No realm. - {"xxx", true}, // 1. realm too short. - {"spdyproxy", true}, // 2. no salt. - {"SpdyProxyxxx", true}, // 3. Salt not an int. - {"SpdyProxy1234567", false}, // 4. OK - }; - - for (int i = 0; i <= 4; ++i) { - scoped_refptr auth_info(new net::AuthChallengeInfo); - auth_info->challenger = - net::HostPortPair::FromString(kDataReductionProxy); - auth_info->realm = tests[i].realm; - base::string16 token = settings_->GetTokenForAuthChallenge(auth_info.get()); - EXPECT_EQ(tests[i].expected_empty_token, token.empty()); - } -} - TEST_F(DataReductionProxySettingsTest, TestResetDataReductionStatistics) { int64 original_content_length; int64 received_content_length; @@ -385,8 +310,39 @@ TEST_F(DataReductionProxySettingsTest, TestOnIPAddressChanged) { true, true, false); - // IP address change triggers a probe that succeed. Proxy is unrestricted. - CheckProbeOnIPChange(kProbeURLWithBadResponse, + // IP address change triggers a probe that succeeds. Proxy is unrestricted. + CheckProbeOnIPChange(kProbeURLWithOKResponse, + kWarmupURLWithNoContentResponse, + "OK", + true, + false, + false); + // Simulate a VPN connection. The proxy should be disabled. + MockSettings* settings = static_cast(settings_.get()); + settings->network_interfaces_.reset(new net::NetworkInterfaceList()); + settings->network_interfaces_->push_back( + net::NetworkInterface("tun0", /* network interface name */ + "tun0", /* network interface friendly name */ + 0, /* interface index */ + net::NetworkChangeNotifier::CONNECTION_WIFI, + net::IPAddressNumber(), /* IP address */ + 0 /* network prefix */ + )); + settings_->OnIPAddressChanged(); + base::MessageLoop::current()->RunUntilIdle(); + CheckProxyConfigs(false, false, false); + + // Check that the proxy is re-enabled if a non-VPN connection is later used. + settings->network_interfaces_.reset(new net::NetworkInterfaceList()); + settings->network_interfaces_->push_back( + net::NetworkInterface("eth0", /* network interface name */ + "eth0", /* network interface friendly name */ + 0, /* interface index */ + net::NetworkChangeNotifier::CONNECTION_WIFI, + net::IPAddressNumber(), + 0 /* network prefix */ + )); + CheckProbeOnIPChange(kProbeURLWithOKResponse, kWarmupURLWithNoContentResponse, "OK", true, @@ -424,7 +380,7 @@ TEST_F(DataReductionProxySettingsTest, TestInitDataReductionProxyOff) { CheckInitDataReductionProxy(false); } -TEST_F(DataReductionProxySettingsTest, TestSetProxyFromCommandLine) { +TEST_F(DataReductionProxySettingsTest, TestEnableProxyFromCommandLine) { MockSettings* settings = static_cast(settings_.get()); EXPECT_CALL(*settings, RecordStartupState(PROXY_ENABLED)); @@ -454,19 +410,24 @@ TEST_F(DataReductionProxySettingsTest, CheckInitMetricsWhenNotAllowed) { // Clear the command line. Setting flags can force the proxy to be allowed. CommandLine::ForCurrentProcess()->InitFromArgv(0, NULL); - ResetSettings(false, false, false, false); + ResetSettings(false, false, false, false, false); MockSettings* settings = static_cast(settings_.get()); EXPECT_FALSE(settings->params()->allowed()); EXPECT_CALL(*settings, RecordStartupState(PROXY_NOT_AVAILABLE)); scoped_ptr configurator( new TestDataReductionProxyConfig()); - settings_->SetProxyConfigurator(configurator.Pass()); + settings_->SetProxyConfigurator(configurator.get()); scoped_refptr request_context = new net::TestURLRequestContextGetter(base::MessageLoopProxy::current()); - settings_->InitDataReductionProxySettings(&pref_service_, - &pref_service_, - request_context.get()); + settings_->InitDataReductionProxySettings( + &pref_service_, + &pref_service_, + request_context.get()); + settings_->SetOnDataReductionEnabledCallback( + base::Bind(&DataReductionProxySettingsTestBase:: + RegisterSyntheticFieldTrialCallback, + base::Unretained(this))); base::MessageLoop::current()->RunUntilIdle(); }