v0.5.2-pre.006
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: ks-config/src/settings.rs
|
||||
// version: 23
|
||||
// version: 24
|
||||
|
||||
//! Resolved runtime configuration models retained during the `0.5.1` source-document split.
|
||||
|
||||
@@ -226,6 +226,8 @@ pub struct WalletConfig {
|
||||
pub wallet_dir: std::string::String,
|
||||
/// Selected cluster name.
|
||||
pub cluster: std::string::String,
|
||||
/// Optional persistent native wallet alias selected by this profile.
|
||||
pub wallet_alias: std::option::Option<std::string::String>,
|
||||
/// Enables the managed temporary wallet for this profile.
|
||||
pub temporary_wallet_enabled: bool,
|
||||
/// Alias used for the managed temporary wallet.
|
||||
@@ -736,7 +738,13 @@ pub(crate) fn validate_wallet(config: &WalletConfig) -> ks_core::Result<()> {
|
||||
std::result::Result::Ok(()) => (),
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
}
|
||||
match validate_wallet_alias(&config.temporary_wallet_alias) {
|
||||
if let std::option::Option::Some(alias) = config.wallet_alias.as_deref() {
|
||||
match validate_wallet_alias(alias, "wallet.wallet_alias") {
|
||||
std::result::Result::Ok(()) => (),
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
}
|
||||
}
|
||||
match validate_wallet_alias(&config.temporary_wallet_alias, "wallet.temporary_wallet_alias") {
|
||||
std::result::Result::Ok(()) => (),
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
}
|
||||
@@ -755,11 +763,11 @@ pub(crate) fn validate_wallet(config: &WalletConfig) -> ks_core::Result<()> {
|
||||
return std::result::Result::Ok(());
|
||||
}
|
||||
|
||||
fn validate_wallet_alias(value: &str) -> ks_core::Result<()> {
|
||||
pub(crate) fn validate_wallet_alias(value: &str, field: &str) -> ks_core::Result<()> {
|
||||
if value.is_empty() || value.len() > 64 {
|
||||
return std::result::Result::Err(ks_core::Error::new(
|
||||
"wallet_alias_length_invalid",
|
||||
"temporary wallet alias length must be between 1 and 64 bytes",
|
||||
format!("{field} length must be between 1 and 64 bytes"),
|
||||
));
|
||||
}
|
||||
if !value.bytes().enumerate().all(|(index, byte)| {
|
||||
@@ -767,7 +775,7 @@ fn validate_wallet_alias(value: &str) -> ks_core::Result<()> {
|
||||
}) {
|
||||
return std::result::Result::Err(ks_core::Error::new(
|
||||
"wallet_alias_invalid",
|
||||
"temporary wallet alias contains invalid characters",
|
||||
format!("{field} contains invalid characters"),
|
||||
));
|
||||
}
|
||||
return std::result::Result::Ok(());
|
||||
@@ -1016,6 +1024,16 @@ mod tests {
|
||||
assert!(result.is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parser_rejects_invalid_persistent_wallet_alias() {
|
||||
let mut value = parse_default_value();
|
||||
value["profiles"][0]["wallet"]["wallet_alias"] =
|
||||
serde_json::Value::String("../wallet".to_string());
|
||||
let raw_json = value_to_json(&value);
|
||||
let result = super::parse_config_json(&raw_json);
|
||||
assert!(result.is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parser_rejects_invalid_temporary_wallet_alias() {
|
||||
let mut value = parse_default_value();
|
||||
|
||||
Reference in New Issue
Block a user