ssh_test_server/
user.rs

1/// Ssh user.
2///
3/// # Example
4///
5/// ```
6/// use ssh_test_server::User;
7/// let user = User::new("user", "password");
8/// assert_eq!(user.login(), "user");
9/// ```
10#[derive(Clone, Debug)]
11pub struct User {
12    login: String,
13    password: String,
14    admin: bool,
15}
16
17impl User {
18    /// Create new user with password.
19    ///
20    /// # Example
21    ///
22    /// ```
23    /// # use ssh_test_server::User;
24    /// let u = User::new("ala", "kot");
25    /// assert_eq!(u.login(), "ala");
26    /// assert_eq!(u.password(), "kot");
27    /// ```
28    pub fn new<L: Into<String>, P: Into<String>>(login: L, password: P) -> Self {
29        Self {
30            login: login.into(),
31            password: password.into(),
32            admin: false,
33        }
34    }
35
36    /// Create new user with admin flag.
37    ///
38    /// # Example
39    ///
40    /// ```
41    /// # use ssh_test_server::User;
42    /// let u = User::new_admin("Administrator", "admin1");
43    /// assert!(u.admin());
44    /// ```
45    pub fn new_admin<L: Into<String>, P: Into<String>>(login: L, password: P) -> Self {
46        let mut u = Self::new(login, password);
47        u.set_admin(true);
48        u
49    }
50
51    /// Modify admin flag.
52    ///
53    /// # Example
54    ///
55    /// ```
56    /// # use ssh_test_server::User;
57    /// let mut u = User::new("login", "password");
58    /// assert!(!u.admin());
59    ///
60    /// u.set_admin(true);
61    /// assert!(u.admin());
62    /// ```
63    pub fn set_admin(&mut self, admin: bool) {
64        self.admin = admin;
65    }
66
67    /// Get admin flag.
68    ///
69    /// # Example
70    ///
71    /// ```
72    /// # use ssh_test_server::User;
73    /// let mut u = User::new("login", "password");
74    /// assert!(!u.admin());
75    /// ```
76    pub fn admin(&self) -> bool {
77        self.admin
78    }
79
80    /// Get user's login.
81    pub fn login(&self) -> &str {
82        &self.login
83    }
84
85    /// Get user's password.
86    ///
87    /// # Example
88    ///
89    /// ```
90    /// # use ssh_test_server::User;
91    /// let u = User::new("a", "12345");
92    /// assert_eq!(u.password(), "12345");
93    /// ```
94    pub fn password(&self) -> &str {
95        &self.password
96    }
97
98    /// Modify user's password.
99    ///
100    /// # Example
101    ///
102    /// ```
103    /// # use ssh_test_server::User;
104    /// let mut u = User::new("a", "12");
105    /// assert_eq!(u.password(), "12");
106    ///
107    /// u.set_password("34");
108    /// assert_eq!(u.password(), "34");
109    /// ```
110    pub fn set_password(&mut self, new_password: &str) {
111        self.password = new_password.to_string();
112    }
113}