mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Remove referrer policy unit tests.
This code should be covered sufficiently by wpt tests.
This commit is contained in:
parent
a8f7f3c1db
commit
64d176d851
1 changed files with 1 additions and 443 deletions
|
@ -13,7 +13,7 @@ use flate2::write::{DeflateEncoder, GzEncoder};
|
|||
use hyper::LanguageTag;
|
||||
use hyper::header::{Accept, AcceptEncoding, ContentEncoding, ContentLength, Cookie as CookieHeader};
|
||||
use hyper::header::{AcceptLanguage, Authorization, Basic, Date};
|
||||
use hyper::header::{Encoding, Headers, Host, Location, Quality, QualityItem, Referer, SetCookie, qitem};
|
||||
use hyper::header::{Encoding, Headers, Host, Location, Quality, QualityItem, SetCookie, qitem};
|
||||
use hyper::header::{StrictTransportSecurity, UserAgent};
|
||||
use hyper::http::RawStatus;
|
||||
use hyper::method::Method;
|
||||
|
@ -62,23 +62,6 @@ impl LoadOrigin for HttpTest {
|
|||
}
|
||||
}
|
||||
|
||||
struct LoadOriginInfo<'a> {
|
||||
referrer_url: &'a str,
|
||||
referrer_policy: Option<ReferrerPolicy>,
|
||||
}
|
||||
|
||||
impl<'a> LoadOrigin for LoadOriginInfo<'a> {
|
||||
fn referrer_url(&self) -> Option<ServoUrl> {
|
||||
Some(ServoUrl::parse(self.referrer_url).unwrap())
|
||||
}
|
||||
fn referrer_policy(&self) -> Option<ReferrerPolicy> {
|
||||
self.referrer_policy.clone()
|
||||
}
|
||||
fn pipeline_id(&self) -> Option<PipelineId> {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
fn respond_with(body: Vec<u8>) -> MockResponse {
|
||||
let headers = Headers::new();
|
||||
respond_with_headers(body, headers)
|
||||
|
@ -1520,431 +1503,6 @@ fn test_auth_ui_needs_www_auth() {
|
|||
assert_eq!(response.status.unwrap(), StatusCode::Unauthorized);
|
||||
}
|
||||
|
||||
fn assert_referrer_header_matches(origin_info: &LoadOrigin,
|
||||
request_url: &str,
|
||||
expected_referrer: &str) {
|
||||
let url = ServoUrl::parse(request_url).unwrap();
|
||||
let ui_provider = TestProvider::new();
|
||||
|
||||
let load_data = LoadData::new(LoadContext::Browsing,
|
||||
url.clone(),
|
||||
origin_info);
|
||||
|
||||
let mut referrer_headers = Headers::new();
|
||||
referrer_headers.set(Referer(expected_referrer.to_owned()));
|
||||
|
||||
let http_state = HttpState::new();
|
||||
|
||||
let _ = load(&load_data.clone(), &ui_provider, &http_state, None,
|
||||
&AssertMustIncludeHeadersRequestFactory {
|
||||
expected_headers: referrer_headers,
|
||||
body: <[_]>::to_vec(&[])
|
||||
}, DEFAULT_USER_AGENT.into(),
|
||||
&CancellationListener::new(None), None);
|
||||
}
|
||||
|
||||
fn assert_referrer_header_not_included(origin_info: &LoadOrigin, request_url: &str) {
|
||||
let url = ServoUrl::parse(request_url).unwrap();
|
||||
let ui_provider = TestProvider::new();
|
||||
|
||||
let load_data = LoadData::new(LoadContext::Browsing,
|
||||
url.clone(),
|
||||
origin_info);
|
||||
|
||||
let http_state = HttpState::new();
|
||||
|
||||
let _ = load(
|
||||
&load_data.clone(), &ui_provider, &http_state, None,
|
||||
&AssertMustNotIncludeHeadersRequestFactory {
|
||||
headers_not_expected: vec!["Referer".to_owned()],
|
||||
body: <[_]>::to_vec(&[])
|
||||
}, DEFAULT_USER_AGENT.into(), &CancellationListener::new(None), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_set_to_origin_with_origin_policy() {
|
||||
let request_url = "http://mozilla.com";
|
||||
let referrer_url = "http://username:password@someurl.com/some/path#fragment";
|
||||
let referrer_policy = Some(ReferrerPolicy::Origin);
|
||||
let expected_referrer = "http://someurl.com/";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_set_to_ref_url_with_sameorigin_policy_same_orig() {
|
||||
let request_url = "http://mozilla.com";
|
||||
let referrer_url = "http://username:password@mozilla.com/some/path#fragment";
|
||||
let referrer_policy = Some(ReferrerPolicy::SameOrigin);
|
||||
let expected_referrer = "http://mozilla.com/some/path";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_no_referrer_set_with_sameorigin_policy_cross_orig() {
|
||||
let request_url = "http://mozilla.com";
|
||||
let referrer_url = "http://username:password@someurl.com/some/path#fragment";
|
||||
let referrer_policy = Some(ReferrerPolicy::SameOrigin);
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_not_included(&origin_info, request_url);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_set_to_stripped_url_with_unsafeurl_policy() {
|
||||
let request_url = "http://mozilla.com";
|
||||
let referrer_url = "http://username:password@someurl.com/some/path#fragment";
|
||||
let referrer_policy = Some(ReferrerPolicy::UnsafeUrl);
|
||||
let expected_referrer = "http://someurl.com/some/path";
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_with_originwhencrossorigin_policy_cross_orig() {
|
||||
let request_url = "http://mozilla.com";
|
||||
let referrer_url = "http://username:password@someurl.com/some/path#fragment";
|
||||
let referrer_policy = Some(ReferrerPolicy::OriginWhenCrossOrigin);
|
||||
let expected_referrer = "http://someurl.com/";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_with_originwhencrossorigin_policy_same_orig() {
|
||||
let request_url = "http://mozilla.com";
|
||||
let referrer_url = "http://username:password@mozilla.com/some/path#fragment";
|
||||
let referrer_policy = Some(ReferrerPolicy::OriginWhenCrossOrigin);
|
||||
let expected_referrer = "http://mozilla.com/some/path";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_http_to_https_considered_cross_origin_for_referrer_header_logic() {
|
||||
let request_url = "https://mozilla.com";
|
||||
let referrer_url = "http://mozilla.com/some/path";
|
||||
let referrer_policy = Some(ReferrerPolicy::OriginWhenCrossOrigin);
|
||||
let expected_referrer = "http://mozilla.com/";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_with_strictorigin_policy_http_to_https() {
|
||||
let request_url = "https://mozilla.com";
|
||||
let referrer_url = "http://mozilla.com";
|
||||
let referrer_policy = Some(ReferrerPolicy::StrictOrigin);
|
||||
let expected_referrer = "http://mozilla.com/";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_no_referrer_with_strictorigin_policy_https_to_http() {
|
||||
let request_url = "http://mozilla.com";
|
||||
let referrer_url = "https://mozilla.com/some/path";
|
||||
let referrer_policy = Some(ReferrerPolicy::StrictOrigin);
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_not_included(&origin_info, request_url);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_with_strictorigin_policy_http_to_http() {
|
||||
let request_url = "http://mozilla.com/";
|
||||
let referrer_url = "http://mozilla.com/some/path";
|
||||
let referrer_policy = Some(ReferrerPolicy::StrictOrigin);
|
||||
let expected_referrer = "http://mozilla.com/";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_with_strictorigin_policy_https_to_https() {
|
||||
let request_url = "https://mozilla.com/";
|
||||
let referrer_url = "https://mozilla.com/some/path";
|
||||
let referrer_policy = Some(ReferrerPolicy::StrictOrigin);
|
||||
let expected_referrer = "https://mozilla.com/";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_with_strictoriginwhencrossorigin_policy_https_to_https_same_origin() {
|
||||
let request_url = "https://mozilla.com";
|
||||
let referrer_url = "https://mozilla.com/some/path";
|
||||
let referrer_policy = Some(ReferrerPolicy::StrictOriginWhenCrossOrigin);
|
||||
let expected_referrer = "https://mozilla.com/some/path";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_with_strictoriginwhencrossorigin_policy_https_to_https_cross_origin() {
|
||||
let request_url = "https://servo.mozilla.com";
|
||||
let referrer_url = "https://mozilla.com/some/path";
|
||||
let referrer_policy = Some(ReferrerPolicy::StrictOriginWhenCrossOrigin);
|
||||
let expected_referrer = "https://mozilla.com/";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_set_with_strictoriginwhencrossorigin_policy_http_to_http_cross_orig() {
|
||||
let request_url = "http://servo.mozilla.com";
|
||||
let referrer_url = "http://mozilla.com/some/path";
|
||||
let referrer_policy = Some(ReferrerPolicy::StrictOriginWhenCrossOrigin);
|
||||
let expected_referrer = "http://mozilla.com/";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_set_with_strictoriginwhencrossorigin_policy_http_to_http_same_orig() {
|
||||
let request_url = "http://mozilla.com";
|
||||
let referrer_url = "http://mozilla.com/some/path";
|
||||
let referrer_policy = Some(ReferrerPolicy::StrictOriginWhenCrossOrigin);
|
||||
let expected_referrer = "http://mozilla.com/some/path";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_set_with_strictoriginwhencrossorigin_policy_http_to_https_cross_orig() {
|
||||
let request_url = "https://servo.mozilla.com";
|
||||
let referrer_url = "http://mozilla.com/some/path";
|
||||
let referrer_policy = Some(ReferrerPolicy::StrictOriginWhenCrossOrigin);
|
||||
let expected_referrer = "http://mozilla.com/";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_set_with_strictoriginwhencrossorigin_policy_http_to_https_same_orig() {
|
||||
let request_url = "https://mozilla.com";
|
||||
let referrer_url = "http://mozilla.com/some/path";
|
||||
let referrer_policy = Some(ReferrerPolicy::StrictOriginWhenCrossOrigin);
|
||||
let expected_referrer = "http://mozilla.com/";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_set_to_ref_url_with_noreferrerwhendowngrade_policy_https_to_https() {
|
||||
let request_url = "https://mozilla.com";
|
||||
let referrer_url = "https://username:password@mozilla.com/some/path#fragment";
|
||||
let referrer_policy = Some(ReferrerPolicy::NoReferrerWhenDowngrade);
|
||||
let expected_referrer = "https://mozilla.com/some/path";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy,
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_no_referrer_set_with_noreferrerwhendowngrade_policy_https_to_http() {
|
||||
let request_url = "http://mozilla.com";
|
||||
let referrer_url = "https://username:password@mozilla.com/some/path#fragment";
|
||||
let referrer_policy = Some(ReferrerPolicy::NoReferrerWhenDowngrade);
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_not_included(&origin_info, request_url)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_set_to_ref_url_with_noreferrerwhendowngrade_policy_http_to_https() {
|
||||
let request_url = "https://mozilla.com";
|
||||
let referrer_url = "http://username:password@mozilla.com/some/path#fragment";
|
||||
let referrer_policy = Some(ReferrerPolicy::NoReferrerWhenDowngrade);
|
||||
let expected_referrer = "http://mozilla.com/some/path";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_referrer_set_to_ref_url_with_noreferrerwhendowngrade_policy_http_to_http() {
|
||||
let request_url = "http://mozilla.com";
|
||||
let referrer_url = "http://username:password@mozilla.com/some/path#fragment";
|
||||
let referrer_policy = Some(ReferrerPolicy::NoReferrerWhenDowngrade);
|
||||
let expected_referrer = "http://mozilla.com/some/path";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_no_referrer_policy_follows_noreferrerwhendowngrade_https_to_https() {
|
||||
let request_url = "https://mozilla.com";
|
||||
let referrer_url = "https://username:password@mozilla.com/some/path#fragment";
|
||||
let referrer_policy = None;
|
||||
let expected_referrer = "https://mozilla.com/some/path";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_no_referrer_policy_follows_noreferrerwhendowngrade_https_to_http() {
|
||||
let request_url = "http://mozilla.com";
|
||||
let referrer_url = "https://username:password@mozilla.com/some/path#fragment";
|
||||
let referrer_policy = None;
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_not_included(&origin_info, request_url);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_no_referrer_policy_follows_noreferrerwhendowngrade_http_to_https() {
|
||||
let request_url = "https://mozilla.com";
|
||||
let referrer_url = "http://username:password@mozilla.com/some/path#fragment";
|
||||
let referrer_policy = None;
|
||||
let expected_referrer = "http://mozilla.com/some/path";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_no_referrer_policy_follows_noreferrerwhendowngrade_http_to_http() {
|
||||
let request_url = "http://mozilla.com";
|
||||
let referrer_url = "http://username:password@mozilla.com/some/path#fragment";
|
||||
let referrer_policy = None;
|
||||
let expected_referrer = "http://mozilla.com/some/path";
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy
|
||||
};
|
||||
|
||||
assert_referrer_header_matches(&origin_info, request_url, expected_referrer);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_no_referrer_set_with_noreferrer_policy() {
|
||||
let request_url = "http://mozilla.com";
|
||||
let referrer_url = "http://someurl.com";
|
||||
let referrer_policy = Some(ReferrerPolicy::NoReferrer);
|
||||
|
||||
let origin_info = LoadOriginInfo {
|
||||
referrer_url: referrer_url,
|
||||
referrer_policy: referrer_policy,
|
||||
};
|
||||
|
||||
assert_referrer_header_not_included(&origin_info, request_url)
|
||||
}
|
||||
|
||||
fn load_request_for_custom_response(expected_body: Vec<u8>) -> (Metadata, String) {
|
||||
use ipc_channel::ipc;
|
||||
let (sender, receiver) = ipc::channel().unwrap();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue