File: reason.rs

package info (click to toggle)
rust-pleaser 0.5.6-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 700 kB
  • sloc: makefile: 10
file content (129 lines) | stat: -rw-r--r-- 3,827 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
use std::collections::HashMap;
mod basic_ro;

#[cfg(test)]
mod test {
    use super::*;
    use basic_ro::*;
    use pleaser::*;

    #[test]
    fn test_reason_abscence() {
        let config = "[ed]
exact_name=ed
exact_target=root
exact_rule = /bin/bash
reason = true
"
        .to_string();

        let mut bytes = 0;
        let mut ini_list: HashMap<String, bool> = HashMap::new();
        let mut vec_eo: Vec<EnvOptions> = vec![];
        let mut ro = basic_ro("ed", "root");

        basic_cmd(&mut ro, &"/bin/bash".to_string());
        read_ini_config_str(&config, &mut vec_eo, &ro, false, &mut bytes, &mut ini_list);
        let can_do = can(&vec_eo, &mut ro);
        assert_eq!((can_do).permit(), true);
        assert_eq!(reason_ok(&can_do, &ro), false);
    }

    #[test]
    fn test_reason_present() {
        let config = "[ed]
exact_name=ed
exact_target=root
exact_rule = /bin/bash
reason = true
"
        .to_string();

        let mut bytes = 0;
        let mut ini_list: HashMap<String, bool> = HashMap::new();
        let mut vec_eo: Vec<EnvOptions> = vec![];
        let mut ro = basic_ro("ed", "root");
        ro.reason = Some("simple reason".to_string());

        basic_cmd(&mut ro, &"/bin/bash".to_string());
        read_ini_config_str(&config, &mut vec_eo, &ro, false, &mut bytes, &mut ini_list);
        let can_do = can(&vec_eo, &mut ro);
        assert_eq!((can_do).permit(), true);
        assert_eq!(reason_ok(&can_do, &ro), true);
    }

    #[test]
    fn test_reason_present_bad_match() {
        let config = "[ed]
exact_name=ed
exact_target=root
exact_rule = /bin/bash
reason = bigdb
"
        .to_string();

        let mut bytes = 0;
        let mut ini_list: HashMap<String, bool> = HashMap::new();
        let mut vec_eo: Vec<EnvOptions> = vec![];
        let mut ro = basic_ro("ed", "root");
        ro.reason = Some("simple reason".to_string());

        basic_cmd(&mut ro, &"/bin/bash".to_string());
        read_ini_config_str(&config, &mut vec_eo, &ro, false, &mut bytes, &mut ini_list);
        let can_do = can(&vec_eo, &mut ro);
        assert_eq!((can_do).permit(), true);
        assert_eq!(reason_ok(&can_do, &ro), false);
    }

    #[test]
    fn test_reason_present_good_match() {
        let config = "[ed]
exact_name=ed
exact_target=root
exact_rule = /bin/bash
reason = bigdb
"
        .to_string();

        let mut bytes = 0;
        let mut ini_list: HashMap<String, bool> = HashMap::new();
        let mut vec_eo: Vec<EnvOptions> = vec![];
        let mut ro = basic_ro("ed", "root");
        ro.reason = Some("bigdb".to_string());
        basic_cmd(&mut ro, &"/bin/bash".to_string());

        read_ini_config_str(&config, &mut vec_eo, &ro, false, &mut bytes, &mut ini_list);
        let can_do = can(&vec_eo, &mut ro);
        assert_eq!((can_do).permit(), true);
        assert_eq!(reason_ok(&can_do, &ro), true);
    }

    #[test]
    fn test_reason_present_good_host_match() {
        let config = "[ed]
exact_name=ed
exact_target=root
exact_rule = /bin/bash
reason = .*%{HOSTNAME}.*
"
        .to_string();

        let mut bytes = 0;
        let mut ini_list: HashMap<String, bool> = HashMap::new();
        let mut vec_eo: Vec<EnvOptions> = vec![];
        let mut ro = basic_ro("ed", "root");
        ro.reason = Some("bash on localhost".to_string());
        basic_cmd(&mut ro, &"/bin/bash".to_string());

        read_ini_config_str(&config, &mut vec_eo, &ro, false, &mut bytes, &mut ini_list);
        let can_do = can(&vec_eo, &mut ro);
        assert_eq!((can_do).permit(), true);
        assert_eq!(reason_ok(&can_do, &ro), true);

        ro.reason = Some("power off".to_string());
        assert_eq!(reason_ok(&can_do, &ro), false);

        ro.reason = Some("localhost".to_string());
        assert_eq!(reason_ok(&can_do, &ro), true);
    }
}