mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-26 09:13:41 +00:00
Add version http endpoint tests
This commit is contained in:
@@ -12,6 +12,7 @@ use types::{
|
|||||||
test_utils::generate_deterministic_keypair, BeaconBlock, ChainSpec, Domain, Epoch, EthSpec,
|
test_utils::generate_deterministic_keypair, BeaconBlock, ChainSpec, Domain, Epoch, EthSpec,
|
||||||
MinimalEthSpec, PublicKey, RelativeEpoch, Signature, Slot,
|
MinimalEthSpec, PublicKey, RelativeEpoch, Signature, Slot,
|
||||||
};
|
};
|
||||||
|
use version;
|
||||||
|
|
||||||
type E = MinimalEthSpec;
|
type E = MinimalEthSpec;
|
||||||
|
|
||||||
@@ -559,3 +560,18 @@ fn eth2_config() {
|
|||||||
"should match genesis time from head state"
|
"should match genesis time from head state"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn get_version() {
|
||||||
|
let mut env = build_env();
|
||||||
|
|
||||||
|
let node = LocalBeaconNode::production(env.core_context(), testing_client_config());
|
||||||
|
let remote_node = node.remote_node().expect("should produce remote node");
|
||||||
|
|
||||||
|
let version = env
|
||||||
|
.runtime()
|
||||||
|
.block_on(remote_node.http.node().get_version())
|
||||||
|
.expect("should fetch eth2 config from http api");
|
||||||
|
|
||||||
|
assert_eq!(version::version(), version, "result should be as expected");
|
||||||
|
}
|
||||||
|
|||||||
@@ -87,6 +87,10 @@ impl<E: EthSpec> HttpClient<E> {
|
|||||||
Spec(self.clone())
|
Spec(self.clone())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn node(&self) -> Node<E> {
|
||||||
|
Node(self.clone())
|
||||||
|
}
|
||||||
|
|
||||||
fn url(&self, path: &str) -> Result<Url, Error> {
|
fn url(&self, path: &str) -> Result<Url, Error> {
|
||||||
self.url.join(path).map_err(|e| e.into())
|
self.url.join(path).map_err(|e| e.into())
|
||||||
}
|
}
|
||||||
@@ -419,6 +423,26 @@ impl<E: EthSpec> Spec<E> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Provides the functions on the `/node` endpoint of the node.
|
||||||
|
#[derive(Clone)]
|
||||||
|
pub struct Node<E>(HttpClient<E>);
|
||||||
|
|
||||||
|
impl<E: EthSpec> Node<E> {
|
||||||
|
fn url(&self, path: &str) -> Result<Url, Error> {
|
||||||
|
self.0
|
||||||
|
.url("node/")
|
||||||
|
.and_then(move |url| url.join(path).map_err(Error::from))
|
||||||
|
.map_err(Into::into)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_version(&self) -> impl Future<Item = String, Error = Error> {
|
||||||
|
let client = self.0.clone();
|
||||||
|
self.url("version")
|
||||||
|
.into_future()
|
||||||
|
.and_then(move |url| client.json_get(url, vec![]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
#[serde(bound = "T: EthSpec")]
|
#[serde(bound = "T: EthSpec")]
|
||||||
pub struct BlockResponse<T: EthSpec> {
|
pub struct BlockResponse<T: EthSpec> {
|
||||||
|
|||||||
Reference in New Issue
Block a user