lf9-pgg/crates/backend/tests/endpoints/user.rs

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);
}
}