claude rework
This commit is contained in:
@@ -23,3 +23,61 @@ pub async fn create(new_user: web::Json<NewUserSchema>) -> HttpResponse {
|
||||
Err(_) => HttpResponse::Conflict().await.unwrap(),
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use actix_web::http::StatusCode;
|
||||
use actix_web::{test, web, App};
|
||||
use diesel::prelude::*;
|
||||
|
||||
use super::create;
|
||||
use crate::database::establish_connection;
|
||||
use crate::schema::users;
|
||||
use crate::test_helpers::{delete_user, insert_user, unique_suffix};
|
||||
|
||||
#[actix_web::test]
|
||||
async fn create_succeeds_for_new_user() {
|
||||
let suffix = unique_suffix();
|
||||
let username = format!("new_user_{suffix}");
|
||||
let email = format!("new_{suffix}@example.test");
|
||||
|
||||
let app = test::init_service(App::new().route("/create", web::post().to(create))).await;
|
||||
let req = test::TestRequest::post()
|
||||
.uri("/create")
|
||||
.set_json(serde_json::json!({
|
||||
"name": username,
|
||||
"email": email,
|
||||
"password": "secret"
|
||||
}))
|
||||
.to_request();
|
||||
let resp = test::call_service(&app, req).await;
|
||||
|
||||
assert_eq!(StatusCode::CREATED, resp.status());
|
||||
|
||||
let mut connection = establish_connection();
|
||||
diesel::delete(users::table.filter(users::username.eq(&username)))
|
||||
.execute(&mut connection)
|
||||
.ok();
|
||||
}
|
||||
|
||||
#[actix_web::test]
|
||||
async fn create_fails_for_duplicate_user() {
|
||||
let mut connection = establish_connection();
|
||||
let user = insert_user(&mut connection, "secret");
|
||||
|
||||
let app = test::init_service(App::new().route("/create", web::post().to(create))).await;
|
||||
let req = test::TestRequest::post()
|
||||
.uri("/create")
|
||||
.set_json(serde_json::json!({
|
||||
"name": user.username,
|
||||
"email": user.email,
|
||||
"password": "secret"
|
||||
}))
|
||||
.to_request();
|
||||
let resp = test::call_service(&app, req).await;
|
||||
|
||||
assert_eq!(StatusCode::CONFLICT, resp.status());
|
||||
|
||||
delete_user(&mut connection, user.id);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user