vls_proxy/util/
testing.rs1use std::{
2 fs,
3 path::{Path, PathBuf},
4};
5
6use lightning_signer::util::crypto_utils::generate_seed;
7use tracing::warn;
8
9pub fn read_integration_test_seed<P: AsRef<Path>>(datadir: P) -> Option<[u8; 32]> {
10 let path = PathBuf::from(datadir.as_ref()).join("hsm_secret");
11 warn!("reading integration hsm_secret from {:?}", path);
12 let result = fs::read(path);
13 if let Ok(data) = result {
14 Some(
15 data.as_slice().try_into().unwrap_or_else(|_| {
16 panic!("Expected hsm_secret to be 32 bytes, got {}", data.len())
17 }),
18 )
19 } else {
20 None
21 }
22}
23
24pub fn integration_test_seed_or_generate(seeddir: Option<PathBuf>) -> [u8; 32] {
26 let seeddir = seeddir.unwrap_or(PathBuf::from("."));
27 match read_integration_test_seed(&seeddir) {
28 None => {
29 let seed = generate_seed();
30 write_integration_test_seed(&seeddir, &seed);
31 seed
32 }
33 Some(seed) => seed,
34 }
35}
36
37fn write_integration_test_seed<P: AsRef<Path>>(datadir: P, seed: &[u8; 32]) {
38 let path = PathBuf::from(datadir.as_ref()).join("hsm_secret");
39 warn!("writing integration hsm_secret to {:?}", path);
40 fs::write(path, seed).expect("writing hsm_secret");
41}