cyfs_util/test/
test_context.rs

1use 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}