http_auth_filter_unittest.cc 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // Copyright (c) 2011 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "net/http/http_auth_filter.h"
  5. #include <memory>
  6. #include <ostream>
  7. #include "testing/gtest/include/gtest/gtest.h"
  8. #include "url/gurl.h"
  9. #include "url/scheme_host_port.h"
  10. namespace net {
  11. namespace {
  12. static const char* const server_allowlist_array[] = {
  13. "google.com", "linkedin.com", "book.com", ".chromium.org", ".gag", "gog"};
  14. struct SchemeHostPortData {
  15. url::SchemeHostPort scheme_host_port;
  16. HttpAuth::Target target;
  17. bool matches;
  18. };
  19. static const SchemeHostPortData kTestCases[] = {
  20. {url::SchemeHostPort(), HttpAuth::AUTH_NONE, false},
  21. {url::SchemeHostPort(GURL("http://foo.cn")), HttpAuth::AUTH_PROXY, true},
  22. {url::SchemeHostPort(GURL("http://foo.cn")), HttpAuth::AUTH_SERVER, false},
  23. {url::SchemeHostPort(GURL("http://slashdot.org")), HttpAuth::AUTH_NONE,
  24. false},
  25. {url::SchemeHostPort(GURL("http://www.google.com")), HttpAuth::AUTH_SERVER,
  26. true},
  27. {url::SchemeHostPort(GURL("http://www.google.com")), HttpAuth::AUTH_PROXY,
  28. true},
  29. {url::SchemeHostPort(GURL("https://login.facebook.com")),
  30. HttpAuth::AUTH_NONE, false},
  31. {url::SchemeHostPort(GURL("http://codereview.chromium.org")),
  32. HttpAuth::AUTH_SERVER, true},
  33. {url::SchemeHostPort(GURL("http://code.google.com")), HttpAuth::AUTH_SERVER,
  34. true},
  35. {url::SchemeHostPort(GURL("https://www.linkedin.com")),
  36. HttpAuth::AUTH_SERVER, true},
  37. {url::SchemeHostPort(GURL("http://news.slashdot.org")),
  38. HttpAuth::AUTH_PROXY, true},
  39. {url::SchemeHostPort(GURL("http://codereview.chromium.org")),
  40. HttpAuth::AUTH_SERVER, true},
  41. {url::SchemeHostPort(GURL("http://codereview.chromium.gag")),
  42. HttpAuth::AUTH_SERVER, true},
  43. {url::SchemeHostPort(GURL("http://codereview.chromium.gog")),
  44. HttpAuth::AUTH_SERVER, true},
  45. };
  46. } // namespace
  47. TEST(HttpAuthFilterTest, EmptyFilter) {
  48. // Create an empty filter
  49. HttpAuthFilterAllowlist filter((std::string()));
  50. for (const auto& test_case : kTestCases) {
  51. EXPECT_EQ(test_case.target == HttpAuth::AUTH_PROXY,
  52. filter.IsValid(test_case.scheme_host_port, test_case.target))
  53. << test_case.scheme_host_port.Serialize();
  54. }
  55. }
  56. TEST(HttpAuthFilterTest, NonEmptyFilter) {
  57. // Create an non-empty filter
  58. std::string server_allowlist_filter_string;
  59. for (const auto* server : server_allowlist_array) {
  60. if (!server_allowlist_filter_string.empty())
  61. server_allowlist_filter_string += ",";
  62. server_allowlist_filter_string += "*";
  63. server_allowlist_filter_string += server;
  64. }
  65. HttpAuthFilterAllowlist filter(server_allowlist_filter_string);
  66. for (const auto& test_case : kTestCases) {
  67. EXPECT_EQ(test_case.matches,
  68. filter.IsValid(test_case.scheme_host_port, test_case.target))
  69. << test_case.scheme_host_port.Serialize();
  70. }
  71. }
  72. } // namespace net