46 lines
1.5 KiB
Rust
46 lines
1.5 KiB
Rust
|
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(())
|
||
|
}
|