Skip to content

Commit

Permalink
Add more abci tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ethanoroshiba committed Oct 2, 2024
1 parent 95f2dcb commit 9c49e9a
Showing 1 changed file with 75 additions and 2 deletions.
77 changes: 75 additions & 2 deletions crates/astria-sequencer/src/authority/query.rs
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,6 @@ mod tests {
let verification_key = verification_key(1);
let key_address = *verification_key.clone().address_bytes();
let validator_name = "test".to_string();

let inner_update = ValidatorUpdate {
power: 100,
verification_key,
Expand Down Expand Up @@ -188,12 +187,86 @@ mod tests {
height: 0u32.into(),
prove: false,
};

let params = vec![("address".to_string(), hex::encode(key_address))];

let rsp = validator_name_request(storage.clone(), query, params).await;
assert_eq!(rsp.code, 0.into(), "{}", rsp.log);
assert_eq!(rsp.key, "path".as_bytes());
assert_eq!(rsp.value, validator_name);
}

#[tokio::test]
async fn validator_name_request_fails_if_not_in_validator_set() {
let storage = cnidarium::TempStorage::new().await.unwrap();
let snapshot = storage.latest_snapshot();
let mut state = StateDelta::new(snapshot);

let verification_key = verification_key(1);

let query = request::Query {
data: vec![].into(),
path: "path".to_string(),
height: 0u32.into(),
prove: false,
};

// Use a different address than the one submitted to the validator set
let params = vec![("address".to_string(), hex::encode([0u8; 20]))];

let inner_update = ValidatorUpdate {
power: 100,
verification_key,
};

let rsp = validator_name_request(storage.clone(), query.clone(), params.clone()).await;
assert_eq!(rsp.code, 3.into(), "{}", rsp.log); // AbciErrorCode::INTERNAL_ERROR
let err_msg = "failed to get validator set: validator set not found";
assert_eq!(rsp.log, err_msg);

let inner_validator_map = BTreeMap::new();
let mut validator_set = ValidatorSet::new(inner_validator_map);
assert_eq!(validator_set.len(), 0);
validator_set.push_update(inner_update);
state.put_validator_set(validator_set).unwrap();
storage.commit(state).await.unwrap();

let rsp = validator_name_request(storage.clone(), query, params).await;
assert_eq!(rsp.code, 8.into(), "{}", rsp.log); // AbciErrorCode::VALUE_NOT_FOUND
let err_msg = "validator address not found in validator set";
assert_eq!(rsp.log, err_msg);
}

#[tokio::test]
async fn validator_name_request_fails_if_validator_has_no_name() {
let storage = cnidarium::TempStorage::new().await.unwrap();
let snapshot = storage.latest_snapshot();
let mut state = StateDelta::new(snapshot);

let verification_key = verification_key(1);
let key_address = *verification_key.clone().address_bytes();
let inner_update = ValidatorUpdate {
power: 100,
verification_key,
};

let inner_validator_map = BTreeMap::new();
let mut validator_set = ValidatorSet::new(inner_validator_map);
assert_eq!(validator_set.len(), 0);
validator_set.push_update(inner_update);
state.put_validator_set(validator_set).unwrap();
storage.commit(state).await.unwrap();

let query = request::Query {
data: vec![].into(),
path: "path".to_string(),
height: 0u32.into(),
prove: false,
};

let params = vec![("address".to_string(), hex::encode(key_address))];
let rsp = validator_name_request(storage.clone(), query, params).await;
assert_eq!(rsp.code, 8.into(), "{}", rsp.log); // AbciErrorCode::VALUE_NOT_FOUND
let err_msg = "validator address exists but does not have a name";
assert_eq!(rsp.log, err_msg);
}
}

0 comments on commit 9c49e9a

Please sign in to comment.