Test some validator_info error paths (#20635)
* Test some validator_info error paths * Fix a linting issue * Improve test robustness by removing magic numbers
This commit is contained in:
@ -412,6 +412,23 @@ mod tests {
|
|||||||
use bincode::{serialize, serialized_size};
|
use bincode::{serialize, serialized_size};
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_check_details_length() {
|
||||||
|
let short_details = (0..MAX_LONG_FIELD_LENGTH).map(|_| "X").collect::<String>();
|
||||||
|
assert_eq!(check_details_length(short_details), Ok(()));
|
||||||
|
|
||||||
|
let long_details = (0..MAX_LONG_FIELD_LENGTH + 1)
|
||||||
|
.map(|_| "X")
|
||||||
|
.collect::<String>();
|
||||||
|
assert_eq!(
|
||||||
|
check_details_length(long_details),
|
||||||
|
Err(format!(
|
||||||
|
"validator details longer than {:?}-byte limit",
|
||||||
|
MAX_LONG_FIELD_LENGTH
|
||||||
|
))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_check_url() {
|
fn test_check_url() {
|
||||||
let url = "http://test.com";
|
let url = "http://test.com";
|
||||||
@ -430,6 +447,17 @@ mod tests {
|
|||||||
assert!(is_short_field(long_name.to_string()).is_err());
|
assert!(is_short_field(long_name.to_string()).is_err());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_verify_keybase_username_not_string() {
|
||||||
|
let pubkey = solana_sdk::pubkey::new_rand();
|
||||||
|
let value = Value::Bool(true);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
verify_keybase(&pubkey, &value).unwrap_err().to_string(),
|
||||||
|
"keybase_username could not be parsed as String: true".to_string()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_parse_args() {
|
fn test_parse_args() {
|
||||||
let matches = get_clap_app("test", "desc", "version").get_matches_from(vec![
|
let matches = get_clap_app("test", "desc", "version").get_matches_from(vec![
|
||||||
@ -507,6 +535,41 @@ mod tests {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_parse_validator_info_not_validator_info_account() {
|
||||||
|
assert!(parse_validator_info(
|
||||||
|
&Pubkey::default(),
|
||||||
|
&Account {
|
||||||
|
owner: solana_sdk::pubkey::new_rand(),
|
||||||
|
..Account::default()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.unwrap_err()
|
||||||
|
.to_string()
|
||||||
|
.contains("is not a validator info account"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_parse_validator_info_empty_key_list() {
|
||||||
|
let config = ConfigKeys { keys: vec![] };
|
||||||
|
let validator_info = ValidatorInfo {
|
||||||
|
info: String::new(),
|
||||||
|
};
|
||||||
|
let data = serialize(&(config, validator_info)).unwrap();
|
||||||
|
|
||||||
|
assert!(parse_validator_info(
|
||||||
|
&Pubkey::default(),
|
||||||
|
&Account {
|
||||||
|
owner: solana_config_program::id(),
|
||||||
|
data,
|
||||||
|
..Account::default()
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.unwrap_err()
|
||||||
|
.to_string()
|
||||||
|
.contains("could not be parsed as a validator info account"));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_validator_info_max_space() {
|
fn test_validator_info_max_space() {
|
||||||
// 70-character string
|
// 70-character string
|
||||||
|
Reference in New Issue
Block a user