From e5e238746b09377ed3c00beb420fd442bc41deef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Fri, 10 Jun 2016 15:39:34 +0200 Subject: [PATCH] Bumping sysui & topbar. personal_signerEnabled returns port --- parity/configuration.rs | 8 ++++++++ parity/main.rs | 4 ++-- parity/rpc_apis.rs | 6 +++--- rpc/src/v1/impls/personal.rs | 10 ++++++---- rpc/src/v1/tests/mocked/personal.rs | 28 +++++++++++++++++++++------- 5 files changed, 40 insertions(+), 16 deletions(-) diff --git a/parity/configuration.rs b/parity/configuration.rs index 66ca93316..3076e4e68 100644 --- a/parity/configuration.rs +++ b/parity/configuration.rs @@ -360,6 +360,14 @@ impl Configuration { if self.args.flag_geth { self.geth_ipc_path() } else { Configuration::replace_home(&self.args.flag_ipcpath.clone().unwrap_or(self.args.flag_ipc_path.clone())) } } + + pub fn signer_port(&self) -> Option { + if self.args.flag_signer { + Some(self.args.flag_signer_port) + } else { + None + } + } } #[cfg(test)] diff --git a/parity/main.rs b/parity/main.rs index 58d5fe18e..0d536e28a 100644 --- a/parity/main.rs +++ b/parity/main.rs @@ -201,7 +201,7 @@ fn execute_client(conf: Configuration, spec: Spec, client_config: ClientConfig) let sync = EthSync::register(service.network(), sync_config, client.clone()); let deps_for_rpc_apis = Arc::new(rpc_apis::Dependencies { - signer_enabled: conf.args.flag_signer, + signer_port: conf.signer_port(), signer_queue: Arc::new(rpc_apis::ConfirmationsQueue::default()), client: client.clone(), sync: sync.clone(), @@ -244,7 +244,7 @@ fn execute_client(conf: Configuration, spec: Spec, client_config: ClientConfig) // Set up a signer let signer_server = signer::start(signer::Configuration { - enabled: deps_for_rpc_apis.signer_enabled, + enabled: deps_for_rpc_apis.signer_port.is_some(), port: conf.args.flag_signer_port, signer_path: conf.directories().signer, }, signer::Dependencies { diff --git a/parity/rpc_apis.rs b/parity/rpc_apis.rs index fea5d0135..e69a2751f 100644 --- a/parity/rpc_apis.rs +++ b/parity/rpc_apis.rs @@ -79,7 +79,7 @@ impl FromStr for Api { } pub struct Dependencies { - pub signer_enabled: bool, + pub signer_port: Option, pub signer_queue: Arc, pub client: Arc, pub sync: Arc, @@ -146,14 +146,14 @@ pub fn setup_rpc(server: T, deps: Arc, apis: ApiSet server.add_delegate(EthClient::new(&deps.client, &deps.sync, &deps.secret_store, &deps.miner, &deps.external_miner).to_delegate()); server.add_delegate(EthFilterClient::new(&deps.client, &deps.miner).to_delegate()); - if deps.signer_enabled { + if deps.signer_port.is_some() { server.add_delegate(EthSigningQueueClient::new(&deps.signer_queue).to_delegate()); } else { server.add_delegate(EthSigningUnsafeClient::new(&deps.client, &deps.secret_store, &deps.miner).to_delegate()); } }, Api::Personal => { - server.add_delegate(PersonalClient::new(&deps.secret_store, &deps.client, &deps.miner, deps.signer_enabled).to_delegate()); + server.add_delegate(PersonalClient::new(&deps.secret_store, &deps.client, &deps.miner, deps.signer_port.clone()).to_delegate()); }, Api::Signer => { server.add_delegate(SignerClient::new(&deps.secret_store, &deps.client, &deps.miner, &deps.signer_queue).to_delegate()); diff --git a/rpc/src/v1/impls/personal.rs b/rpc/src/v1/impls/personal.rs index bb570a4e0..c62c71453 100644 --- a/rpc/src/v1/impls/personal.rs +++ b/rpc/src/v1/impls/personal.rs @@ -31,18 +31,18 @@ pub struct PersonalClient accounts: Weak, client: Weak, miner: Weak, - signer_enabled: bool, + signer_port: Option, } impl PersonalClient where A: AccountProvider, C: MiningBlockChainClient, M: MinerService { /// Creates new PersonalClient - pub fn new(store: &Arc, client: &Arc, miner: &Arc, signer_enabled: bool) -> Self { + pub fn new(store: &Arc, client: &Arc, miner: &Arc, signer_port: Option) -> Self { PersonalClient { accounts: Arc::downgrade(store), client: Arc::downgrade(client), miner: Arc::downgrade(miner), - signer_enabled: signer_enabled, + signer_port: signer_port, } } } @@ -51,7 +51,9 @@ impl Personal for PersonalClient where A: AccountProvider, C: MiningBlockChainClient, M: MinerService { fn signer_enabled(&self, _: Params) -> Result { - to_value(&self.signer_enabled) + self.signer_port + .map(|v| to_value(&v)) + .unwrap_or_else(|| to_value(&false)) } fn accounts(&self, _: Params) -> Result { diff --git a/rpc/src/v1/tests/mocked/personal.rs b/rpc/src/v1/tests/mocked/personal.rs index 16d8e620f..02b07abd3 100644 --- a/rpc/src/v1/tests/mocked/personal.rs +++ b/rpc/src/v1/tests/mocked/personal.rs @@ -49,11 +49,11 @@ fn miner_service() -> Arc { Arc::new(TestMinerService::default()) } -fn setup() -> PersonalTester { +fn setup(signer: Option) -> PersonalTester { let accounts = accounts_provider(); let client = blockchain_client(); let miner = miner_service(); - let personal = PersonalClient::new(&accounts, &client, &miner, false); + let personal = PersonalClient::new(&accounts, &client, &miner, signer); let io = IoHandler::new(); io.add_delegate(personal.to_delegate()); @@ -71,7 +71,7 @@ fn setup() -> PersonalTester { #[test] fn should_return_false_if_signer_is_disabled() { // given - let tester = setup(); + let tester = setup(None); // when let request = r#"{"jsonrpc": "2.0", "method": "personal_signerEnabled", "params": [], "id": 1}"#; @@ -82,9 +82,23 @@ fn should_return_false_if_signer_is_disabled() { assert_eq!(tester.io.handle_request(request), Some(response.to_owned())); } +#[test] +fn should_return_port_number_if_signer_is_enabled() { + // given + let tester = setup(Some(8180)); + + // when + let request = r#"{"jsonrpc": "2.0", "method": "personal_signerEnabled", "params": [], "id": 1}"#; + let response = r#"{"jsonrpc":"2.0","result":8180,"id":1}"#; + + + // then + assert_eq!(tester.io.handle_request(request), Some(response.to_owned())); +} + #[test] fn accounts() { - let tester = setup(); + let tester = setup(None); tester.accounts.accounts .write() .unwrap() @@ -98,7 +112,7 @@ fn accounts() { #[test] fn new_account() { - let tester = setup(); + let tester = setup(None); let request = r#"{"jsonrpc": "2.0", "method": "personal_newAccount", "params": ["pass"], "id": 1}"#; let res = tester.io.handle_request(request); @@ -122,7 +136,7 @@ fn sign_and_send_transaction_with_invalid_password() { let account = TestAccount::new("password123"); let address = account.address(); - let tester = setup(); + let tester = setup(None); tester.accounts.accounts.write().unwrap().insert(address.clone(), account); let request = r#"{ "jsonrpc": "2.0", @@ -148,7 +162,7 @@ fn sign_and_send_transaction() { let address = account.address(); let secret = account.secret.clone(); - let tester = setup(); + let tester = setup(None); tester.accounts.accounts.write().unwrap().insert(address.clone(), account); let request = r#"{ "jsonrpc": "2.0",