From 6399b1c8e55e997122077e965a7e8acb71e15d20 Mon Sep 17 00:00:00 2001 From: debris Date: Fri, 25 Aug 2017 15:01:47 +0200 Subject: [PATCH] tests for relay --- Cargo.lock | 1 + bridge/Cargo.toml | 1 + bridge/src/bridge/deposit_relay.rs | 26 ++++++++++++++++++++ bridge/src/lib.rs | 1 + tests/tests/deposit_relay.rs | 38 ++++++++++++++++++++++++++++++ 5 files changed, 67 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 9588dcc..cbd7b73 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -81,6 +81,7 @@ dependencies = [ "ethabi-contract 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethabi-derive 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-core 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/bridge/Cargo.toml b/bridge/Cargo.toml index a43478e..4b5fbe9 100644 --- a/bridge/Cargo.toml +++ b/bridge/Cargo.toml @@ -15,3 +15,4 @@ error-chain = "0.11.0-rc.2" ethabi = "4.0" ethabi-derive = "4.0" ethabi-contract = "4.0" +rustc-hex = "1.0" diff --git a/bridge/src/bridge/deposit_relay.rs b/bridge/src/bridge/deposit_relay.rs index ebc3a15..92d78e0 100644 --- a/bridge/src/bridge/deposit_relay.rs +++ b/bridge/src/bridge/deposit_relay.rs @@ -108,3 +108,29 @@ impl Stream for DepositRelay { } } } + +#[cfg(test)] +mod tests { + use rustc_hex::FromHex; + use web3::types::{Log, Bytes}; + use contracts::{mainnet, testnet}; + use super::deposit_relay_payload; + + #[test] + fn test_deposit_relay_payload() { + let mainnet = mainnet::EthereumBridge::default(); + let testnet = testnet::KovanBridge::default(); + + let data = "000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebcccc00000000000000000000000000000000000000000000000000000000000000f0".from_hex().unwrap(); + let log = Log { + data: data.into(), + topics: vec!["0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c".parse().unwrap()], + transaction_hash: Some("0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364".parse().unwrap()), + ..Default::default() + }; + + let payload = deposit_relay_payload(&mainnet, &testnet, log).unwrap(); + let expected: Bytes = "26b3293f000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebcccc00000000000000000000000000000000000000000000000000000000000000f0884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364".from_hex().unwrap().into(); + assert_eq!(expected, payload); + } +} diff --git a/bridge/src/lib.rs b/bridge/src/lib.rs index e4be8ba..91838a3 100644 --- a/bridge/src/lib.rs +++ b/bridge/src/lib.rs @@ -14,6 +14,7 @@ extern crate ethabi; extern crate ethabi_derive; #[macro_use] extern crate ethabi_contract; +extern crate rustc_hex; #[macro_use] mod macros; diff --git a/tests/tests/deposit_relay.rs b/tests/tests/deposit_relay.rs index a241345..df4af35 100644 --- a/tests/tests/deposit_relay.rs +++ b/tests/tests/deposit_relay.rs @@ -38,3 +38,41 @@ test_app_stream! { ], testnet_transport => [] } + +test_app_stream! { + name => deposit_relay_single_log, + database => Database::default(), + mainnet => + account => "0x0000000000000000000000000000000000000001", + confirmations => 12; + testnet => + account => "0x0000000000000000000000000000000000000001", + confirmations => 12; + authorities => + accounts => [ + "0x0000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000002", + ], + signatures => 1; + init => |app, db| create_deposit_relay(app, db).take(2), + expected => vec![0x1005, 0x1006], + mainnet_transport => [ + "eth_blockNumber" => + req => r#"[]"#, + res => r#""0x1011""#; + "eth_getLogs" => + req => r#"[{"address":["0x0000000000000000000000000000000000000000"],"fromBlock":"0x1","limit":null,"toBlock":"0x1005","topics":[["0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c"],[],[],[]]}]"#, + res => r#"[{"address":"0x0000000000000000000000000000000000000000","topics":["0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c"],"data":"0x000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebcccc00000000000000000000000000000000000000000000000000000000000000f0","type":"","transactionHash":"0x884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364"}]"#; + "eth_blockNumber" => + req => r#"[]"#, + res => r#""0x1012""#; + "eth_getLogs" => + req => r#"[{"address":["0x0000000000000000000000000000000000000000"],"fromBlock":"0x1006","limit":null,"toBlock":"0x1006","topics":[["0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c"],[],[],[]]}]"#, + res => r#"[]"#; + ], + testnet_transport => [ + "eth_sendTransaction" => + req => r#"[{"data":"0x26b3293f000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebcccc00000000000000000000000000000000000000000000000000000000000000f0884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364","from":"0x0000000000000000000000000000000000000001","gas":"0x0","gasPrice":"0x0","to":"0x0000000000000000000000000000000000000000"}]"#, + res => r#""0x1db8f385535c0d178b8f40016048f3a3cffee8f94e68978ea4b277f57b638f0b""#; + ] +}