Merge pull request #715 from ethcore/rpc-personal-tests
Rpc personal tests
This commit is contained in:
commit
acd39843d4
@ -49,7 +49,7 @@ impl<A> Personal for PersonalClient<A> where A: AccountProvider + 'static {
|
|||||||
|(pass, )| {
|
|(pass, )| {
|
||||||
let store = take_weak!(self.accounts);
|
let store = take_weak!(self.accounts);
|
||||||
match store.new_account(&pass) {
|
match store.new_account(&pass) {
|
||||||
Ok(address) => Ok(Value::String(format!("{:?}", address))),
|
Ok(address) => Ok(Value::String(format!("0x{:?}", address))),
|
||||||
Err(_) => Err(Error::internal_error())
|
Err(_) => Err(Error::internal_error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,7 @@ impl TestAccount {
|
|||||||
/// Test account provider.
|
/// Test account provider.
|
||||||
pub struct TestAccountProvider {
|
pub struct TestAccountProvider {
|
||||||
accounts: RwLock<HashMap<Address, TestAccount>>,
|
accounts: RwLock<HashMap<Address, TestAccount>>,
|
||||||
|
pub adds: RwLock<Vec<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TestAccountProvider {
|
impl TestAccountProvider {
|
||||||
@ -49,6 +50,7 @@ impl TestAccountProvider {
|
|||||||
pub fn new(accounts: HashMap<Address, TestAccount>) -> Self {
|
pub fn new(accounts: HashMap<Address, TestAccount>) -> Self {
|
||||||
TestAccountProvider {
|
TestAccountProvider {
|
||||||
accounts: RwLock::new(accounts),
|
accounts: RwLock::new(accounts),
|
||||||
|
adds: RwLock::new(vec![]),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -69,9 +71,13 @@ impl AccountProvider for TestAccountProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn new_account(&self, _pass: &str) -> Result<Address, io::Error> {
|
fn new_account(&self, pass: &str) -> Result<Address, io::Error> {
|
||||||
unimplemented!()
|
let mut adds = self.adds.write().unwrap();
|
||||||
|
let address = Address::from(adds.len() as u64 + 2);
|
||||||
|
adds.push(pass.to_owned());
|
||||||
|
Ok(address)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn account_secret(&self, _account: &Address) -> Result<Secret, SigningError> {
|
fn account_secret(&self, _account: &Address) -> Result<Secret, SigningError> {
|
||||||
unimplemented!()
|
unimplemented!()
|
||||||
}
|
}
|
||||||
|
@ -20,3 +20,4 @@ mod eth;
|
|||||||
mod net;
|
mod net;
|
||||||
mod web3;
|
mod web3;
|
||||||
mod helpers;
|
mod helpers;
|
||||||
|
mod personal;
|
||||||
|
59
rpc/src/v1/tests/personal.rs
Normal file
59
rpc/src/v1/tests/personal.rs
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
// Copyright 2015, 2016 Ethcore (UK) Ltd.
|
||||||
|
// This file is part of Parity.
|
||||||
|
|
||||||
|
// Parity 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 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. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
use std::sync::Arc;
|
||||||
|
use jsonrpc_core::IoHandler;
|
||||||
|
use v1::tests::helpers::{TestAccount, TestAccountProvider};
|
||||||
|
use v1::{PersonalClient, Personal};
|
||||||
|
use util::numbers::*;
|
||||||
|
use std::collections::*;
|
||||||
|
|
||||||
|
fn accounts_provider() -> Arc<TestAccountProvider> {
|
||||||
|
let mut accounts = HashMap::new();
|
||||||
|
accounts.insert(Address::from(1), TestAccount::new("test"));
|
||||||
|
let ap = TestAccountProvider::new(accounts);
|
||||||
|
Arc::new(ap)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn setup() -> (Arc<TestAccountProvider>, IoHandler) {
|
||||||
|
let test_provider = accounts_provider();
|
||||||
|
let personal = PersonalClient::new(&test_provider);
|
||||||
|
let io = IoHandler::new();
|
||||||
|
io.add_delegate(personal.to_delegate());
|
||||||
|
(test_provider, io)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn accounts() {
|
||||||
|
let (_test_provider, io) = setup();
|
||||||
|
|
||||||
|
let request = r#"{"jsonrpc": "2.0", "method": "personal_listAccounts", "params": [], "id": 1}"#;
|
||||||
|
let response = r#"{"jsonrpc":"2.0","result":["0x0000000000000000000000000000000000000001"],"id":1}"#;
|
||||||
|
|
||||||
|
assert_eq!(io.handle_request(request), Some(response.to_owned()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn new_account() {
|
||||||
|
let (_test_provider, io) = setup();
|
||||||
|
|
||||||
|
let request = r#"{"jsonrpc": "2.0", "method": "personal_newAccount", "params": ["pass"], "id": 1}"#;
|
||||||
|
let response = r#"{"jsonrpc":"2.0","result":"0x0000000000000000000000000000000000000002","id":1}"#;
|
||||||
|
|
||||||
|
assert_eq!(io.handle_request(request), Some(response.to_owned()));
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user