raisfast 0.2.23

The last backend you'll ever need. Rust-powered headless CMS with built-in blog, ecommerce, wallet, payment and 4 plugin engines.
use super::*;

fn admin_token() -> String {
    let id = uuid::Uuid::now_v7().to_string();
    make_token(&id, 1, raisfast::models::user::UserRole::Admin)
}

#[tokio::test]
async fn public_options_empty() {
    let (mut app, _) = test_app().await;
    let (status, body) = send(&mut app, get_req("/api/v1/options/public")).await;
    assert!(status.is_success(), "public options: {status} {body:?}");
    assert_eq!(body["code"], 0);
}

#[tokio::test]
async fn list_options_empty() {
    let (mut app, _) = test_app().await;
    let tok = admin_token();
    let (status, body) = send(&mut app, get_auth("/api/v1/admin/options", &tok)).await;
    assert!(status.is_success(), "list options: {status} {body:?}");
    assert_eq!(body["code"], 0);
}

#[tokio::test]
async fn set_get_delete_option() {
    let (mut app, _) = test_app().await;
    let tok = admin_token();

    let key = format!("test.{}", uuid::Uuid::now_v7());

    let (status, body) = send(
        &mut app,
        put_json_auth(
            &format!("/api/v1/admin/options/{key}"),
            json!({"value": "Test Value"}),
            &tok,
        ),
    )
    .await;
    assert!(status.is_success(), "set option: {status} {body:?}");

    let (status, _body) = send(
        &mut app,
        delete_auth(&format!("/api/v1/admin/options/{key}"), &tok),
    )
    .await;
    assert!(status.is_success(), "delete option: {status}");
}

#[tokio::test]
async fn batch_update_options() {
    let (mut app, _) = test_app().await;
    let tok = admin_token();

    let key1 = format!("test.{}", &uuid::Uuid::now_v7().to_string()[..8]);
    let key2 = format!("test.{}", &uuid::Uuid::now_v7().to_string()[..8]);

    let (status, body) = send(
        &mut app,
        put_json_auth(
            "/api/v1/admin/options",
            json!({"options": {key1: "Val1", key2: "Val2"}}),
            &tok,
        ),
    )
    .await;
    assert!(status.is_success(), "batch update: {status} {body:?}");
}