posemesh_compute_node/dds/
persist.rs

1//! Compatibility layer: delegate persistence of the DDS registration secret
2//! to the canonical store provided by `posemesh-node-registration`.
3
4use anyhow::Result;
5
6/// Persist node secret in memory. Overwrites existing secret.
7pub fn write_node_secret(secret: &str) -> Result<()> {
8    posemesh_node_registration::state::write_node_secret(secret)
9}
10
11/// Read persisted secret. Returns `Ok(None)` if secret missing.
12pub fn read_node_secret() -> Result<Option<String>> {
13    posemesh_node_registration::state::read_node_secret()
14}
15
16/// Clear any persisted secret. Intended for tests.
17pub fn clear_node_secret() -> Result<()> {
18    posemesh_node_registration::state::clear_node_secret()
19}
20
21#[cfg(test)]
22mod tests {
23    use super::*;
24
25    #[test]
26    fn write_read_cycle() {
27        clear_node_secret().unwrap();
28        assert!(read_node_secret().unwrap().is_none());
29
30        write_node_secret("test-secret").unwrap();
31        assert_eq!(read_node_secret().unwrap().as_deref(), Some("test-secret"));
32
33        write_node_secret("new-secret").unwrap();
34        assert_eq!(read_node_secret().unwrap().as_deref(), Some("new-secret"));
35
36        clear_node_secret().unwrap();
37        assert!(read_node_secret().unwrap().is_none());
38    }
39}