From 8c3b56511ae0a45ced33e8236420bb953bc14099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Sat, 28 May 2016 17:22:43 +0200 Subject: [PATCH] Test for EthSigningQueueClient --- rpc/src/v1/helpers/signing_queue.rs | 2 +- rpc/src/v1/tests/mocked/eth_signing.rs | 60 ++++++++++++++++++++++++++ rpc/src/v1/tests/mocked/mod.rs | 2 + 3 files changed, 63 insertions(+), 1 deletion(-) diff --git a/rpc/src/v1/helpers/signing_queue.rs b/rpc/src/v1/helpers/signing_queue.rs index b6ab6126f..c7abd4924 100644 --- a/rpc/src/v1/helpers/signing_queue.rs +++ b/rpc/src/v1/helpers/signing_queue.rs @@ -58,7 +58,7 @@ mod test { #[test] fn should_work_for_hashset() { // given - let mut queue = Mutex::new(HashSet::new()); + let queue = Mutex::new(HashSet::new()); let request = TransactionRequest { from: Address::from(1), diff --git a/rpc/src/v1/tests/mocked/eth_signing.rs b/rpc/src/v1/tests/mocked/eth_signing.rs index 05ceaf3d3..07adc44b5 100644 --- a/rpc/src/v1/tests/mocked/eth_signing.rs +++ b/rpc/src/v1/tests/mocked/eth_signing.rs @@ -14,4 +14,64 @@ // You should have received a copy of the GNU General Public License // along with Parity. If not, see . +use std::collections::HashSet; +use std::sync::{Arc, Mutex}; +use jsonrpc_core::IoHandler; +use v1::impls::EthSigningQueueClient; +use v1::traits::EthSigning; +use v1::helpers::SigningQueue; +use util::keys::TestAccount; +struct EthSignerTester { + pub queue: Arc, + pub io: IoHandler, +} + +impl Default for EthSignerTester { + fn default() -> Self { + let queue : Arc = Arc::new(Mutex::new(HashSet::new())); + let io = IoHandler::new(); + io.add_delegate(EthSigningQueueClient::new(&queue).to_delegate()); + + EthSignerTester { + queue: queue, + io: io, + } + } +} + +fn eth_signer() -> EthSignerTester { + EthSignerTester::default() +} + + + +#[test] +fn should_add_transaction_to_queue() { + // given + let tester = eth_signer(); + let account = TestAccount::new("123"); + let address = account.address(); + assert_eq!(tester.queue.requests().len(), 0); + + // when + let request = r#"{ + "jsonrpc": "2.0", + "method": "eth_sendTransaction", + "params": [{ + "from": ""#.to_owned() + format!("0x{:?}", address).as_ref() + r#"", + "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567", + "gas": "0x76c0", + "gasPrice": "0x9184e72a000", + "value": "0x9184e72a" + }], + "id": 1 + }"#; + let response = r#"{"jsonrpc":"2.0","result":"0x0000000000000000000000000000000000000000000000000000000000000000","id":1}"#; + + + // then + assert_eq!(tester.io.handle_request(&request), Some(response.to_owned())); + assert_eq!(tester.queue.requests().len(), 1); + +} diff --git a/rpc/src/v1/tests/mocked/mod.rs b/rpc/src/v1/tests/mocked/mod.rs index 98caf6e08..450960f78 100644 --- a/rpc/src/v1/tests/mocked/mod.rs +++ b/rpc/src/v1/tests/mocked/mod.rs @@ -17,8 +17,10 @@ //! RPC serialization tests. mod eth; +mod eth_signing; mod net; mod web3; mod personal; +mod personal_signer; mod ethcore; mod rpc;