Skip to content

Commit 8b254cd

Browse files
committed
Add beginnings of tests for server
1 parent a5e1037 commit 8b254cd

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

tests/fixtures/request1.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
POST / HTTP/1.1
2+
Host: localhost:8080
3+
User-Agent: curl/7.54.0
4+
Accept: */*
5+
Content-Length: 2
6+
Content-Type: application/x-www-form-urlencoded
7+

tests/fixtures/response1.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
HTTP/1.1 200 OK
2+
Content-Length: 0
3+

tests/server.rs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
use async_h1::{server, Body};
2+
use async_std::task;
3+
use http::Response;
4+
use std::{fs::File, io, path::PathBuf};
5+
6+
#[test]
7+
fn test_keep_alive() {
8+
let request = read_fixture("request1");
9+
let mut actual = Vec::new();
10+
let request: &[u8] = &request;
11+
let body: &[u8] = "".as_bytes();
12+
13+
let expected = read_fixture("response1");
14+
let expected: &[u8] = &expected;
15+
16+
task::block_on(async {
17+
server::connect(request, &mut actual, |req| {
18+
async { Ok(Response::new(Body::empty(body))) }
19+
})
20+
.await
21+
.unwrap();
22+
assert!(actual == expected);
23+
});
24+
}
25+
26+
fn read_fixture(name: &str) -> Vec<u8> {
27+
use std::io::Read;
28+
29+
let directory: PathBuf = env!("CARGO_MANIFEST_DIR").into();
30+
let path: PathBuf = format!("tests/fixtures/{}.txt", name).into();
31+
let mut file = File::open(directory.join(path)).expect("Reading fixture file didn't work");
32+
let mut contents = Vec::new();
33+
file.read_to_end(&mut contents)
34+
.expect("Couldn't read fixture files contents");
35+
36+
let mut result = Vec::<u8>::new();
37+
for byte in contents {
38+
if byte == 0x0A {
39+
result.push(0x0D);
40+
}
41+
result.push(byte);
42+
}
43+
result
44+
}

0 commit comments

Comments
 (0)