diff options
Diffstat (limited to 'crates/shirabe/tests/command/audit_command_test.rs')
| -rw-r--r-- | crates/shirabe/tests/command/audit_command_test.rs | 114 |
1 files changed, 106 insertions, 8 deletions
diff --git a/crates/shirabe/tests/command/audit_command_test.rs b/crates/shirabe/tests/command/audit_command_test.rs index 7d585d9..bccc7c2 100644 --- a/crates/shirabe/tests/command/audit_command_test.rs +++ b/crates/shirabe/tests/command/audit_command_test.rs @@ -1,25 +1,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] -#[ignore = "missing TestCase::init_temp_composer and get_application_tester (ApplicationTester) infrastructure"] +#[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() { - todo!() + 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] -#[ignore = "missing TestCase::init_temp_composer, create_installed_json, and get_application_tester (ApplicationTester) infrastructure"] +#[serial] fn test_error_auditing_lock_file_when_it_is_missing() { - todo!() + 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] -#[ignore = "missing TestCase::init_temp_composer, create_installed_json, create_composer_lock, and get_application_tester (ApplicationTester) infrastructure"] +#[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() { - todo!() + 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] -#[ignore = "missing TestCase::init_temp_composer, create_installed_json, create_composer_lock, and get_application_tester (ApplicationTester) infrastructure"] +#[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() { - todo!() + 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); } |
