mirror of
https://github.com/RaisFast/raisfast.git
synced 2026-09-24 00:02:28 +00:00
151 lines
4.3 KiB
Rust
151 lines
4.3 KiB
Rust
use super::*;
|
|
|
|
async fn admin_token() -> String {
|
|
let pool = test_pool_with_tenants().await;
|
|
let (int_id, doc_id) = create_admin(&pool).await;
|
|
make_token(&doc_id, int_id, raisfast::models::user::UserRole::Admin)
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn create_and_get_tenant() {
|
|
let (mut app, _) = test_app_with_tenants().await;
|
|
let tok = admin_token().await;
|
|
|
|
let (status, body) = send(
|
|
&mut app,
|
|
post_json_auth(
|
|
"/api/v1/admin/tenants",
|
|
json!({"name": "Acme Corp", "domain": "acme.example.com"}),
|
|
&tok,
|
|
),
|
|
)
|
|
.await;
|
|
assert!(status.is_success(), "create tenant: {status} {body:?}");
|
|
assert_eq!(body["data"]["name"], "Acme Corp");
|
|
let id = body["data"]["document_id"].as_str().unwrap().to_string();
|
|
|
|
let (status, body) = send(
|
|
&mut app,
|
|
get_auth(&format!("/api/v1/admin/tenants/{id}"), &tok),
|
|
)
|
|
.await;
|
|
assert!(status.is_success(), "get tenant: {status} {body:?}");
|
|
assert_eq!(body["data"]["name"], "Acme Corp");
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn update_tenant() {
|
|
let (mut app, _) = test_app_with_tenants().await;
|
|
let tok = admin_token().await;
|
|
|
|
let (_, create_body) = send(
|
|
&mut app,
|
|
post_json_auth("/api/v1/admin/tenants", json!({"name": "Original"}), &tok),
|
|
)
|
|
.await;
|
|
let id = create_body["data"]["document_id"].as_str().unwrap();
|
|
|
|
let (status, body) = send(
|
|
&mut app,
|
|
put_json_auth(
|
|
&format!("/api/v1/admin/tenants/{id}"),
|
|
json!({"name": "Updated Corp", "domain": "updated.example.com"}),
|
|
&tok,
|
|
),
|
|
)
|
|
.await;
|
|
assert!(status.is_success(), "update tenant: {status} {body:?}");
|
|
assert_eq!(body["data"]["name"], "Updated Corp");
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn delete_tenant() {
|
|
let (mut app, _) = test_app_with_tenants().await;
|
|
let tok = admin_token().await;
|
|
|
|
let (_, create_body) = send(
|
|
&mut app,
|
|
post_json_auth("/api/v1/admin/tenants", json!({"name": "ToDelete"}), &tok),
|
|
)
|
|
.await;
|
|
let id = create_body["data"]["document_id"].as_str().unwrap();
|
|
|
|
let (status, _) = send(
|
|
&mut app,
|
|
delete_auth(&format!("/api/v1/admin/tenants/{id}"), &tok),
|
|
)
|
|
.await;
|
|
assert!(status.is_success(), "delete tenant: {status}");
|
|
|
|
let (status, _) = send(
|
|
&mut app,
|
|
get_auth(&format!("/api/v1/admin/tenants/{id}"), &tok),
|
|
)
|
|
.await;
|
|
assert_eq!(status, StatusCode::NOT_FOUND);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn list_tenants() {
|
|
let (mut app, _) = test_app_with_tenants().await;
|
|
let tok = admin_token().await;
|
|
|
|
send(
|
|
&mut app,
|
|
post_json_auth("/api/v1/admin/tenants", json!({"name": "Tenant A"}), &tok),
|
|
)
|
|
.await;
|
|
send(
|
|
&mut app,
|
|
post_json_auth("/api/v1/admin/tenants", json!({"name": "Tenant B"}), &tok),
|
|
)
|
|
.await;
|
|
|
|
let (status, body) = send(&mut app, get_auth("/api/v1/admin/tenants", &tok)).await;
|
|
assert!(status.is_success(), "list tenants: {status} {body:?}");
|
|
assert!(body["data"]["total"].as_i64().unwrap() >= 2);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn get_tenant_not_found() {
|
|
let (mut app, _) = test_app_with_tenants().await;
|
|
let tok = admin_token().await;
|
|
let fake_id = uuid::Uuid::now_v7().to_string();
|
|
let (status, _) = send(
|
|
&mut app,
|
|
get_auth(&format!("/api/v1/admin/tenants/{fake_id}"), &tok),
|
|
)
|
|
.await;
|
|
assert_eq!(status, StatusCode::NOT_FOUND);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn update_tenant_not_found() {
|
|
let (mut app, _) = test_app_with_tenants().await;
|
|
let tok = admin_token().await;
|
|
let fake_id = uuid::Uuid::now_v7().to_string();
|
|
let (status, _) = send(
|
|
&mut app,
|
|
put_json_auth(
|
|
&format!("/api/v1/admin/tenants/{fake_id}"),
|
|
json!({"name": "Ghost"}),
|
|
&tok,
|
|
),
|
|
)
|
|
.await;
|
|
assert_eq!(status, StatusCode::NOT_FOUND);
|
|
}
|
|
|
|
#[tokio::test]
|
|
async fn delete_tenant_not_found_is_idempotent() {
|
|
let (mut app, _) = test_app_with_tenants().await;
|
|
let tok = admin_token().await;
|
|
let fake_id = uuid::Uuid::now_v7().to_string();
|
|
let (status, _) = send(
|
|
&mut app,
|
|
delete_auth(&format!("/api/v1/admin/tenants/{fake_id}"), &tok),
|
|
)
|
|
.await;
|
|
assert!(status.is_success(), "delete tenant is idempotent: {status}");
|
|
}
|