cyfs_util/test/
test_context.rs1use crate::get_device_from_file;
2use cyfs_base::*;
3use std::fs;
4use std::path::PathBuf;
5
6#[derive(Clone)]
7pub struct TestContext {
8 meta_endpoint: String,
9 test_dir: PathBuf,
10 owner_device_desc_path: PathBuf,
11 owner_device_id: DeviceId,
12 owowner_device: Device,
13 owner_private_key: PrivateKey,
14 devices: Vec<(Device, PrivateKey)>,
15}
16
17impl TestContext {
18 pub fn new(
19 meta_endpoint: String,
20 test_dir: PathBuf,
21 peer_desc_path: PathBuf,
22 peer_desc: Device,
23 peer_secret: PrivateKey,
24 ) -> BuckyResult<Self> {
25 let peer_id = peer_desc.desc().device_id();
26
27 Ok(TestContext {
28 meta_endpoint,
29 test_dir,
30 owner_device_desc_path: peer_desc_path,
31 owner_device_id: peer_id,
32 owowner_device: peer_desc,
33 owner_private_key: peer_secret,
34 devices: Vec::new(),
35 })
36 }
37
38 pub fn owner_device(&self) -> &Device {
39 &self.owowner_device
40 }
41
42 pub fn owner_device_desc_path(&self) -> PathBuf {
43 self.owner_device_desc_path.clone()
44 }
45
46 pub fn owner_device_id(&self) -> DeviceId {
47 self.owner_device_id.clone()
48 }
49
50 pub fn owner_public_key(&self) -> &PublicKey {
51 self.owowner_device.desc().public_key()
52 }
53
54 pub fn owner_private_key(&self) -> &PrivateKey {
55 &self.owner_private_key
56 }
57
58 pub fn test_dir(&self) -> PathBuf {
59 self.test_dir.clone()
60 }
61
62 pub fn devices(&self) -> &Vec<(Device, PrivateKey)> {
63 &self.devices
64 }
65
66 pub fn meta_endpoint(&self) -> String {
67 self.meta_endpoint.clone()
68 }
69
70 pub fn load_devices(&mut self) -> BuckyResult<()> {
71 let peer_desc_dir = self.test_dir.join("device_secs");
72 info!(
73 "load peers info from peer desc dir:{}",
74 peer_desc_dir.to_string_lossy()
75 );
76 for entry in fs::read_dir(&peer_desc_dir)? {
77 let entry = entry?;
78 let peer_path = entry.path();
79
80 let peer_desc_path = peer_path.join("device");
81
82 info!(
83 "load peer desc from peer desc file:{}",
84 peer_desc_path.to_string_lossy()
85 );
86 let (device_desc, secret) = get_device_from_file(
87 &peer_desc_path.with_extension("desc"),
88 &peer_desc_path.with_extension("sec"),
89 )?;
90
91 self.devices.push((device_desc, secret));
92 }
93 Ok(())
94 }
95}