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
|
//! ref: composer/tests/Composer/Test/Command/AuditCommandTest.php
use crate::test_case::{
RunOptions, create_composer_lock, create_installed_json, get_application_tester, get_package,
init_temp_composer,
};
use serial_test::serial;
use shirabe::package::handle::PackageInterfaceHandle;
use shirabe_php_shim::PhpMixed;
#[test]
#[serial]
#[ignore = "todo!() at crates/shirabe/src/command/audit_command.rs:285 (AuditCommand::get_packages non-locked branch: installed-repo conversion unported)"]
fn test_successful_response_code_when_no_packages_are_required() {
let tear_down = init_temp_composer(None, None, None, true);
let mut app_tester = get_application_tester();
app_tester
.run(
vec![(PhpMixed::from("command"), PhpMixed::from("audit"))],
RunOptions::default(),
)
.unwrap();
assert_eq!(0, app_tester.get_status_code());
assert_eq!(
"No packages - skipping audit.",
app_tester.get_display().trim()
);
drop(tear_down);
}
#[test]
#[serial]
fn test_error_auditing_lock_file_when_it_is_missing() {
let tear_down = init_temp_composer(None, None, None, true);
let packages: Vec<PackageInterfaceHandle> = vec![get_package("dummy/pkg", "1.0.0")];
create_installed_json(&packages, &[], true);
let mut app_tester = get_application_tester();
let err = app_tester
.run(
vec![
(PhpMixed::from("command"), PhpMixed::from("audit")),
(PhpMixed::from("--locked"), PhpMixed::from(true)),
],
RunOptions::default(),
)
.expect_err("expected UnexpectedValueException");
assert!(
err.to_string().contains(
"Valid composer.json and composer.lock files are required to run this command with --locked"
),
"unexpected error: {err}"
);
drop(tear_down);
}
#[test]
#[serial]
#[ignore = "'RefCell already mutably borrowed' panic at crates/shirabe/src/io/io_interface.rs:215 (write_error3) in the locked-audit advisory-fetch path; not in target file"]
fn test_audit_package_with_no_security_vulnerabilities() {
let tear_down = init_temp_composer(None, None, None, true);
let packages: Vec<PackageInterfaceHandle> = vec![get_package("dummy/pkg", "1.0.0")];
create_installed_json(&packages, &[], true);
create_composer_lock(&packages, &[]);
let mut app_tester = get_application_tester();
app_tester
.run(
vec![
(PhpMixed::from("command"), PhpMixed::from("audit")),
(PhpMixed::from("--locked"), PhpMixed::from(true)),
],
RunOptions::default(),
)
.unwrap();
assert!(
app_tester
.get_display()
.trim()
.contains("No security vulnerability advisories found."),
"unexpected display: {}",
app_tester.get_display()
);
drop(tear_down);
}
#[test]
#[serial]
#[ignore = "todo!() at crates/shirabe/src/command/audit_command.rs:285 (AuditCommand::get_packages non-locked branch: installed-repo conversion unported)"]
fn test_audit_package_with_no_dev_option_passed() {
let tear_down = init_temp_composer(None, None, None, true);
let dev_package: Vec<PackageInterfaceHandle> = vec![get_package("dummy/pkg", "1.0.0")];
create_installed_json(&[], &dev_package, true);
create_composer_lock(&[], &dev_package);
let mut app_tester = get_application_tester();
app_tester
.run(
vec![
(PhpMixed::from("command"), PhpMixed::from("audit")),
(PhpMixed::from("--no-dev"), PhpMixed::from(true)),
],
RunOptions::default(),
)
.unwrap();
assert!(
app_tester
.get_display()
.trim()
.contains("No packages - skipping audit."),
"unexpected display: {}",
app_tester.get_display()
);
drop(tear_down);
}
|