Fixes to the validator sets RPC

This commit is contained in:
Luke Parker
2025-11-14 11:16:29 -05:00
parent 556d294157
commit 09113201e7
6 changed files with 23 additions and 14 deletions

View File

@@ -109,10 +109,10 @@ impl Serai {
Response { result: None, error: Some(error) } => {
Err(RpcError::ErrorInResponse(error.message))
}
Response { result: Some(_), error: Some(_) } | Response { result: None, error: None } => {
Err(RpcError::InvalidNode(
"node didn't exclusively provide either `result` or `error`".to_string(),
))
// TODO: https://github.com/core-json/core-json/issues/18
Response { result: None, error: None } => Ok(Default::default()),
Response { result: Some(_), error: Some(_) } => {
Err(RpcError::InvalidNode("node didn't provided both `result` and `error`".to_string()))
}
}
}

View File

@@ -128,7 +128,7 @@ impl<'a> ValidatorSets<'a> {
.call::<Option<String>>(
"validator-sets/keys",
&format!(
r#", "set": {{ "network": {}, "session": {} }} "#,
r#", "network": {}, "session": {} "#,
rpc_network(set.network)?,
set.session.0
),

View File

@@ -131,14 +131,22 @@ async fn validator_sets() {
serai.as_of(serai.block_by_number(0).await.unwrap().header.hash()).await.unwrap();
let serai = serai.validator_sets();
for network in NetworkId::all() {
assert_eq!(serai.current_session(network).await.unwrap(), Some(Session(0)));
assert_eq!(serai.current_stake(network).await.unwrap(), Some(Amount(0)));
match network {
NetworkId::Serai => {}
NetworkId::External(network) => assert_eq!(
serai.keys(ExternalValidatorSet { network, session: Session(0) }).await.unwrap(),
None
),
NetworkId::Serai => {
assert_eq!(serai.current_session(network).await.unwrap(), Some(Session(0)));
assert_eq!(serai.current_stake(network).await.unwrap(), Some(Amount(0)));
}
NetworkId::External(external) => {
assert!(serai.current_session(network).await.unwrap().is_none());
assert!(serai.current_stake(network).await.unwrap().is_none());
assert_eq!(
serai
.keys(ExternalValidatorSet { network: external, session: Session(0) })
.await
.unwrap(),
None
);
}
}
}
}