#![allow(dead_code, unused_imports)]
use http::StatusCode;
use restest::{assert_body_matches, path, Context, Request};
use serde::{Deserialize, Serialize};
use uuid::Uuid;
#[derive(Serialize)]
struct UserInput {
year_of_birth: usize,
}
#[derive(Debug, Deserialize)]
struct User {
year_of_birth: usize,
id: Uuid,
}
const CONTEXT: Context = Context::new().with_port(8080);
#[tokio::test]
pub async fn put_user() {
let request = Request::post("users").with_body(UserInput {
year_of_birth: 2000,
});
let user = CONTEXT
.run(request)
.await
.expect_status(StatusCode::OK)
.await;
assert_body_matches! {
user,
User { year_of_birth: 2000, .. },
};
}
#[tokio::test]
pub async fn get_user() {
let request = Request::post("users").with_body(UserInput {
year_of_birth: 2000,
});
let user = CONTEXT
.run(request)
.await
.expect_status(StatusCode::OK)
.await;
assert_body_matches! {
user,
User { id, year_of_birth: 2000 },
};
let request = Request::get(path!["users", id]).with_body(());
let response = CONTEXT
.run(request)
.await
.expect_status(StatusCode::OK)
.await;
assert_body_matches! {
response,
User { year_of_birth: 2000, .. },
};
}
fn main() {
panic!("Usage: cargo test --example user_server_test");
}