pub const KEYS: &str = "keys";
pub const SESSIONS: &str = "sessions";
pub const ACL: &str = "acl";
pub const CONTEXTS: &str = "contexts";
pub const DID_TEMPLATES: &str = "did_templates";
pub const AUDIT: &str = "audit";
pub const IMPORTED_SECRETS: &str = "imported_secrets";
pub const CACHE: &str = "cache";
pub const VAULT: &str = "vault";
pub const SERVICE_STATE: &str = "service_state";
pub const SEALED_NONCES: &str = "sealed_nonces";
pub const BACKUP_BUNDLES: &str = "backup_bundles";
pub const WEBVH: &str = "webvh";
pub const PASSKEY_VMS: &str = "passkey_vms";
pub const DRAINS: &str = "drains";
pub const SNAPSHOT: &str = "service_prev_config";
pub const BOOTSTRAP: &str = "bootstrap";
pub const CONSENT: &str = "consent";
pub const CONSENT_APPROVERS: &str = "consent_approvers";
pub const ALL: &[&str] = &[
KEYS,
SESSIONS,
ACL,
CONTEXTS,
DID_TEMPLATES,
AUDIT,
IMPORTED_SECRETS,
CACHE,
VAULT,
SERVICE_STATE,
SEALED_NONCES,
BACKUP_BUNDLES,
WEBVH,
PASSKEY_VMS,
DRAINS,
SNAPSHOT,
BOOTSTRAP,
CONSENT,
CONSENT_APPROVERS,
];
pub const BACKED_UP: &[&str] = &[
KEYS,
ACL,
CONTEXTS,
AUDIT,
IMPORTED_SECRETS,
WEBVH,
CONSENT,
CONSENT_APPROVERS,
];
pub const EXCLUDED_FROM_BACKUP: &[&str] = &[
SESSIONS,
DID_TEMPLATES,
CACHE,
VAULT,
SERVICE_STATE,
SEALED_NONCES,
BACKUP_BUNDLES,
PASSKEY_VMS,
DRAINS,
SNAPSHOT,
BOOTSTRAP,
];
#[cfg(test)]
pub const BACKUP_BUNDLES_TEST: &str = "backup_bundles_test";
#[cfg(test)]
pub const BACKUP_BUNDLES_SWEEPER_TEST: &str = "backup_bundles_sweeper_test";
#[cfg(test)]
mod tests {
use super::*;
use std::collections::BTreeSet;
#[test]
fn backup_partition_is_total() {
let all: BTreeSet<&str> = ALL.iter().copied().collect();
let backed: BTreeSet<&str> = BACKED_UP.iter().copied().collect();
let excluded: BTreeSet<&str> = EXCLUDED_FROM_BACKUP.iter().copied().collect();
assert_eq!(all.len(), ALL.len(), "ALL has a duplicate");
assert!(
backed.is_disjoint(&excluded),
"a keyspace is both backed up and excluded: {:?}",
backed.intersection(&excluded).collect::<Vec<_>>()
);
let union: BTreeSet<&str> = backed.union(&excluded).copied().collect();
assert_eq!(
union, all,
"backup partition is not exhaustive — every keyspace in ALL must be in \
exactly one of BACKED_UP / EXCLUDED_FROM_BACKUP"
);
}
#[test]
fn no_bare_keyspace_literals() {
let src = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("src");
let mut offenders = Vec::new();
visit(&src, &mut |path, content| {
if path.file_name().and_then(|n| n.to_str()) == Some("keyspaces.rs") {
return;
}
for (lineno, line) in content.lines().enumerate() {
if line.contains(".keyspace(\"") {
offenders.push(format!(
"{}:{}: {}",
path.display(),
lineno + 1,
line.trim()
));
}
}
});
assert!(
offenders.is_empty(),
"bare keyspace string literal(s) found — use a crate::keyspaces::* const:\n{}",
offenders.join("\n")
);
}
fn visit(dir: &std::path::Path, f: &mut dyn FnMut(&std::path::Path, &str)) {
let Ok(entries) = std::fs::read_dir(dir) else {
return;
};
for entry in entries.flatten() {
let path = entry.path();
if path.is_dir() {
visit(&path, f);
} else if path.extension().and_then(|e| e.to_str()) == Some("rs")
&& let Ok(content) = std::fs::read_to_string(&path)
{
f(&path, &content);
}
}
}
}