test(net): add test to check that all expected requests are made

This commit is contained in:
Paul Campbell 2024-11-06 21:09:12 +00:00
parent 82cfaf337d
commit 3b2610d6c9

View file

@ -5,6 +5,7 @@ type TestResult = Result<(), Error>;
#[tokio::test] #[tokio::test]
async fn test_get() -> TestResult { async fn test_get() -> TestResult {
//given
let mut net = kxio::net::mock(); let mut net = kxio::net::mock();
let client = net.client(); let client = net.client();
@ -18,8 +19,10 @@ async fn test_get() -> TestResult {
net.on(request).response(my_response.into()); net.on(request).response(my_response.into());
//when
let response = net.send(client.get(url)).await?; let response = net.send(client.get(url)).await?;
//then
assert_eq!(response.status(), http::StatusCode::OK); assert_eq!(response.status(), http::StatusCode::OK);
assert_eq!(response.bytes().await.expect("response body"), "Get OK"); assert_eq!(response.bytes().await.expect("response body"), "Get OK");
@ -28,6 +31,7 @@ async fn test_get() -> TestResult {
#[tokio::test] #[tokio::test]
async fn test_post() -> TestResult { async fn test_post() -> TestResult {
//given
let mut net = kxio::net::mock(); let mut net = kxio::net::mock();
let client = net.client(); let client = net.client();
@ -41,10 +45,38 @@ async fn test_post() -> TestResult {
net.on(request).response(my_response.into()); net.on(request).response(my_response.into());
//when
let response = net.send(client.post(url)).await?; let response = net.send(client.post(url)).await?;
//then
assert_eq!(response.status(), http::StatusCode::OK); assert_eq!(response.status(), http::StatusCode::OK);
assert_eq!(response.bytes().await.expect("response body"), "Post OK"); assert_eq!(response.bytes().await.expect("response body"), "Post OK");
Ok(()) Ok(())
} }
#[tokio::test]
#[should_panic]
async fn test_unused_post() {
//given
let mut net = kxio::net::mock();
let client = net.client();
let url = "https://www.example.com";
let request = client.post(url).build().expect("build request");
let my_response = net
.response()
.status(200)
.body("Post OK")
.expect("request body");
net.on(request).response(my_response.into());
//when
// don't send the planned request
// let _response = net.send(client.post(url)).await.expect("send");
//then
// Drop implementation for net should panic
}