mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-14 10:22:38 +00:00
Implement graffiti management API (#4951)
* implement get graffiti * add set graffiti * add set graffiti * delete graffiti * set graffiti * set graffiti * fmt * added tests * add graffiti file check * update * fixed delete req * remove unused code * changes based on feedback * changes based on feedback * invalid auth test plus lint * fmt * remove unneeded async
This commit is contained in:
@@ -640,6 +640,49 @@ impl ApiTester {
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
pub async fn test_set_graffiti(self, index: usize, graffiti: &str) -> Self {
|
||||
let validator = &self.client.get_lighthouse_validators().await.unwrap().data[index];
|
||||
let graffiti_str = GraffitiString::from_str(graffiti).unwrap();
|
||||
let resp = self
|
||||
.client
|
||||
.set_graffiti(&validator.voting_pubkey, graffiti_str)
|
||||
.await;
|
||||
|
||||
assert!(resp.is_ok());
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
pub async fn test_delete_graffiti(self, index: usize) -> Self {
|
||||
let validator = &self.client.get_lighthouse_validators().await.unwrap().data[index];
|
||||
let resp = self.client.get_graffiti(&validator.voting_pubkey).await;
|
||||
|
||||
assert!(resp.is_ok());
|
||||
let old_graffiti = resp.unwrap().graffiti;
|
||||
|
||||
let resp = self.client.delete_graffiti(&validator.voting_pubkey).await;
|
||||
|
||||
assert!(resp.is_ok());
|
||||
|
||||
let resp = self.client.get_graffiti(&validator.voting_pubkey).await;
|
||||
|
||||
assert!(resp.is_ok());
|
||||
assert_ne!(old_graffiti, resp.unwrap().graffiti);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
pub async fn test_get_graffiti(self, index: usize, expected_graffiti: &str) -> Self {
|
||||
let validator = &self.client.get_lighthouse_validators().await.unwrap().data[index];
|
||||
let expected_graffiti_str = GraffitiString::from_str(expected_graffiti).unwrap();
|
||||
let resp = self.client.get_graffiti(&validator.voting_pubkey).await;
|
||||
|
||||
assert!(resp.is_ok());
|
||||
assert_eq!(&resp.unwrap().graffiti, &expected_graffiti_str.into());
|
||||
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
struct HdValidatorScenario {
|
||||
@@ -771,6 +814,20 @@ async fn routes_with_invalid_auth() {
|
||||
})
|
||||
.await
|
||||
})
|
||||
.await
|
||||
.test_with_invalid_auth(|client| async move {
|
||||
client.delete_graffiti(&PublicKeyBytes::empty()).await
|
||||
})
|
||||
.await
|
||||
.test_with_invalid_auth(|client| async move {
|
||||
client.get_graffiti(&PublicKeyBytes::empty()).await
|
||||
})
|
||||
.await
|
||||
.test_with_invalid_auth(|client| async move {
|
||||
client
|
||||
.set_graffiti(&PublicKeyBytes::empty(), GraffitiString::default())
|
||||
.await
|
||||
})
|
||||
.await;
|
||||
}
|
||||
|
||||
@@ -954,6 +1011,31 @@ async fn validator_graffiti() {
|
||||
.await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn validator_graffiti_api() {
|
||||
ApiTester::new()
|
||||
.await
|
||||
.create_hd_validators(HdValidatorScenario {
|
||||
count: 2,
|
||||
specify_mnemonic: false,
|
||||
key_derivation_path_offset: 0,
|
||||
disabled: vec![],
|
||||
})
|
||||
.await
|
||||
.assert_enabled_validators_count(2)
|
||||
.assert_validators_count(2)
|
||||
.set_graffiti(0, "Mr F was here")
|
||||
.await
|
||||
.test_get_graffiti(0, "Mr F was here")
|
||||
.await
|
||||
.test_set_graffiti(0, "Uncle Bill was here")
|
||||
.await
|
||||
.test_get_graffiti(0, "Uncle Bill was here")
|
||||
.await
|
||||
.test_delete_graffiti(0)
|
||||
.await;
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn keystore_validator_creation() {
|
||||
ApiTester::new()
|
||||
|
||||
Reference in New Issue
Block a user