Remove referrer policy unit tests.

This code should be covered sufficiently by wpt tests.
This commit is contained in:
Ms2ger 2016-11-21 11:10:51 +01:00
parent a8f7f3c1db
commit 64d176d851

View file

@ -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();