mirror of
https://github.com/veeso/termscp.git
synced 2026-04-02 08:12:19 -07:00
test: extend system regression coverage
This commit is contained in:
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user