test: extend system regression coverage

This commit is contained in:
Christian Visintin
2026-03-21 15:30:54 +01:00
parent c285f90047
commit a23f0f88c0
2 changed files with 85 additions and 0 deletions

View File

@@ -238,6 +238,21 @@ mod test {
assert_eq!(release.version.as_str(), "0.7.0");
}
#[test]
fn should_default_release_body_when_missing() {
let release: UpdRelease = UpdRelease {
name: String::from("termscp 0.7.0"),
version: String::from("0.7.0"),
date: String::from("2021-09-12T00:00:00Z"),
body: None,
assets: vec![],
};
let release: Release = Release::from(release);
assert!(release.body.is_empty());
assert_eq!(release.version.as_str(), "0.7.0");
}
#[test]
fn should_tell_that_version_is_higher() {
assert!(Update::is_new_version_higher("0.10.0", "0.9.0"));
@@ -248,6 +263,39 @@ mod test {
assert!(!Update::is_new_version_higher("0.10.9", "0.11.0"));
}
#[test]
fn should_ignore_release_without_semver() {
let release = Release {
version: String::from("latest"),
body: String::from("notes"),
};
assert!(Update::check_version(release).is_none());
}
#[test]
fn should_ignore_release_when_version_is_not_newer() {
let release = Release {
version: cargo_crate_version!().to_string(),
body: String::from("notes"),
};
assert!(Update::check_version(release).is_none());
}
#[test]
fn should_accept_release_when_version_is_newer() {
let release = Release {
version: String::from("termscp-999.0.0"),
body: String::from("notes"),
};
let release = Update::check_version(release).unwrap();
assert_eq!(release.version.as_str(), "termscp-999.0.0");
assert_eq!(release.body.as_str(), "notes");
}
#[test]
fn test_should_check_whether_github_api_is_reachable() {
assert!(Update::check_github_api_reachable().is_ok());

View File

@@ -206,6 +206,43 @@ Host test
);
}
#[test]
fn should_make_mapkey_from_username_and_host() {
assert_eq!(
SshKeyStorage::make_mapkey("example.org", "veeso"),
"veeso@example.org"
);
}
#[test]
fn should_prefer_termscp_key_over_ssh_config() {
let rsa_key = test_helpers::create_sample_file_with_content(
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDErJhQxEI0+VvhlXVUyh+vMCm7aXfCA/g633AG8ezD/5EylwchtAr2JCoBWnxn4zV8nI9dMqOgm0jO4IsXpKOjQojv+0VOH7I+cDlBg0tk4hFlvyyS6YviDAfDDln3jYUM+5QNDfQLaZlH2WvcJ3mkDxLVlI9MBX1BAeSmChLxwAvxALp2ncImNQLzDO9eHcig3dtMrEKkzXQowRW5Y7eUzg2+vvVq4H2DOjWwUndvB5sJkhEfTUVE7ID8ZdGJo60kUb/02dZYj+IbkAnMCsqktk0cg/4XFX82hEfRYFeb1arkysFisPU1DOb6QielL/axeTebVplaouYcXY0pFdJt root@8c50fd4c345a",
);
let ssh_config_file = test_helpers::create_sample_file_with_content(format!(
r#"
Host test
HostName 127.0.0.1
User test
IdentityFile {}
"#,
rsa_key.path().display()
));
let tmp_dir: tempfile::TempDir = tempfile::TempDir::new().ok().unwrap();
let (cfg_path, key_path): (PathBuf, PathBuf) = get_paths(tmp_dir.path());
let mut client: ConfigClient = ConfigClient::new(cfg_path.as_path(), key_path.as_path())
.ok()
.unwrap();
client.set_ssh_config(Some(ssh_config_file.path().to_string_lossy().to_string()));
assert!(client.add_ssh_key("test", "pi", "stored-key").is_ok());
let storage: SshKeyStorage = SshKeyStorage::from(&client);
let resolved = storage.resolve("test", "pi").unwrap();
assert!(resolved.ends_with("pi@test.key"));
assert_ne!(resolved.as_path(), rsa_key.path());
}
/// Get paths for configuration and keys directory
fn get_paths(dir: &Path) -> (PathBuf, PathBuf) {
let mut k: PathBuf = PathBuf::from(dir);