| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 OriginAccessEntry entry1("http", "google.com", OriginAccessEntry::AllowSubdo
mains, OriginAccessEntry::TreatIPAddressAsIPAddress); | 73 OriginAccessEntry entry1("http", "google.com", OriginAccessEntry::AllowSubdo
mains, OriginAccessEntry::TreatIPAddressAsIPAddress); |
| 74 OriginAccessEntry entry2("http", "hamster.com", OriginAccessEntry::AllowSubd
omains, OriginAccessEntry::TreatIPAddressAsIPAddress); | 74 OriginAccessEntry entry2("http", "hamster.com", OriginAccessEntry::AllowSubd
omains, OriginAccessEntry::TreatIPAddressAsIPAddress); |
| 75 OriginAccessEntry entry3("http", "com", OriginAccessEntry::AllowSubdomains,
OriginAccessEntry::TreatIPAddressAsIPAddress); | 75 OriginAccessEntry entry3("http", "com", OriginAccessEntry::AllowSubdomains,
OriginAccessEntry::TreatIPAddressAsIPAddress); |
| 76 EXPECT_EQ(OriginAccessEntry::MatchesOrigin, entry1.matchesOrigin(*origin)); | 76 EXPECT_EQ(OriginAccessEntry::MatchesOrigin, entry1.matchesOrigin(*origin)); |
| 77 EXPECT_EQ(OriginAccessEntry::DoesNotMatchOrigin, entry2.matchesOrigin(*origi
n)); | 77 EXPECT_EQ(OriginAccessEntry::DoesNotMatchOrigin, entry2.matchesOrigin(*origi
n)); |
| 78 EXPECT_EQ(OriginAccessEntry::MatchesOriginButIsPublicSuffix, entry3.matchesO
rigin(*origin)); | 78 EXPECT_EQ(OriginAccessEntry::MatchesOriginButIsPublicSuffix, entry3.matchesO
rigin(*origin)); |
| 79 | 79 |
| 80 blink::Platform::shutdown(); | 80 blink::Platform::shutdown(); |
| 81 } | 81 } |
| 82 | 82 |
| 83 TEST(OriginAccessEntryTest, AllowSubdomainsTest) | |
| 84 { | |
| 85 struct TestCase { | |
| 86 const char* protocol; | |
| 87 const char* host; | |
| 88 const char* origin; | |
| 89 OriginAccessEntry::MatchResult expected; | |
| 90 } inputs[] = { | |
| 91 { "http", "example.com", "http://example.com/", OriginAccessEntry::Match
esOrigin }, | |
| 92 { "http", "example.com", "http://www.example.com/", OriginAccessEntry::M
atchesOrigin }, | |
| 93 { "http", "example.com", "http://www.www.example.com/", OriginAccessEntr
y::MatchesOrigin }, | |
| 94 { "http", "com", "http://example.com/", OriginAccessEntry::MatchesOrigin
ButIsPublicSuffix }, | |
| 95 { "http", "com", "http://www.example.com/", OriginAccessEntry::MatchesOr
iginButIsPublicSuffix }, | |
| 96 { "http", "com", "http://www.www.example.com/", OriginAccessEntry::Match
esOriginButIsPublicSuffix }, | |
| 97 { "https", "example.com", "http://example.com/", OriginAccessEntry::Does
NotMatchOrigin }, | |
| 98 { "https", "example.com", "http://www.example.com/", OriginAccessEntry::
DoesNotMatchOrigin }, | |
| 99 { "https", "example.com", "http://www.www.example.com/", OriginAccessEnt
ry::DoesNotMatchOrigin }, | |
| 100 { "http", "example.com", "http://beispiel.de/", OriginAccessEntry::DoesN
otMatchOrigin }, | |
| 101 { "http", "", "http://example.com/", OriginAccessEntry::MatchesOrigin }, | |
| 102 { "http", "", "http://beispiel.de/", OriginAccessEntry::MatchesOrigin }, | |
| 103 { "https", "", "http://beispiel.de/", OriginAccessEntry::DoesNotMatchOri
gin }, | |
| 104 }; | |
| 105 | |
| 106 // Initialize a PSL mock that whitelists any three-letter label as a TLD ('c
om', 'org', 'net', etc). | |
| 107 OriginAccessEntryTestPlatform platform; | |
| 108 blink::Platform::initialize(&platform); | |
| 109 | |
| 110 for (const auto& test : inputs) { | |
| 111 SCOPED_TRACE(testing::Message() << "Host: " << test.host << ", Origin: "
<< test.origin); | |
| 112 RefPtr<SecurityOrigin> originToTest = SecurityOrigin::createFromString(t
est.origin); | |
| 113 OriginAccessEntry entry1(test.protocol, test.host, OriginAccessEntry::Al
lowSubdomains, OriginAccessEntry::TreatIPAddressAsIPAddress); | |
| 114 EXPECT_EQ(test.expected, entry1.matchesOrigin(*originToTest)); | |
| 115 | |
| 116 OriginAccessEntry entry2(test.protocol, test.host, OriginAccessEntry::Al
lowSubdomains, OriginAccessEntry::TreatIPAddressAsDomain); | |
| 117 EXPECT_EQ(test.expected, entry2.matchesOrigin(*originToTest)); | |
| 118 } | |
| 119 | |
| 120 blink::Platform::shutdown(); | |
| 121 } | |
| 122 | |
| 123 TEST(OriginAccessEntryTest, DisallowSubdomainsTest) | |
| 124 { | |
| 125 struct TestCase { | |
| 126 const char* protocol; | |
| 127 const char* host; | |
| 128 const char* origin; | |
| 129 OriginAccessEntry::MatchResult expected; | |
| 130 } inputs[] = { | |
| 131 { "http", "example.com", "http://example.com/", OriginAccessEntry::Match
esOrigin }, | |
| 132 { "http", "example.com", "http://www.example.com/", OriginAccessEntry::D
oesNotMatchOrigin }, | |
| 133 { "http", "example.com", "http://www.www.example.com/", OriginAccessEntr
y::DoesNotMatchOrigin }, | |
| 134 { "http", "com", "http://example.com/", OriginAccessEntry::DoesNotMatchO
rigin }, | |
| 135 { "http", "com", "http://www.example.com/", OriginAccessEntry::DoesNotMa
tchOrigin }, | |
| 136 { "http", "com", "http://www.www.example.com/", OriginAccessEntry::DoesN
otMatchOrigin }, | |
| 137 { "https", "example.com", "http://example.com/", OriginAccessEntry::Does
NotMatchOrigin }, | |
| 138 { "https", "example.com", "http://www.example.com/", OriginAccessEntry::
DoesNotMatchOrigin }, | |
| 139 { "https", "example.com", "http://www.www.example.com/", OriginAccessEnt
ry::DoesNotMatchOrigin }, | |
| 140 { "http", "example.com", "http://beispiel.de/", OriginAccessEntry::DoesN
otMatchOrigin }, | |
| 141 { "http", "", "http://example.com/", OriginAccessEntry::DoesNotMatchOrig
in }, | |
| 142 { "http", "", "http://beispiel.de/", OriginAccessEntry::DoesNotMatchOrig
in }, | |
| 143 { "https", "", "http://beispiel.de/", OriginAccessEntry::DoesNotMatchOri
gin }, | |
| 144 }; | |
| 145 | |
| 146 // Initialize a PSL mock that whitelists any three-letter label as a TLD ('c
om', 'org', 'net', etc). | |
| 147 OriginAccessEntryTestPlatform platform; | |
| 148 blink::Platform::initialize(&platform); | |
| 149 | |
| 150 for (const auto& test : inputs) { | |
| 151 SCOPED_TRACE(testing::Message() << "Host: " << test.host << ", Origin: "
<< test.origin); | |
| 152 RefPtr<SecurityOrigin> originToTest = SecurityOrigin::createFromString(t
est.origin); | |
| 153 OriginAccessEntry entry1(test.protocol, test.host, OriginAccessEntry::Di
sallowSubdomains, OriginAccessEntry::TreatIPAddressAsIPAddress); | |
| 154 EXPECT_EQ(test.expected, entry1.matchesOrigin(*originToTest)); | |
| 155 | |
| 156 OriginAccessEntry entry2(test.protocol, test.host, OriginAccessEntry::Di
sallowSubdomains, OriginAccessEntry::TreatIPAddressAsDomain); | |
| 157 EXPECT_EQ(test.expected, entry2.matchesOrigin(*originToTest)); | |
| 158 } | |
| 159 | |
| 160 blink::Platform::shutdown(); | |
| 161 } | |
| 162 | |
| 163 TEST(OriginAccessEntryTest, IPAddressTest) | |
| 164 { | |
| 165 struct TestCase { | |
| 166 const char* protocol; | |
| 167 const char* host; | |
| 168 bool isIPAddress; | |
| 169 } inputs[] = { | |
| 170 { "http", "1.1.1.1", true }, | |
| 171 { "http", "1.1.1.1.1", false }, | |
| 172 { "http", "example.com", false }, | |
| 173 { "http", "hostname.that.ends.with.a.number1", false }, | |
| 174 { "http", "2001:db8::1", false }, | |
| 175 { "http", "[2001:db8::1]", true }, | |
| 176 { "http", "2001:db8::a", false }, | |
| 177 { "http", "[2001:db8::a]", true }, | |
| 178 { "http", "", false }, | |
| 179 }; | |
| 180 | |
| 181 // Initialize a PSL mock that whitelists any three-letter label as a TLD ('c
om', 'org', 'net', etc). | |
| 182 OriginAccessEntryTestPlatform platform; | |
| 183 blink::Platform::initialize(&platform); | |
| 184 | |
| 185 for (const auto& test : inputs) { | |
| 186 SCOPED_TRACE(testing::Message() << "Host: " << test.host); | |
| 187 OriginAccessEntry entry(test.protocol, test.host, OriginAccessEntry::Dis
allowSubdomains, OriginAccessEntry::TreatIPAddressAsDomain); | |
| 188 EXPECT_EQ(test.isIPAddress, entry.hostIsIPAddress()) << test.host; | |
| 189 } | |
| 190 | |
| 191 blink::Platform::shutdown(); | |
| 192 } | |
| 193 | |
| 194 TEST(OriginAccessEntryTest, IPAddressAsDomainTest) | |
| 195 { | |
| 196 struct TestCase { | |
| 197 const char* protocol; | |
| 198 const char* host; | |
| 199 const char* origin; | |
| 200 OriginAccessEntry::MatchResult expected; | |
| 201 } inputs[] = { | |
| 202 { "http", "192.0.0.123", "http://192.0.0.123/", OriginAccessEntry::Match
esOrigin }, | |
| 203 { "http", "0.0.123", "http://192.0.0.123/", OriginAccessEntry::MatchesOr
igin }, | |
| 204 { "http", "0.123", "http://192.0.0.123/", OriginAccessEntry::MatchesOrig
in }, | |
| 205 { "http", "1.123", "http://192.0.0.123/", OriginAccessEntry::DoesNotMatc
hOrigin }, | |
| 206 }; | |
| 207 | |
| 208 // Initialize a PSL mock that whitelists any three-letter label as a TLD ('.
123', etc). | |
| 209 OriginAccessEntryTestPlatform platform; | |
| 210 blink::Platform::initialize(&platform); | |
| 211 | |
| 212 for (const auto& test : inputs) { | |
| 213 SCOPED_TRACE(testing::Message() << "Host: " << test.host << ", Origin: "
<< test.origin); | |
| 214 RefPtr<SecurityOrigin> originToTest = SecurityOrigin::createFromString(t
est.origin); | |
| 215 OriginAccessEntry entry(test.protocol, test.host, OriginAccessEntry::All
owSubdomains, OriginAccessEntry::TreatIPAddressAsDomain); | |
| 216 EXPECT_EQ(test.expected, entry.matchesOrigin(*originToTest)); | |
| 217 } | |
| 218 | |
| 219 blink::Platform::shutdown(); | |
| 220 } | |
| 221 | |
| 222 TEST(OriginAccessEntryTest, IPAddressAsIPAddressTest) | |
| 223 { | |
| 224 struct TestCase { | |
| 225 const char* protocol; | |
| 226 const char* host; | |
| 227 const char* origin; | |
| 228 OriginAccessEntry::MatchResult expected; | |
| 229 } inputs[] = { | |
| 230 { "http", "192.0.0.123", "http://192.0.0.123/", OriginAccessEntry::Match
esOrigin }, | |
| 231 { "http", "0.0.123", "http://192.0.0.123/", OriginAccessEntry::DoesNotMa
tchOrigin }, | |
| 232 { "http", "0.123", "http://192.0.0.123/", OriginAccessEntry::DoesNotMatc
hOrigin }, | |
| 233 { "http", "1.123", "http://192.0.0.123/", OriginAccessEntry::DoesNotMatc
hOrigin }, | |
| 234 }; | |
| 235 | |
| 236 // Initialize a PSL mock that whitelists any three-letter label as a TLD ('.
123', etc). | |
| 237 OriginAccessEntryTestPlatform platform; | |
| 238 blink::Platform::initialize(&platform); | |
| 239 | |
| 240 for (const auto& test : inputs) { | |
| 241 SCOPED_TRACE(testing::Message() << "Host: " << test.host << ", Origin: "
<< test.origin); | |
| 242 RefPtr<SecurityOrigin> originToTest = SecurityOrigin::createFromString(t
est.origin); | |
| 243 OriginAccessEntry entry(test.protocol, test.host, OriginAccessEntry::All
owSubdomains, OriginAccessEntry::TreatIPAddressAsIPAddress); | |
| 244 EXPECT_EQ(test.expected, entry.matchesOrigin(*originToTest)); | |
| 245 } | |
| 246 | |
| 247 blink::Platform::shutdown(); | |
| 248 } | |
| 249 } // namespace | 83 } // namespace |
| 250 | 84 |
| OLD | NEW |