feat: fixing role and auth test
This commit is contained in:
@@ -16,6 +16,11 @@ pub fn create_test_app(state: AppState) -> TestServer {
|
||||
TestServer::new(app).unwrap()
|
||||
}
|
||||
|
||||
async fn delete_dummy_role(state: AppState, id: String) {
|
||||
let repo = RolesRepository::new(&state);
|
||||
let _ = repo.query_delete_role(id).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_get_role_list_should_return_200() {
|
||||
let state = create_mock_app_state().await;
|
||||
@@ -35,11 +40,18 @@ async fn test_post_create_role_should_return_201() {
|
||||
.layer(axum::Extension(state.clone()));
|
||||
let server = TestServer::new(app).unwrap();
|
||||
let payload = RolesRequestCreateDto {
|
||||
name: "Test Role".into(),
|
||||
name: "Test Role #1".into(),
|
||||
permissions: vec![],
|
||||
};
|
||||
let res = server.post("/v1/roles/create").json(&payload).await;
|
||||
let repo = RolesRepository::new(&state);
|
||||
assert_eq!(res.status_code(), StatusCode::CREATED);
|
||||
let id = repo
|
||||
.query_role_by_name(payload.name.clone())
|
||||
.await
|
||||
.unwrap()
|
||||
.id;
|
||||
delete_dummy_role(state, id).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
@@ -58,7 +70,7 @@ async fn test_put_update_role_should_return_200() {
|
||||
.await
|
||||
.unwrap();
|
||||
let id = existing.id.clone();
|
||||
let server = create_test_app(state);
|
||||
let server = create_test_app(state.clone());
|
||||
let payload = RolesRequestUpdateDto {
|
||||
name: Some("Updated Role".into()),
|
||||
permissions: Some(vec![]),
|
||||
@@ -69,6 +81,12 @@ async fn test_put_update_role_should_return_200() {
|
||||
.await;
|
||||
dbg!(res.text());
|
||||
assert_eq!(res.status_code(), StatusCode::OK);
|
||||
let id = repo
|
||||
.query_role_by_name(payload.name.clone().unwrap())
|
||||
.await
|
||||
.unwrap()
|
||||
.id;
|
||||
delete_dummy_role(state.clone(), id).await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
@@ -92,3 +110,71 @@ async fn test_delete_role_should_return_200() {
|
||||
dbg!(res.text());
|
||||
assert_eq!(res.status_code(), StatusCode::OK);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_post_create_role_with_empty_name_should_return_400() {
|
||||
let state = create_mock_app_state().await;
|
||||
let server = create_test_app(state);
|
||||
let payload = RolesRequestCreateDto {
|
||||
name: "".into(),
|
||||
permissions: vec![],
|
||||
};
|
||||
let res = server.post("/v1/roles/create").json(&payload).await;
|
||||
dbg!(res.text());
|
||||
assert_eq!(res.status_code(), StatusCode::BAD_REQUEST);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_put_update_nonexistent_role_should_return_404() {
|
||||
let state = create_mock_app_state().await;
|
||||
let server = create_test_app(state);
|
||||
let payload = RolesRequestUpdateDto {
|
||||
name: Some("Does Not Exist".into()),
|
||||
permissions: Some(vec![]),
|
||||
};
|
||||
let res = server
|
||||
.put("/v1/roles/update/nonexistent-id")
|
||||
.json(&payload)
|
||||
.await;
|
||||
dbg!(res.text());
|
||||
assert_eq!(res.status_code(), StatusCode::NOT_FOUND);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_delete_nonexistent_role_should_return_404() {
|
||||
let state = create_mock_app_state().await;
|
||||
let server = create_test_app(state);
|
||||
let res = server.delete("/v1/roles/delete/nonexistent-id").await;
|
||||
dbg!(res.text());
|
||||
assert_eq!(res.status_code(), StatusCode::NOT_FOUND);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_get_role_list_with_invalid_page_params_should_return_400() {
|
||||
let state = create_mock_app_state().await;
|
||||
let server = create_test_app(state);
|
||||
let res = server.get("/v1/roles?page=abc&per_page=xyz").await;
|
||||
dbg!(res.text());
|
||||
assert_eq!(res.status_code(), StatusCode::BAD_REQUEST);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_create_duplicate_role_should_return_409() {
|
||||
let state = create_mock_app_state().await;
|
||||
let repo = RolesRepository::new(&state);
|
||||
let _ = repo
|
||||
.query_create_role(RolesRequestCreateDto {
|
||||
name: "Admin".into(),
|
||||
permissions: vec![],
|
||||
})
|
||||
.await
|
||||
.unwrap();
|
||||
let server = create_test_app(state);
|
||||
let payload = RolesRequestCreateDto {
|
||||
name: "Admin".into(),
|
||||
permissions: vec![],
|
||||
};
|
||||
let res = server.post("/v1/roles/create").json(&payload).await;
|
||||
dbg!(res.text());
|
||||
assert_eq!(res.status_code(), StatusCode::CONFLICT);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user