From e06e7aa8f32441740156f8e6d9651bf46dd12e19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bogdan-=C8=98tefan=20Neac=C8=99u?= Date: Wed, 23 Jun 2021 19:25:31 +0300 Subject: [PATCH] mixnode: Add tests for upgrade to 10.0.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a positive and a negative unit test for upgrading to 10.0.2. Signed-off-by: Bogdan-Ștefan Neacșu --- Cargo.lock | 23 +++++++++++++++++++++ mixnode/Cargo.toml | 3 +++ mixnode/src/commands/upgrade.rs | 36 +++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 40b9b6c096..981aaaa329 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1830,6 +1830,7 @@ dependencies = [ "rocket", "rocket_contrib", "serde", + "serial_test", "tokio", "tokio-util", "toml", @@ -2839,6 +2840,28 @@ dependencies = [ "serde", ] +[[package]] +name = "serial_test" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0bccbcf40c8938196944a3da0e133e031a33f4d6b72db3bda3cc556e361905d" +dependencies = [ + "lazy_static", + "parking_lot", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2acd6defeddb41eb60bb468f8825d0cfd0c2a76bc03bfd235b6a1dc4f6a1ad5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "sha-1" version = "0.8.2" diff --git a/mixnode/Cargo.toml b/mixnode/Cargo.toml index d6da5489e8..4d7bf076e7 100644 --- a/mixnode/Cargo.toml +++ b/mixnode/Cargo.toml @@ -38,3 +38,6 @@ pemstore = { path = "../common/pemstore" } topology = { path = "../common/topology" } validator-client = { path = "../common/client-libs/validator-client" } version-checker = { path = "../common/version-checker" } + +[dev-dependencies] +serial_test = "0.5" diff --git a/mixnode/src/commands/upgrade.rs b/mixnode/src/commands/upgrade.rs index 1317c924ab..5e9d19d50d 100644 --- a/mixnode/src/commands/upgrade.rs +++ b/mixnode/src/commands/upgrade.rs @@ -447,3 +447,39 @@ pub fn execute(matches: &ArgMatches) { // here be upgrade path to 0.9.X and beyond based on version number from config do_upgrade(existing_config, matches, package_version) } + +#[cfg(test)] +mod upgrade_tests { + use super::*; + use serial_test::serial; + + #[test] + #[serial] + fn test_patch_0_10_2_upgrade() { + let config = Config::default().with_id("0").with_custom_version("0.10.1"); + let matches = ArgMatches::default(); + let old_version = Version::new(0, 10, 1); + let new_version = Version::new(0, 10, 2); + let new_config = + patch_0_10_2_upgrade(config, &matches, &old_version, &new_version).unwrap(); + assert_eq!(new_config.get_version(), "0.10.2"); + } + + #[test] + #[serial] + fn test_patch_0_10_2_upgrade_error() { + let config = Config::default().with_id("0").with_custom_version("0.10.1"); + let matches = ArgMatches::default(); + let old_version = Version::new(0, 10, 1); + let new_version = Version::new(0, 10, 2); + config.save_to_file(None).unwrap(); + let config_file = config.get_config_file_save_location(); + let initial_perms = fs::metadata(config_file.clone()).unwrap().permissions(); + let mut new_perms = initial_perms.clone(); + new_perms.set_readonly(true); + fs::set_permissions(config_file.clone(), new_perms).unwrap(); + let ret = patch_0_10_2_upgrade(config, &matches, &old_version, &new_version); + fs::set_permissions(config_file, initial_perms).unwrap(); + assert!(ret.is_err()); + } +}