2019-01-07 11:33:07 +01:00
|
|
|
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
|
|
|
|
// This file is part of Parity Ethereum.
|
2018-03-28 21:04:08 +02:00
|
|
|
|
2019-01-07 11:33:07 +01:00
|
|
|
// Parity Ethereum is free software: you can redistribute it and/or modify
|
2018-03-28 21:04:08 +02:00
|
|
|
// 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.
|
|
|
|
|
2019-01-07 11:33:07 +01:00
|
|
|
// Parity Ethereum is distributed in the hope that it will be useful,
|
2018-03-28 21:04:08 +02:00
|
|
|
// 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
|
2019-01-07 11:33:07 +01:00
|
|
|
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
|
2018-03-28 21:04:08 +02:00
|
|
|
|
|
|
|
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");
|
|
|
|
}
|