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};
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))
}