Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Start using fetch for the HTTP unit tests. #14114

Merged
merged 4 commits into from Nov 8, 2016
Merged
Changes from 1 commit
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Prev

Rewrite test_check_default_headers_loaded_in_every_request using fetch.

  • Loading branch information
Ms2ger committed Nov 7, 2016
commit b403e0004b8508c1f75274773e448237bea96cd6
@@ -7,6 +7,7 @@ use cookie_rs::Cookie as CookiePair;
use devtools_traits::{ChromeToDevtoolsControlMsg, DevtoolsControlMsg, NetworkEvent};
use devtools_traits::HttpRequest as DevtoolsHttpRequest;
use devtools_traits::HttpResponse as DevtoolsHttpResponse;
use fetch_sync;
use flate2::Compression;
use flate2::write::{DeflateEncoder, GzEncoder};
use hyper::LanguageTag;
@@ -17,7 +18,9 @@ use hyper::header::{StrictTransportSecurity, UserAgent};
use hyper::http::RawStatus;
use hyper::method::Method;
use hyper::mime::{Mime, SubLevel, TopLevel};
use hyper::server::{Request as HyperRequest, Response as HyperResponse};
use hyper::status::StatusCode;
use make_server;
use msg::constellation_msg::{PipelineId, TEST_PIPELINE_ID};
use net::cookie::Cookie;
use net::cookie_storage::CookieStorage;
@@ -27,9 +30,10 @@ use net::test::{HttpRequest, HttpRequestFactory, HttpState, LoadError, UIProvide
use net::test::{HttpResponse, LoadErrorType};
use net_traits::{CookieSource, IncludeSubdomains, LoadContext, LoadData};
use net_traits::{CustomResponse, LoadOrigin, Metadata, ReferrerPolicy};
use net_traits::request::{Request, RequestInit, Destination};
use std::borrow::Cow;
use std::io::{self, Cursor, Read, Write};
use std::sync::{Arc, RwLock, mpsc};
use std::sync::{Arc, Mutex, RwLock, mpsc};
use std::sync::mpsc::Receiver;
use std::thread;
use url::Url;
@@ -229,20 +233,6 @@ impl HttpRequest for MockRequest {
}
}

struct AssertMustHaveHeadersRequestFactory {
expected_headers: Headers,
body: Vec<u8>
}

impl HttpRequestFactory for AssertMustHaveHeadersRequestFactory {
type R = MockRequest;

fn create(&self, _: Url, _: Method, headers: Headers) -> Result<MockRequest, LoadError> {
assert_eq!(headers, self.expected_headers);
Ok(MockRequest::new(ResponseType::Text(self.body.clone())))
}
}

struct AssertAuthHeaderRequestFactory {
expected_headers: Headers,
body: Vec<u8>
@@ -373,22 +363,25 @@ pub fn expect_devtools_http_response(devtools_port: &Receiver<DevtoolsControlMsg

#[test]
fn test_check_default_headers_loaded_in_every_request() {
let url = Url::parse("http://mozilla.com").unwrap();

let http_state = HttpState::new();
let ui_provider = TestProvider::new();

let mut load_data = LoadData::new(LoadContext::Browsing, url.clone(), &HttpTest);
load_data.data = None;
load_data.method = Method::Get;
let expected_headers = Arc::new(Mutex::new(None));
let expected_headers_clone = expected_headers.clone();
let handler = move |request: HyperRequest, _: HyperResponse| {
assert_eq!(request.headers, expected_headers_clone.lock().unwrap().take().unwrap());
};
let (mut server, url) = make_server(handler);

let mut headers = Headers::new();

headers.set(AcceptEncoding(vec![qitem(Encoding::Gzip),
qitem(Encoding::Deflate),
qitem(Encoding::EncodingExt("br".to_owned()))]));

headers.set(Host { hostname: "mozilla.com".to_owned() , port: None });
let hostname = match url.host_str() {
Some(hostname) => hostname.to_owned(),
_ => panic!()
};

headers.set(Host { hostname: hostname, port: url.port() });

let accept = Accept(vec![
qitem(Mime(TopLevel::Text, SubLevel::Html, vec![])),
@@ -408,25 +401,37 @@ fn test_check_default_headers_loaded_in_every_request() {
QualityItem::new(en, Quality(500)),
]));

headers.set(UserAgent(DEFAULT_USER_AGENT.to_owned()));
headers.set(UserAgent(::DEFAULT_USER_AGENT.to_owned()));

*expected_headers.lock().unwrap() = Some(headers.clone());

// Testing for method.GET
let _ = load(&load_data, &ui_provider, &http_state, None,
&AssertMustHaveHeadersRequestFactory {
expected_headers: headers.clone(),
body: <[_]>::to_vec(&[])
}, DEFAULT_USER_AGENT.into(), &CancellationListener::new(None), None);
let request = Request::from_init(RequestInit {
url: url.clone(),
method: Method::Get,
destination: Destination::Document,
origin: url.clone(),
pipeline_id: Some(TEST_PIPELINE_ID),
.. RequestInit::default()
});
let response = fetch_sync(request, None);
assert!(response.status.unwrap().is_success());

// Testing for method.POST
load_data.method = Method::Post;

headers.set(ContentLength(0 as u64));
*expected_headers.lock().unwrap() = Some(headers.clone());
let request = Request::from_init(RequestInit {
url: url.clone(),
method: Method::Post,
destination: Destination::Document,
origin: url.clone(),
pipeline_id: Some(TEST_PIPELINE_ID),
.. RequestInit::default()
});
let response = fetch_sync(request, None);
assert!(response.status.unwrap().is_success());

let _ = load(&load_data, &ui_provider, &http_state, None,
&AssertMustHaveHeadersRequestFactory {
expected_headers: headers,
body: <[_]>::to_vec(&[])
}, DEFAULT_USER_AGENT.into(), &CancellationListener::new(None), None);
let _ = server.close();
}

#[test]
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.