64 lines
1.6 KiB
Rust
64 lines
1.6 KiB
Rust
use actix_web::{http::header, test};
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
use crate::create_test_app;
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use serde_json::json;
|
|
|
|
use super::*;
|
|
|
|
#[derive(Deserialize, Serialize, Debug, Clone)]
|
|
struct RespCreateUser {
|
|
id: String,
|
|
username: String,
|
|
name: String,
|
|
}
|
|
|
|
#[actix_web::test]
|
|
async fn test_create_user() {
|
|
let app = create_test_app!();
|
|
|
|
let resp = test::TestRequest::post()
|
|
.uri("/api/v1/user")
|
|
.insert_header(header::ContentType::json())
|
|
.set_payload(
|
|
json!({
|
|
"username": "testuser",
|
|
"name": "Test User",
|
|
"password": "password"
|
|
})
|
|
.to_string(),
|
|
)
|
|
.send_request(&app)
|
|
.await;
|
|
|
|
let status = resp.status();
|
|
let user: RespCreateUser = test::read_body_json(resp).await;
|
|
|
|
assert!(user.name == "Test User");
|
|
assert!(user.username == "testuser");
|
|
|
|
assert!(status.is_success());
|
|
|
|
let resp_del = test::TestRequest::delete()
|
|
.uri(&format!("/api/v1/user/{}", user.id))
|
|
.send_request(&app)
|
|
.await;
|
|
let status_del = resp_del.status();
|
|
|
|
let delete_message: String = test::read_body_json(resp_del).await;
|
|
assert_eq!(delete_message, format!("User {} deleted", user.id));
|
|
|
|
assert!(
|
|
status_del.is_success(),
|
|
"Failed to delete user with status: {:?}",
|
|
status_del
|
|
);
|
|
|
|
// Debugging output
|
|
dbg!(user);
|
|
dbg!(delete_message);
|
|
}
|
|
}
|