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 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] | ||||
|     fn test_check_url() { | ||||
|         let url = "http://test.com"; | ||||
| @@ -430,6 +447,17 @@ mod tests { | ||||
|         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] | ||||
|     fn test_parse_args() { | ||||
|         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] | ||||
|     fn test_validator_info_max_space() { | ||||
|         // 70-character string | ||||
|   | ||||
		Reference in New Issue
	
	Block a user