123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- // Copyright (c) 2011 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 "net/http/http_auth_filter.h"
- #include <memory>
- #include <ostream>
- #include "testing/gtest/include/gtest/gtest.h"
- #include "url/gurl.h"
- #include "url/scheme_host_port.h"
- namespace net {
- namespace {
- static const char* const server_allowlist_array[] = {
- "google.com", "linkedin.com", "book.com", ".chromium.org", ".gag", "gog"};
- struct SchemeHostPortData {
- url::SchemeHostPort scheme_host_port;
- HttpAuth::Target target;
- bool matches;
- };
- static const SchemeHostPortData kTestCases[] = {
- {url::SchemeHostPort(), HttpAuth::AUTH_NONE, false},
- {url::SchemeHostPort(GURL("http://foo.cn")), HttpAuth::AUTH_PROXY, true},
- {url::SchemeHostPort(GURL("http://foo.cn")), HttpAuth::AUTH_SERVER, false},
- {url::SchemeHostPort(GURL("http://slashdot.org")), HttpAuth::AUTH_NONE,
- false},
- {url::SchemeHostPort(GURL("http://www.google.com")), HttpAuth::AUTH_SERVER,
- true},
- {url::SchemeHostPort(GURL("http://www.google.com")), HttpAuth::AUTH_PROXY,
- true},
- {url::SchemeHostPort(GURL("https://login.facebook.com")),
- HttpAuth::AUTH_NONE, false},
- {url::SchemeHostPort(GURL("http://codereview.chromium.org")),
- HttpAuth::AUTH_SERVER, true},
- {url::SchemeHostPort(GURL("http://code.google.com")), HttpAuth::AUTH_SERVER,
- true},
- {url::SchemeHostPort(GURL("https://www.linkedin.com")),
- HttpAuth::AUTH_SERVER, true},
- {url::SchemeHostPort(GURL("http://news.slashdot.org")),
- HttpAuth::AUTH_PROXY, true},
- {url::SchemeHostPort(GURL("http://codereview.chromium.org")),
- HttpAuth::AUTH_SERVER, true},
- {url::SchemeHostPort(GURL("http://codereview.chromium.gag")),
- HttpAuth::AUTH_SERVER, true},
- {url::SchemeHostPort(GURL("http://codereview.chromium.gog")),
- HttpAuth::AUTH_SERVER, true},
- };
- } // namespace
- TEST(HttpAuthFilterTest, EmptyFilter) {
- // Create an empty filter
- HttpAuthFilterAllowlist filter((std::string()));
- for (const auto& test_case : kTestCases) {
- EXPECT_EQ(test_case.target == HttpAuth::AUTH_PROXY,
- filter.IsValid(test_case.scheme_host_port, test_case.target))
- << test_case.scheme_host_port.Serialize();
- }
- }
- TEST(HttpAuthFilterTest, NonEmptyFilter) {
- // Create an non-empty filter
- std::string server_allowlist_filter_string;
- for (const auto* server : server_allowlist_array) {
- if (!server_allowlist_filter_string.empty())
- server_allowlist_filter_string += ",";
- server_allowlist_filter_string += "*";
- server_allowlist_filter_string += server;
- }
- HttpAuthFilterAllowlist filter(server_allowlist_filter_string);
- for (const auto& test_case : kTestCases) {
- EXPECT_EQ(test_case.matches,
- filter.IsValid(test_case.scheme_host_port, test_case.target))
- << test_case.scheme_host_port.Serialize();
- }
- }
- } // namespace net
|