| Index: net/proxy/proxy_resolver_js_bindings_unittest.cc
|
| ===================================================================
|
| --- net/proxy/proxy_resolver_js_bindings_unittest.cc (revision 29678)
|
| +++ net/proxy/proxy_resolver_js_bindings_unittest.cc (working copy)
|
| @@ -5,17 +5,19 @@
|
| #include "base/scoped_ptr.h"
|
| #include "net/base/mock_host_resolver.h"
|
| #include "net/base/net_errors.h"
|
| +#include "net/base/net_util.h"
|
| #include "net/proxy/proxy_resolver_js_bindings.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +namespace net {
|
| namespace {
|
|
|
| TEST(ProxyResolverJSBindingsTest, DnsResolve) {
|
| - scoped_refptr<net::MockHostResolver> host_resolver(new net::MockHostResolver);
|
| + scoped_refptr<MockHostResolver> host_resolver(new MockHostResolver);
|
|
|
| // Get a hold of a DefaultJSBindings* (it is a hidden impl class).
|
| - scoped_ptr<net::ProxyResolverJSBindings> bindings(
|
| - net::ProxyResolverJSBindings::CreateDefault(host_resolver, NULL));
|
| + scoped_ptr<ProxyResolverJSBindings> bindings(
|
| + ProxyResolverJSBindings::CreateDefault(host_resolver, NULL));
|
|
|
| // Empty string is not considered a valid host (even though on some systems
|
| // requesting this will resolve to localhost).
|
| @@ -33,11 +35,11 @@
|
| // won't work on all systems.
|
| }
|
|
|
| -TEST(ProxyResolverV8DefaultBindingsTest, MyIpAddress) {
|
| +TEST(ProxyResolverJSBindingsTest, MyIpAddress) {
|
| // Get a hold of a DefaultJSBindings* (it is a hidden impl class).
|
| - scoped_ptr<net::ProxyResolverJSBindings> bindings(
|
| - net::ProxyResolverJSBindings::CreateDefault(
|
| - new net::MockHostResolver, NULL));
|
| + scoped_ptr<ProxyResolverJSBindings> bindings(
|
| + ProxyResolverJSBindings::CreateDefault(
|
| + new MockHostResolver, NULL));
|
|
|
| // Our IP address is always going to be 127.0.0.1, since we are using a
|
| // mock host resolver.
|
| @@ -46,4 +48,43 @@
|
| EXPECT_EQ("127.0.0.1", my_ip_address);
|
| }
|
|
|
| +// Tests that myIpAddress() and dnsResolve() pass the flag
|
| +// ADDRESS_FAMILY_IPV4_ONLY to the host resolver, as we don't want them
|
| +// to return IPv6 results.
|
| +TEST(ProxyResolverJSBindingsTest, DontUseIPv6) {
|
| + scoped_refptr<MockHostResolver> host_resolver(new MockHostResolver);
|
| +
|
| + // Get a hold of a DefaultJSBindings* (it is a hidden impl class).
|
| + scoped_ptr<ProxyResolverJSBindings> bindings(
|
| + ProxyResolverJSBindings::CreateDefault(
|
| + host_resolver, NULL));
|
| +
|
| + // Make it so requests resolve to particular address patterns based on family:
|
| + // IPV4_ONLY --> 192.168.1.*
|
| + // UNSPECIFIED --> 192.168.2.1
|
| + host_resolver->rules()->AddRuleForFamily(
|
| + "foo", ADDRESS_FAMILY_IPV4_ONLY, "192.168.1.1");
|
| + host_resolver->rules()->AddRuleForFamily(
|
| + "*", ADDRESS_FAMILY_IPV4_ONLY, "192.168.1.2");
|
| + host_resolver->rules()->AddRuleForFamily(
|
| + "*", ADDRESS_FAMILY_UNSPECIFIED, "192.168.2.1");
|
| +
|
| + // Verify that our mock setups works as expected, and we get different results
|
| + // depending if the address family was IPV4_ONLY or not.
|
| + HostResolver::RequestInfo info("foo", 80);
|
| + AddressList address_list;
|
| + EXPECT_EQ(OK, host_resolver->Resolve(info, &address_list, NULL, NULL, NULL));
|
| + EXPECT_EQ("192.168.2.1", NetAddressToString(address_list.head()));
|
| +
|
| + info.set_address_family(ADDRESS_FAMILY_IPV4_ONLY);
|
| + EXPECT_EQ(OK, host_resolver->Resolve(info, &address_list, NULL, NULL, NULL));
|
| + EXPECT_EQ("192.168.1.1", NetAddressToString(address_list.head()));
|
| +
|
| + // Now the actual test.
|
| + EXPECT_EQ("192.168.1.2", bindings->MyIpAddress());
|
| + EXPECT_EQ("192.168.1.1", bindings->DnsResolve("foo"));
|
| + EXPECT_EQ("192.168.1.2", bindings->DnsResolve("foo2"));
|
| +}
|
| +
|
| } // namespace
|
| +} // namespace net
|
|
|