fix(base): null attribute deserializes correctly
also add type address de/serialization testsfeat/users
parent
4d8ac0717d
commit
730cc02d7a
|
@ -103,12 +103,14 @@ impl Address {
|
|||
UP_UUID => Ok(Address::Uuid(
|
||||
Uuid::from_slice(digest.as_slice()).map_err(UpEndError::from_any)?,
|
||||
)),
|
||||
UP_ATTRIBUTE => Ok(Address::Attribute(
|
||||
String::from_utf8(digest)
|
||||
.map_err(UpEndError::from_any)?
|
||||
.as_str()
|
||||
.parse()?,
|
||||
)),
|
||||
UP_ATTRIBUTE => {
|
||||
let attribute = String::from_utf8(digest).map_err(UpEndError::from_any)?;
|
||||
if attribute.is_empty() {
|
||||
Ok(Address::Attribute(Attribute::null()))
|
||||
} else {
|
||||
Ok(Address::Attribute(attribute.parse()?))
|
||||
}
|
||||
}
|
||||
UP_URL => Ok(Address::Url(
|
||||
Url::parse(&String::from_utf8(digest).map_err(UpEndError::from_any)?)
|
||||
.map_err(UpEndError::from_any)?,
|
||||
|
@ -255,6 +257,9 @@ mod tests {
|
|||
use uuid::Uuid;
|
||||
|
||||
use crate::addressing::{Address, IDENTITY};
|
||||
use crate::constants::{
|
||||
TYPE_ATTRIBUTE_ADDRESS, TYPE_HASH_ADDRESS, TYPE_URL_ADDRESS, TYPE_UUID_ADDRESS,
|
||||
};
|
||||
use crate::hash::{LargeMultihash, UpMultihash};
|
||||
|
||||
use super::UpEndError;
|
||||
|
@ -267,6 +272,11 @@ mod tests {
|
|||
let encoded = addr.encode()?;
|
||||
let decoded = Address::decode(&encoded)?;
|
||||
assert_eq!(addr, decoded);
|
||||
|
||||
let addr = &*TYPE_HASH_ADDRESS;
|
||||
let encoded = addr.encode()?;
|
||||
let decoded = Address::decode(&encoded)?;
|
||||
assert_eq!(addr, &decoded);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -276,6 +286,11 @@ mod tests {
|
|||
let encoded = addr.encode()?;
|
||||
let decoded = Address::decode(&encoded)?;
|
||||
assert_eq!(addr, decoded);
|
||||
|
||||
let addr = &*TYPE_UUID_ADDRESS;
|
||||
let encoded = addr.encode()?;
|
||||
let decoded = Address::decode(&encoded)?;
|
||||
assert_eq!(addr, &decoded);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -285,6 +300,11 @@ mod tests {
|
|||
let encoded = addr.encode()?;
|
||||
let decoded = Address::decode(&encoded)?;
|
||||
assert_eq!(addr, decoded);
|
||||
|
||||
let addr = &*TYPE_ATTRIBUTE_ADDRESS;
|
||||
let encoded = addr.encode()?;
|
||||
let decoded = Address::decode(&encoded)?;
|
||||
assert_eq!(addr, &decoded);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -294,6 +314,11 @@ mod tests {
|
|||
let encoded = addr.encode()?;
|
||||
let decoded = Address::decode(&encoded)?;
|
||||
assert_eq!(addr, decoded);
|
||||
|
||||
let addr = &*TYPE_URL_ADDRESS;
|
||||
let encoded = addr.encode()?;
|
||||
let decoded = Address::decode(&encoded)?;
|
||||
assert_eq!(addr, &decoded);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue