mirror of
https://github.com/veeso/termscp.git
synced 2026-09-12 07:06:02 -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");
|
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]
|
#[test]
|
||||||
fn should_tell_that_version_is_higher() {
|
fn should_tell_that_version_is_higher() {
|
||||||
assert!(Update::is_new_version_higher("0.10.0", "0.9.0"));
|
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"));
|
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]
|
#[test]
|
||||||
fn test_should_check_whether_github_api_is_reachable() {
|
fn test_should_check_whether_github_api_is_reachable() {
|
||||||
assert!(Update::check_github_api_reachable().is_ok());
|
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
|
/// Get paths for configuration and keys directory
|
||||||
fn get_paths(dir: &Path) -> (PathBuf, PathBuf) {
|
fn get_paths(dir: &Path) -> (PathBuf, PathBuf) {
|
||||||
let mut k: PathBuf = PathBuf::from(dir);
|
let mut k: PathBuf = PathBuf::from(dir);
|
||||||
|
|||||||
Reference in New Issue
Block a user