diff --git a/ethcore/src/client.rs b/ethcore/src/client.rs index 26535c46c..9b11bd408 100644 --- a/ethcore/src/client.rs +++ b/ethcore/src/client.rs @@ -350,7 +350,7 @@ impl BlockChainClient for Client { fn block_body(&self, hash: &H256) -> Option { self.chain.read().unwrap().block(hash).map(|bytes| { let rlp = Rlp::new(&bytes); - let mut body = RlpStream::new(); + let mut body = RlpStream::new_list(2); body.append_raw(rlp.at(1).as_raw(), 1); body.append_raw(rlp.at(2).as_raw(), 1); body.out() diff --git a/ethcore/src/tests/client.rs b/ethcore/src/tests/client.rs index 697647187..b379f683e 100644 --- a/ethcore/src/tests/client.rs +++ b/ethcore/src/tests/client.rs @@ -76,6 +76,19 @@ fn returns_chain_info() { assert_eq!(info.best_block_hash, block.header().hash()); } +#[test] +fn returns_block_body() { + let dummy_block = get_good_dummy_block(); + let client_result = get_test_client_with_blocks(vec![dummy_block.clone()]); + let client = client_result.reference(); + let block = BlockView::new(&dummy_block); + let body = client.block_body(&block.header().hash()).unwrap(); + let body = Rlp::new(&body); + assert_eq!(body.item_count(), 2); + assert_eq!(body.at(0).as_raw()[..], block.rlp().at(1).as_raw()[..]); + assert_eq!(body.at(1).as_raw()[..], block.rlp().at(2).as_raw()[..]); +} + #[test] fn imports_block_sequence() { let client_result = generate_dummy_client(6);