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}