diff --git a/doap.xml b/doap.xml index f591bfff..3320bfa7 100644 --- a/doap.xml +++ b/doap.xml @@ -235,7 +235,7 @@ complete - 1.3.0 + 1.4.0 0.1.0 diff --git a/src/avatar.rs b/src/avatar.rs index e5c09d2a..0940c33a 100644 --- a/src/avatar.rs +++ b/src/avatar.rs @@ -58,6 +58,7 @@ impl PubSubPayload for Data {} mod tests { use super::*; use crate::hashes::Algo; + #[cfg(not(feature = "disable-validation"))] use crate::util::error::Error; use minidom::Element; use std::convert::TryFrom; diff --git a/src/receipts.rs b/src/receipts.rs index 3b54d3cd..af40f641 100644 --- a/src/receipts.rs +++ b/src/receipts.rs @@ -22,7 +22,7 @@ generate_element!( Received, "received", RECEIPTS, attributes: [ /// The 'id' attribute of the received message. - id: Option = "id", + id: Required = "id", ] ); @@ -34,6 +34,7 @@ mod tests { use crate::ns; use minidom::Element; use std::convert::TryFrom; + use crate::util::error::Error; #[cfg(target_pointer_width = "32")] #[test] @@ -54,15 +55,23 @@ mod tests { let elem: Element = "".parse().unwrap(); Request::try_from(elem).unwrap(); - let elem: Element = "".parse().unwrap(); - Received::try_from(elem).unwrap(); - let elem: Element = "" .parse() .unwrap(); Received::try_from(elem).unwrap(); } + #[test] + fn test_missing_id() { + let elem: Element = "".parse().unwrap(); + let error = Received::try_from(elem).unwrap_err(); + let message = match error { + Error::ParseError(string) => string, + _ => panic!(), + }; + assert_eq!(message, "Required attribute 'id' missing."); + } + #[test] fn test_serialise() { let receipt = Request; @@ -71,7 +80,7 @@ mod tests { assert_eq!(elem.attrs().count(), 0); let receipt = Received { - id: Some(String::from("coucou")), + id: String::from("coucou"), }; let elem: Element = receipt.into(); assert!(elem.is("received", ns::RECEIPTS));