rustauth-core 0.2.0

Core types and primitives for RustAuth.
Documentation
use super::*;

#[test]
fn core_auth_routes_expose_upstream_openapi_metadata() -> Result<(), Box<dyn std::error::Error>> {
    let adapter = Arc::new(RouteAdapter::default());
    let router = router(adapter)?;
    let openapi = router.openapi_schema();

    assert_eq!(
        openapi["paths"]["/sign-up/email"]["post"]["responses"]["200"]["description"],
        "Successfully created user"
    );
    assert_eq!(
        openapi["paths"]["/sign-in/email"]["post"]["responses"]["200"]["content"]
            ["application/json"]["schema"]["required"],
        serde_json::json!(["redirect", "token", "user"])
    );
    assert_eq!(
        openapi["paths"]["/get-session"]["get"]["responses"]["200"]["content"]["application/json"]
            ["schema"]["type"],
        serde_json::json!(["object", "null"])
    );
    assert_eq!(
        openapi["paths"]["/get-session"]["get"]["responses"]["200"]["content"]["application/json"]
            ["schema"]["properties"]["user"]["$ref"],
        "#/components/schemas/User"
    );
    assert_eq!(
        openapi["components"]["schemas"]["User"]["additionalProperties"],
        true
    );
    assert_eq!(
        openapi["components"]["schemas"]["Session"]["additionalProperties"],
        true
    );
    assert_eq!(
        openapi["paths"]["/get-session"]["post"]["requestBody"]["content"]["application/json"]
            ["schema"],
        serde_json::json!({
            "type": "object",
            "properties": {}
        })
    );
    assert_eq!(
        openapi["paths"]["/sign-out"]["post"]["responses"]["200"]["content"]["application/json"]
            ["schema"]["properties"]["success"]["type"],
        "boolean"
    );
    assert_eq!(
        openapi["paths"]["/list-sessions"]["get"]["operationId"],
        "listUserSessions"
    );
    assert_eq!(
        openapi["paths"]["/revoke-session"]["post"]["requestBody"]["content"]["application/json"]
            ["schema"]["required"],
        serde_json::json!(["token"])
    );
    assert_eq!(
        openapi["paths"]["/change-password"]["post"]["operationId"],
        "changePassword"
    );
    assert_eq!(
        openapi["paths"]["/request-password-reset"]["post"]["operationId"],
        "requestPasswordReset"
    );
    assert_eq!(
        openapi["paths"]["/list-accounts"]["get"]["operationId"],
        "listUserAccounts"
    );
    assert_eq!(
        openapi["paths"]["/unlink-account"]["post"]["requestBody"]["content"]["application/json"]
            ["schema"]["required"],
        serde_json::json!(["providerId"])
    );
    assert_eq!(
        openapi["paths"]["/send-verification-email"]["post"]["operationId"],
        "sendVerificationEmail"
    );
    assert_eq!(
        openapi["paths"]["/verify-email"]["get"]["operationId"],
        "verifyEmail"
    );
    assert_eq!(
        openapi["paths"]["/change-email"]["post"]["operationId"],
        "changeEmail"
    );
    assert_eq!(
        openapi["paths"]["/delete-user"]["post"]["operationId"],
        "deleteUser"
    );
    assert_eq!(
        openapi["paths"]["/delete-user/callback"]["get"]["operationId"],
        "deleteUserCallback"
    );
    Ok(())
}