Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(275)

Side by Side Diff: net/base/net_util_unittest.cc

Issue 1582083002: net: move GetIdentifyFromURL function into url_util.h (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/base/net_util.h" 5 #include "net/base/net_util.h"
6 6
7 #include <ostream> 7 #include <ostream>
8 8
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "base/strings/string_util.h" 11 #include "base/strings/string_util.h"
12 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
13 #include "base/strings/utf_string_conversions.h"
14 #include "net/base/address_list.h" 13 #include "net/base/address_list.h"
15 #include "net/base/ip_endpoint.h" 14 #include "net/base/ip_endpoint.h"
16 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
17 #include "url/gurl.h" 16 #include "url/gurl.h"
18 17
19 #if !defined(OS_NACL) && !defined(OS_WIN) 18 #if !defined(OS_NACL) && !defined(OS_WIN)
20 #include <net/if.h> 19 #include <net/if.h>
21 #include <netinet/in.h> 20 #include <netinet/in.h>
22 #if defined(OS_MACOSX) 21 #if defined(OS_MACOSX)
23 #include <ifaddrs.h> 22 #include <ifaddrs.h>
24 #if !defined(OS_IOS) 23 #if !defined(OS_IOS)
25 #include <netinet/in_var.h> 24 #include <netinet/in_var.h>
26 #endif // !OS_IOS 25 #endif // !OS_IOS
27 #endif // OS_MACOSX 26 #endif // OS_MACOSX
28 #endif // !OS_NACL && !OS_WIN 27 #endif // !OS_NACL && !OS_WIN
29 28
30 #if defined(OS_WIN)
31 #include <iphlpapi.h>
32 #include <objbase.h>
33 #include "base/win/windows_version.h"
34 #endif // OS_WIN
35
36 #if !defined(OS_MACOSX) && !defined(OS_NACL) && !defined(OS_WIN) 29 #if !defined(OS_MACOSX) && !defined(OS_NACL) && !defined(OS_WIN)
37 #include "net/base/address_tracker_linux.h" 30 #include "net/base/address_tracker_linux.h"
38 #endif // !OS_MACOSX && !OS_NACL && !OS_WIN 31 #endif // !OS_MACOSX && !OS_NACL && !OS_WIN
39 32
40 using base::ASCIIToUTF16;
41 using base::WideToUTF16;
42
43 namespace net { 33 namespace net {
44 34
45 namespace { 35 namespace {
46 36
47 const unsigned char kLocalhostIPv4[] = {127, 0, 0, 1}; 37 const unsigned char kLocalhostIPv4[] = {127, 0, 0, 1};
48 const unsigned char kLocalhostIPv6[] = 38 const unsigned char kLocalhostIPv6[] =
49 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; 39 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
50 const uint16_t kLocalhostLookupPort = 80; 40 const uint16_t kLocalhostLookupPort = 80;
51 41
52 bool HasEndpoint(const IPEndPoint& endpoint, const AddressList& addresses) { 42 bool HasEndpoint(const IPEndPoint& endpoint, const AddressList& addresses) {
(...skipping 28 matching lines...) Expand all
81 kLocalhostLookupPort); 71 kLocalhostLookupPort);
82 72
83 AddressList addresses; 73 AddressList addresses;
84 EXPECT_TRUE(ResolveLocalHostname(host, kLocalhostLookupPort, &addresses)); 74 EXPECT_TRUE(ResolveLocalHostname(host, kLocalhostLookupPort, &addresses));
85 EXPECT_EQ(1u, addresses.size()); 75 EXPECT_EQ(1u, addresses.size());
86 EXPECT_TRUE(HasEndpoint(localhost_ipv6, addresses)); 76 EXPECT_TRUE(HasEndpoint(localhost_ipv6, addresses));
87 } 77 }
88 78
89 } // anonymous namespace 79 } // anonymous namespace
90 80
91 TEST(NetUtilTest, GetIdentityFromURL) { 81 TEST(NetUtilTest, CompliantHost) {
92 struct { 82 struct {
93 const char* const input_url;
94 const char* const expected_username;
95 const char* const expected_password;
96 } tests[] = {
97 {
98 "http://username:password@google.com",
99 "username",
100 "password",
101 },
102 { // Test for http://crbug.com/19200
103 "http://username:p@ssword@google.com",
104 "username",
105 "p@ssword",
106 },
107 { // Special URL characters should be unescaped.
108 "http://username:p%3fa%26s%2fs%23@google.com",
109 "username",
110 "p?a&s/s#",
111 },
112 { // Username contains %20.
113 "http://use rname:password@google.com",
114 "use rname",
115 "password",
116 },
117 { // Keep %00 as is.
118 "http://use%00rname:password@google.com",
119 "use%00rname",
120 "password",
121 },
122 { // Use a '+' in the username.
123 "http://use+rname:password@google.com",
124 "use+rname",
125 "password",
126 },
127 { // Use a '&' in the password.
128 "http://username:p&ssword@google.com",
129 "username",
130 "p&ssword",
131 },
132 };
133 for (size_t i = 0; i < arraysize(tests); ++i) {
134 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]: %s", i,
135 tests[i].input_url));
136 GURL url(tests[i].input_url);
137
138 base::string16 username, password;
139 GetIdentityFromURL(url, &username, &password);
140
141 EXPECT_EQ(ASCIIToUTF16(tests[i].expected_username), username);
142 EXPECT_EQ(ASCIIToUTF16(tests[i].expected_password), password);
143 }
144 }
145
146 // Try extracting a username which was encoded with UTF8.
147 TEST(NetUtilTest, GetIdentityFromURL_UTF8) {
148 GURL url(WideToUTF16(L"http://foo:\x4f60\x597d@blah.com"));
149
150 EXPECT_EQ("foo", url.username());
151 EXPECT_EQ("%E4%BD%A0%E5%A5%BD", url.password());
152
153 // Extract the unescaped identity.
154 base::string16 username, password;
155 GetIdentityFromURL(url, &username, &password);
156
157 // Verify that it was decoded as UTF8.
158 EXPECT_EQ(ASCIIToUTF16("foo"), username);
159 EXPECT_EQ(WideToUTF16(L"\x4f60\x597d"), password);
160 }
161
162 TEST(NetUtilTest, CompliantHost) {
163 struct CompliantHostCase {
164 const char* const host; 83 const char* const host;
165 bool expected_output; 84 bool expected_output;
166 }; 85 } compliant_host_cases[] = {
167
168 const CompliantHostCase compliant_host_cases[] = {
169 {"", false}, 86 {"", false},
170 {"a", true}, 87 {"a", true},
171 {"-", false}, 88 {"-", false},
172 {"_", false}, 89 {"_", false},
173 {".", false}, 90 {".", false},
174 {"9", true}, 91 {"9", true},
175 {"9a", true}, 92 {"9a", true},
176 {"9_", true}, 93 {"9_", true},
177 {"a.", true}, 94 {"a.", true},
178 {"a.a", true}, 95 {"a.a", true},
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 EXPECT_FALSE(ResolveLocalHostname("::1:1", kLocalhostLookupPort, &addresses)); 369 EXPECT_FALSE(ResolveLocalHostname("::1:1", kLocalhostLookupPort, &addresses));
453 EXPECT_FALSE(ResolveLocalHostname("0:0:0:0:0:0:0:0:1", kLocalhostLookupPort, 370 EXPECT_FALSE(ResolveLocalHostname("0:0:0:0:0:0:0:0:1", kLocalhostLookupPort,
454 &addresses)); 371 &addresses));
455 EXPECT_FALSE(ResolveLocalHostname("foo.localhost.com", kLocalhostLookupPort, 372 EXPECT_FALSE(ResolveLocalHostname("foo.localhost.com", kLocalhostLookupPort,
456 &addresses)); 373 &addresses));
457 EXPECT_FALSE( 374 EXPECT_FALSE(
458 ResolveLocalHostname("foo.localhoste", kLocalhostLookupPort, &addresses)); 375 ResolveLocalHostname("foo.localhoste", kLocalhostLookupPort, &addresses));
459 } 376 }
460 377
461 TEST(NetUtilTest, GoogleHost) { 378 TEST(NetUtilTest, GoogleHost) {
462 struct GoogleHostCase { 379 struct {
463 GURL url; 380 GURL url;
464 bool expected_output; 381 bool expected_output;
465 }; 382 } google_host_cases[] = {
466
467 const GoogleHostCase google_host_cases[] = {
468 {GURL("http://.google.com"), true}, 383 {GURL("http://.google.com"), true},
469 {GURL("http://.youtube.com"), true}, 384 {GURL("http://.youtube.com"), true},
470 {GURL("http://.gmail.com"), true}, 385 {GURL("http://.gmail.com"), true},
471 {GURL("http://.doubleclick.net"), true}, 386 {GURL("http://.doubleclick.net"), true},
472 {GURL("http://.gstatic.com"), true}, 387 {GURL("http://.gstatic.com"), true},
473 {GURL("http://.googlevideo.com"), true}, 388 {GURL("http://.googlevideo.com"), true},
474 {GURL("http://.googleusercontent.com"), true}, 389 {GURL("http://.googleusercontent.com"), true},
475 {GURL("http://.googlesyndication.com"), true}, 390 {GURL("http://.googlesyndication.com"), true},
476 {GURL("http://.google-analytics.com"), true}, 391 {GURL("http://.google-analytics.com"), true},
477 {GURL("http://.googleadservices.com"), true}, 392 {GURL("http://.googleadservices.com"), true},
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 TEST_P(NetUtilNonUniqueNameTest, IsHostnameNonUnique) { 483 TEST_P(NetUtilNonUniqueNameTest, IsHostnameNonUnique) {
569 const NonUniqueNameTestData& test_data = GetParam(); 484 const NonUniqueNameTestData& test_data = GetParam();
570 485
571 EXPECT_EQ(test_data.is_unique, IsUnique(test_data.hostname)); 486 EXPECT_EQ(test_data.is_unique, IsUnique(test_data.hostname));
572 } 487 }
573 488
574 INSTANTIATE_TEST_CASE_P(, NetUtilNonUniqueNameTest, 489 INSTANTIATE_TEST_CASE_P(, NetUtilNonUniqueNameTest,
575 testing::ValuesIn(kNonUniqueNameTestData)); 490 testing::ValuesIn(kNonUniqueNameTestData));
576 491
577 } // namespace net 492 } // namespace net
OLDNEW
« net/base/net_util.h ('K') | « net/base/net_util.cc ('k') | net/base/url_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698