liminal-server 0.25.4

Standalone server for the liminal messaging bus
Documentation
//! The native site drafts the admin pull tests replay.

pub fn fixture_site_drafts() -> Result<
    (
        lys_pass::drafts::ApprovedDraft,
        lys_pass::drafts::ApprovedDraft,
    ),
    Box<dyn std::error::Error>,
> {
    use super::tests::verified_holder;
    use crate::services::lifecycle::site;
    use lys_pass::drafts::{ApprovedDraft, request_digest};
    // `create_site` is a network action, keyed by the network it builds on.
    let target = lys_pass::Target::new("liminal.network", "fixture-network", "create_site")?;
    let identity = verified_holder("fixture-owner", "person", &target)?;
    let spec = site::SiteSpec {
        name: "construction".into(),
        purpose: "Serve the approved echo.".into(),
        subjects: vec!["fixture.echo".into()],
        contracts: std::collections::BTreeMap::from([(
            "fixture.echo".into(),
            site::Contract {
                input_schema_json: "{}".into(),
                output_schema_json: "{}".into(),
            },
        )]),
    };
    let words = serde_json::to_string(&site::SiteAct::prepare(
        "construction".into(),
        site::SiteChange::CreateSite(spec),
        &identity,
    )?)?;
    let draft = ApprovedDraft {
        id: "site-native-create".into(),
        app: "liminal".into(),
        grant: "grant-prepared".into(),
        target,
        request_digest: request_digest(&words),
        approved_by: vec!["fixture-owner".into()],
        mode: lys_pass::Mode::ByDraft,
        words,
    };
    let gone_target = lys_pass::Target::new("liminal.service", "construction", "complete")?;
    let gone_words = serde_json::to_string(&site::SiteAct::prepare(
        "construction".into(),
        site::SiteChange::Complete,
        verified_holder("fixture-owner", "person", &gone_target)?.as_ref(),
    )?)?;
    let gone = ApprovedDraft {
        id: "site-native-gone".into(),
        target: gone_target,
        request_digest: request_digest(&gone_words),
        approved_by: vec!["fixture-owner".into()],
        mode: lys_pass::Mode::ByDraft,
        words: gone_words,
        ..draft.clone()
    };
    Ok((draft, gone))
}