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(
|
UP_UUID => Ok(Address::Uuid(
|
||||||
Uuid::from_slice(digest.as_slice()).map_err(UpEndError::from_any)?,
|
Uuid::from_slice(digest.as_slice()).map_err(UpEndError::from_any)?,
|
||||||
)),
|
)),
|
||||||
UP_ATTRIBUTE => Ok(Address::Attribute(
|
UP_ATTRIBUTE => {
|
||||||
String::from_utf8(digest)
|
let attribute = String::from_utf8(digest).map_err(UpEndError::from_any)?;
|
||||||
.map_err(UpEndError::from_any)?
|
if attribute.is_empty() {
|
||||||
.as_str()
|
Ok(Address::Attribute(Attribute::null()))
|
||||||
.parse()?,
|
} else {
|
||||||
)),
|
Ok(Address::Attribute(attribute.parse()?))
|
||||||
|
}
|
||||||
|
}
|
||||||
UP_URL => Ok(Address::Url(
|
UP_URL => Ok(Address::Url(
|
||||||
Url::parse(&String::from_utf8(digest).map_err(UpEndError::from_any)?)
|
Url::parse(&String::from_utf8(digest).map_err(UpEndError::from_any)?)
|
||||||
.map_err(UpEndError::from_any)?,
|
.map_err(UpEndError::from_any)?,
|
||||||
|
@ -255,6 +257,9 @@ mod tests {
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use crate::addressing::{Address, IDENTITY};
|
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 crate::hash::{LargeMultihash, UpMultihash};
|
||||||
|
|
||||||
use super::UpEndError;
|
use super::UpEndError;
|
||||||
|
@ -267,6 +272,11 @@ mod tests {
|
||||||
let encoded = addr.encode()?;
|
let encoded = addr.encode()?;
|
||||||
let decoded = Address::decode(&encoded)?;
|
let decoded = Address::decode(&encoded)?;
|
||||||
assert_eq!(addr, decoded);
|
assert_eq!(addr, decoded);
|
||||||
|
|
||||||
|
let addr = &*TYPE_HASH_ADDRESS;
|
||||||
|
let encoded = addr.encode()?;
|
||||||
|
let decoded = Address::decode(&encoded)?;
|
||||||
|
assert_eq!(addr, &decoded);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -276,6 +286,11 @@ mod tests {
|
||||||
let encoded = addr.encode()?;
|
let encoded = addr.encode()?;
|
||||||
let decoded = Address::decode(&encoded)?;
|
let decoded = Address::decode(&encoded)?;
|
||||||
assert_eq!(addr, decoded);
|
assert_eq!(addr, decoded);
|
||||||
|
|
||||||
|
let addr = &*TYPE_UUID_ADDRESS;
|
||||||
|
let encoded = addr.encode()?;
|
||||||
|
let decoded = Address::decode(&encoded)?;
|
||||||
|
assert_eq!(addr, &decoded);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -285,6 +300,11 @@ mod tests {
|
||||||
let encoded = addr.encode()?;
|
let encoded = addr.encode()?;
|
||||||
let decoded = Address::decode(&encoded)?;
|
let decoded = Address::decode(&encoded)?;
|
||||||
assert_eq!(addr, decoded);
|
assert_eq!(addr, decoded);
|
||||||
|
|
||||||
|
let addr = &*TYPE_ATTRIBUTE_ADDRESS;
|
||||||
|
let encoded = addr.encode()?;
|
||||||
|
let decoded = Address::decode(&encoded)?;
|
||||||
|
assert_eq!(addr, &decoded);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -294,6 +314,11 @@ mod tests {
|
||||||
let encoded = addr.encode()?;
|
let encoded = addr.encode()?;
|
||||||
let decoded = Address::decode(&encoded)?;
|
let decoded = Address::decode(&encoded)?;
|
||||||
assert_eq!(addr, decoded);
|
assert_eq!(addr, decoded);
|
||||||
|
|
||||||
|
let addr = &*TYPE_URL_ADDRESS;
|
||||||
|
let encoded = addr.encode()?;
|
||||||
|
let decoded = Address::decode(&encoded)?;
|
||||||
|
assert_eq!(addr, &decoded);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue