// Copyright 2015-2019 Parity Technologies (UK) Ltd. // This file is part of Parity Ethereum. // Parity Ethereum is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity Ethereum is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity Ethereum. If not, see . extern crate tempdir; use std::{fs::File, io::Write, process::Command}; use tempdir::TempDir; fn run(args: &[&str]) -> String { let output = Command::new("cargo") .args(&["run", "--"]) .args(args) .output() .unwrap(); assert!(output.status.success()); String::from_utf8(output.stdout).unwrap() } #[test] fn cli_cmd() { Command::new("cargo").arg("build").output().unwrap(); let dir = TempDir::new("test-vault").unwrap(); let mut passwd = File::create(dir.path().join("test-password")).unwrap(); writeln!(passwd, "password").unwrap(); let mut passwd2 = File::create(dir.path().join("test-vault-addr")).unwrap(); writeln!(passwd2, "password2").unwrap(); let test_password_buf = dir.path().join("test-password"); let test_password: &str = test_password_buf.to_str().unwrap(); let dir_str: &str = dir.path().to_str().unwrap(); let test_vault_addr_buf = dir.path().join("test-vault-addr"); let test_vault_addr = test_vault_addr_buf.to_str().unwrap(); run(&[ "create-vault", "test-vault", test_password, "--dir", dir_str, ]); let output = run(&[ "insert", "7d29fab185a33e2cd955812397354c472d2b84615b645aa135ff539f6b0d70d5", test_vault_addr, "--dir", dir_str, "--vault", "test-vault", "--vault-pwd", test_password, ]); let address = output.trim(); let output = run(&[ "list", "--dir", dir_str, "--vault", "test-vault", "--vault-pwd", test_password, ]); assert_eq!(output, " 0: 0xa8fa5dd30a87bb9e3288d604eb74949c515ab66e\n"); let output = run(&[ "sign", &address[2..], test_vault_addr, "7d29fab185a33e2cd955812397354c472d2b84615b645aa135ff539f6b0d70d5", "--dir", dir_str, "--vault", "test-vault", "--vault-pwd", test_password, ]); assert_eq!(output, "0x54ab6e5cf0c5cb40043fdca5d15d611a3a94285414a076dafecc8dc9c04183f413296a3defff61092c0bb478dc9887ec01070e1275234211208fb8f4be4a9b0101\n"); let output = run(&[ "public", &address[2..], test_vault_addr, "--dir", dir_str, "--vault", "test-vault", "--vault-pwd", test_password, ]); assert_eq!(output, "0x35f222d88b80151857a2877826d940104887376a94c1cbd2c8c7c192eb701df88a18a4ecb8b05b1466c5b3706042027b5e079fe3a3683e66d822b0e047aa3418\n"); }