You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.5 KiB
45 lines
1.5 KiB
mod fixtures; |
|
mod utils; |
|
|
|
use fixtures::{server, Error, TestServer}; |
|
use headers::HeaderValue; |
|
use rstest::rstest; |
|
|
|
#[rstest] |
|
fn get_file_range(server: TestServer) -> Result<(), Error> { |
|
let resp = fetch!(b"GET", format!("{}index.html", server.url())) |
|
.header("range", HeaderValue::from_static("bytes=0-6")) |
|
.send()?; |
|
assert_eq!(resp.status(), 206); |
|
assert_eq!(resp.headers().get("content-range").unwrap(), "bytes 0-6/18"); |
|
assert_eq!(resp.headers().get("accept-ranges").unwrap(), "bytes"); |
|
assert_eq!(resp.headers().get("content-length").unwrap(), "7"); |
|
assert_eq!(resp.text()?, "This is"); |
|
Ok(()) |
|
} |
|
|
|
#[rstest] |
|
fn get_file_range_beyond(server: TestServer) -> Result<(), Error> { |
|
let resp = fetch!(b"GET", format!("{}index.html", server.url())) |
|
.header("range", HeaderValue::from_static("bytes=12-20")) |
|
.send()?; |
|
assert_eq!(resp.status(), 206); |
|
assert_eq!( |
|
resp.headers().get("content-range").unwrap(), |
|
"bytes 12-17/18" |
|
); |
|
assert_eq!(resp.headers().get("accept-ranges").unwrap(), "bytes"); |
|
assert_eq!(resp.headers().get("content-length").unwrap(), "6"); |
|
assert_eq!(resp.text()?, "x.html"); |
|
Ok(()) |
|
} |
|
|
|
#[rstest] |
|
fn get_file_range_invalid(server: TestServer) -> Result<(), Error> { |
|
let resp = fetch!(b"GET", format!("{}index.html", server.url())) |
|
.header("range", HeaderValue::from_static("bytes=20-")) |
|
.send()?; |
|
assert_eq!(resp.status(), 416); |
|
assert_eq!(resp.headers().get("content-range").unwrap(), "bytes */18"); |
|
Ok(()) |
|
}
|
|
|