Chromium Code Reviews| Index: content/public/common/referrer_unittest.cc |
| diff --git a/content/public/common/referrer_unittest.cc b/content/public/common/referrer_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..6030a2b98b9509d7fea730bee1e45204d9ec5002 |
| --- /dev/null |
| +++ b/content/public/common/referrer_unittest.cc |
| @@ -0,0 +1,87 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
|
Kibeom Kim (inactive)
2014/04/30 00:58:56
from
https://chrome-internal.googlesource.com/blin
|
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "content/public/common/referrer.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +namespace { |
| + |
| +const char* kTestURL = "http://google.com/"; |
| + |
| +// Check that copying Referrer objects works. |
| +TEST(ReferrerTest, Copy) { |
| + content::Referrer r1(GURL(kTestURL), blink::WebReferrerPolicyAlways); |
| + content::Referrer r2; |
| + |
| + r2 = r1; |
| + EXPECT_EQ(GURL(kTestURL), r2.url); |
| + EXPECT_EQ(blink::WebReferrerPolicyAlways, r2.policy); |
| +} |
| + |
| +TEST(ReferrerTest, Sanitization) { |
| + content::Referrer referrer( |
| + GURL("http://user:password@foo.com/bar/baz.html#fragment"), |
| + blink::WebReferrerPolicyAlways); |
| + GURL sanitized = |
| + referrer.ReferrerHeaderUrlForNavigation(GURL("http://www.bar.com")); |
| + EXPECT_EQ("http://foo.com/bar/baz.html", sanitized.spec()); |
| +} |
| + |
| +TEST(ReferrerTest, PolicyHandling) { |
| + const char* test_urls[] = { |
| + "http://insecure.com/foo/bar.html", |
| + "https://secure.net/trustworthy.html", |
| + }; |
| + |
| + // Default: all but secure->insecure should have a full referrer. |
| + for (unsigned int source = 0; source < arraysize(test_urls); ++source) { |
| + for (unsigned int dest = 0; dest < arraysize(test_urls); ++dest) { |
| + content::Referrer referrer(GURL(test_urls[source]), |
| + blink::WebReferrerPolicyDefault); |
| + const GURL referrer_url = |
| + referrer.ReferrerHeaderUrlForNavigation(GURL(test_urls[dest])); |
| + if (source == 1 && dest == 0) { |
| + EXPECT_EQ("", referrer_url.spec()); |
| + } else { |
| + EXPECT_EQ(test_urls[source], referrer_url.spec()); |
| + } |
| + } |
| + } |
| + |
| + // Never: always empty string. |
| + for (unsigned int source = 0; source < arraysize(test_urls); ++source) { |
| + for (unsigned int dest = 0; dest < arraysize(test_urls); ++dest) { |
| + content::Referrer referrer(GURL(test_urls[source]), |
| + blink::WebReferrerPolicyNever); |
| + const GURL referrer_url = |
| + referrer.ReferrerHeaderUrlForNavigation(GURL(test_urls[dest])); |
| + EXPECT_EQ("", referrer_url.spec()); |
| + } |
| + } |
| + |
| + // Always: always the full referrer. |
| + for (unsigned int source = 0; source < arraysize(test_urls); ++source) { |
| + for (unsigned int dest = 0; dest < arraysize(test_urls); ++dest) { |
| + content::Referrer referrer(GURL(test_urls[source]), |
| + blink::WebReferrerPolicyAlways); |
| + const GURL referrer_url = |
| + referrer.ReferrerHeaderUrlForNavigation(GURL(test_urls[dest])); |
| + EXPECT_EQ(test_urls[source], referrer_url.spec()); |
| + } |
| + } |
| + |
| + // Always: always just the origin. |
| + for (unsigned int source = 0; source < arraysize(test_urls); ++source) { |
| + for (unsigned int dest = 0; dest < arraysize(test_urls); ++dest) { |
| + content::Referrer referrer(GURL(test_urls[source]), |
| + blink::WebReferrerPolicyOrigin); |
| + const GURL referrer_url = |
| + referrer.ReferrerHeaderUrlForNavigation(GURL(test_urls[dest])); |
| + EXPECT_EQ(GURL(test_urls[source]).GetOrigin().spec(), |
| + referrer_url.spec()); |
| + } |
| + } |
| +} |
| + |
| +} // namespace |