fix empty string value handling

feat/vaults
Tomáš Mládek 2022-02-13 12:28:15 +01:00
parent 44ac8ab84d
commit e81d520993
No known key found for this signature in database
GPG Key ID: 65E225C8B3E2ED8A
1 changed files with 11 additions and 2 deletions

View File

@ -151,7 +151,7 @@ impl EntryValue {
EntryValue::String(value) => ('S', value.to_owned()),
EntryValue::Number(n) => ('N', n.to_string()),
EntryValue::Address(address) => ('O', address.to_string()),
EntryValue::Invalid => return Err(anyhow!("Cannot serialize invalid Entity value.")),
EntryValue::Invalid => return Err(anyhow!("Cannot serialize invalid value.")),
};
Ok(format!("{}{}", type_char, content))
@ -175,7 +175,11 @@ impl std::str::FromStr for EntryValue {
fn from_str(s: &str) -> Result<Self, Self::Err> {
if s.len() < 2 {
Ok(EntryValue::Invalid)
if s.starts_with('S') {
Ok(EntryValue::String("".into()))
} else {
Ok(EntryValue::Invalid)
}
} else {
let (type_char, content) = s.split_at(1);
match (type_char, content) {
@ -228,6 +232,11 @@ mod tests {
let decoded = encoded.parse::<EntryValue>()?;
assert_eq!(entry, decoded);
let entry = EntryValue::String("".to_string());
let encoded = entry.to_string()?;
let decoded = encoded.parse::<EntryValue>()?;
assert_eq!(entry, decoded);
Ok(())
}
}