OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2014 Google Inc. All rights reserved. | 2 * Copyright (C) 2014 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 26 matching lines...) Expand all Loading... |
37 using blink::KURL; | 37 using blink::KURL; |
38 using blink::SecurityPolicy; | 38 using blink::SecurityPolicy; |
39 | 39 |
40 namespace { | 40 namespace { |
41 | 41 |
42 TEST(SecurityPolicyTest, ReferrerIsAlwaysAWebURL) | 42 TEST(SecurityPolicyTest, ReferrerIsAlwaysAWebURL) |
43 { | 43 { |
44 EXPECT_TRUE(String() == SecurityPolicy::generateReferrer(blink::ReferrerPoli
cyAlways, KURL(blink::ParsedURLString, "http://example.com/"), String::fromUTF8(
"chrome://somepage/")).referrer); | 44 EXPECT_TRUE(String() == SecurityPolicy::generateReferrer(blink::ReferrerPoli
cyAlways, KURL(blink::ParsedURLString, "http://example.com/"), String::fromUTF8(
"chrome://somepage/")).referrer); |
45 } | 45 } |
46 | 46 |
| 47 TEST(SecurityPolicyTest, GenerateReferrer) |
| 48 { |
| 49 struct TestCase { |
| 50 blink::ReferrerPolicy policy; |
| 51 const char* referrer; |
| 52 const char* destination; |
| 53 const char* expected; |
| 54 }; |
| 55 |
| 56 const char insecureURLA[] = "http://a.test/path/to/file.html"; |
| 57 const char insecureURLB[] = "http://b.test/path/to/file.html"; |
| 58 const char insecureOriginA[] = "http://a.test/"; |
| 59 |
| 60 const char secureURLA[] = "https://a.test/path/to/file.html"; |
| 61 const char secureURLB[] = "https://b.test/path/to/file.html"; |
| 62 const char secureOriginA[] = "https://a.test/"; |
| 63 |
| 64 TestCase inputs[] = { |
| 65 // HTTP -> HTTP: Same Origin |
| 66 { blink::ReferrerPolicyAlways, insecureURLA, insecureURLA, insecureURLA
}, |
| 67 { blink::ReferrerPolicyDefault, insecureURLA, insecureURLA, insecureURLA
}, |
| 68 { blink::ReferrerPolicyNoReferrerWhenDowngrade, insecureURLA, insecureUR
LA, insecureURLA }, |
| 69 { blink::ReferrerPolicyNever, insecureURLA, insecureURLA, 0 }, |
| 70 { blink::ReferrerPolicyOrigin, insecureURLA, insecureURLA, insecureOrigi
nA }, |
| 71 { blink::ReferrerPolicyOriginWhenCrossOrigin, insecureURLA, insecureURLA
, insecureURLA }, |
| 72 |
| 73 // HTTP -> HTTP: Cross Origin |
| 74 { blink::ReferrerPolicyAlways, insecureURLA, insecureURLB, insecureURLA
}, |
| 75 { blink::ReferrerPolicyDefault, insecureURLA, insecureURLB, insecureURLA
}, |
| 76 { blink::ReferrerPolicyNoReferrerWhenDowngrade, insecureURLA, insecureUR
LB, insecureURLA }, |
| 77 { blink::ReferrerPolicyNever, insecureURLA, insecureURLB, 0 }, |
| 78 { blink::ReferrerPolicyOrigin, insecureURLA, insecureURLB, insecureOrigi
nA }, |
| 79 { blink::ReferrerPolicyOriginWhenCrossOrigin, insecureURLA, insecureURLB
, insecureOriginA }, |
| 80 |
| 81 // HTTPS -> HTTPS: Same Origin |
| 82 { blink::ReferrerPolicyAlways, secureURLA, secureURLA, secureURLA }, |
| 83 { blink::ReferrerPolicyDefault, secureURLA, secureURLA, secureURLA }, |
| 84 { blink::ReferrerPolicyNoReferrerWhenDowngrade, secureURLA, secureURLA,
secureURLA }, |
| 85 { blink::ReferrerPolicyNever, secureURLA, secureURLA, 0 }, |
| 86 { blink::ReferrerPolicyOrigin, secureURLA, secureURLA, secureOriginA }, |
| 87 { blink::ReferrerPolicyOriginWhenCrossOrigin, secureURLA, secureURLA, se
cureURLA }, |
| 88 |
| 89 // HTTPS -> HTTPS: Cross Origin |
| 90 { blink::ReferrerPolicyAlways, secureURLA, secureURLB, secureURLA }, |
| 91 { blink::ReferrerPolicyDefault, secureURLA, secureURLB, secureURLA }, |
| 92 { blink::ReferrerPolicyNoReferrerWhenDowngrade, secureURLA, secureURLB,
secureURLA }, |
| 93 { blink::ReferrerPolicyNever, secureURLA, secureURLB, 0 }, |
| 94 { blink::ReferrerPolicyOrigin, secureURLA, secureURLB, secureOriginA }, |
| 95 { blink::ReferrerPolicyOriginWhenCrossOrigin, secureURLA, secureURLB, se
cureOriginA }, |
| 96 |
| 97 // HTTP -> HTTPS |
| 98 { blink::ReferrerPolicyAlways, insecureURLA, secureURLB, insecureURLA }, |
| 99 { blink::ReferrerPolicyDefault, insecureURLA, secureURLB, insecureURLA }
, |
| 100 { blink::ReferrerPolicyNoReferrerWhenDowngrade, insecureURLA, secureURLB
, insecureURLA }, |
| 101 { blink::ReferrerPolicyNever, insecureURLA, secureURLB, 0 }, |
| 102 { blink::ReferrerPolicyOrigin, insecureURLA, secureURLB, insecureOriginA
}, |
| 103 { blink::ReferrerPolicyOriginWhenCrossOrigin, insecureURLA, secureURLB,
insecureOriginA }, |
| 104 |
| 105 // HTTPS -> HTTP |
| 106 { blink::ReferrerPolicyAlways, secureURLA, insecureURLB, secureURLA }, |
| 107 { blink::ReferrerPolicyDefault, secureURLA, insecureURLB, 0 }, |
| 108 { blink::ReferrerPolicyNoReferrerWhenDowngrade, secureURLA, insecureURLB
, 0 }, |
| 109 { blink::ReferrerPolicyNever, secureURLA, insecureURLB, 0 }, |
| 110 { blink::ReferrerPolicyOrigin, secureURLA, insecureURLB, secureOriginA }
, |
| 111 { blink::ReferrerPolicyOriginWhenCrossOrigin, secureURLA, secureURLB, se
cureOriginA }, |
| 112 }; |
| 113 |
| 114 for (TestCase test : inputs) { |
| 115 KURL destination(blink::ParsedURLString, test.destination); |
| 116 blink::Referrer result = SecurityPolicy::generateReferrer(test.policy, d
estination, String::fromUTF8(test.referrer)); |
| 117 if (test.expected) { |
| 118 EXPECT_EQ(String::fromUTF8(test.expected), result.referrer) |
| 119 << "'" << test.referrer << "' to '" << test.destination |
| 120 << "' should have been '" << test.expected << "': was '" |
| 121 << result.referrer.utf8().data() << "'."; |
| 122 } else { |
| 123 EXPECT_TRUE(result.referrer.isEmpty()) |
| 124 << "'" << test.referrer << "' to '" << test.destination |
| 125 << "' should have been empty: was '" << result.referrer.utf8().d
ata() << "'."; |
| 126 } |
| 127 EXPECT_EQ(test.policy, result.referrerPolicy); |
| 128 } |
| 129 } |
| 130 |
47 } // namespace | 131 } // namespace |
48 | 132 |
OLD | NEW |