diff --git a/parsers/ChangeLog b/parsers/ChangeLog index 216f8b617dcee1d2d83215dc57bc472d0093a86b..e7d123455888324cfcc4af34621947cc43ea6d9e 100644 --- a/parsers/ChangeLog +++ b/parsers/ChangeLog @@ -108,7 +108,8 @@ XXXX-YY-ZZ RELEASER - Push Notifications (XEP-0357) (!543) - JSON Containers (XEP-0335) (!546) * Improvements: - - Add support for ` in XEP-0198 feature advertisment + - Add support for `` and `` in XEP-0198 feature + advertisment. - Add support application-specific error conditions in XEP-0198 - Keep unsupported vCard elements as `minidom::Element`, so that they get serialized back instead of being dropped. We now also test for diff --git a/parsers/src/sasl2.rs b/parsers/src/sasl2.rs index 2312ca5fa7ece488b833d84b1c9d020e0599d28f..232da3f7502a69f999fc3968854990ea5fb93c9c 100644 --- a/parsers/src/sasl2.rs +++ b/parsers/src/sasl2.rs @@ -269,7 +269,13 @@ mod tests { let inline = auth.inline.unwrap(); assert_eq!(inline.bind2.unwrap().inline_features.len(), 0); - assert_eq!(inline.sm.unwrap(), StreamManagement { optional: false }); + assert_eq!( + inline.sm.unwrap(), + StreamManagement { + optional: false, + required: false + } + ); assert_eq!(inline.payloads.len(), 0); } diff --git a/parsers/src/sm.rs b/parsers/src/sm.rs index d9e1996250cd7a40b5bcb827ca7f60cb7f6c5cf8..9b258ba97f7e7f834670b04ee6d0c1f437692239 100644 --- a/parsers/src/sm.rs +++ b/parsers/src/sm.rs @@ -133,7 +133,7 @@ pub struct Resumed { pub previd: StreamId, } -// TODO: add support for optional and required. +// TODO: Only allow either optional or required, not both. /// Represents availability of Stream Management in ``. #[derive(FromXml, AsXml, PartialEq, Debug, Clone)] #[xml(namespace = ns::SM, name = "sm")] @@ -141,6 +141,10 @@ pub struct StreamManagement { /// `` flag. #[xml(flag)] pub optional: bool, + + /// `` flag. + #[xml(flag)] + pub required: bool, } /// Application-specific error condition to use when the peer acknowledges @@ -222,7 +226,7 @@ mod tests { assert_size!(R, 0); assert_size!(Resume, 16); assert_size!(Resumed, 16); - assert_size!(StreamManagement, 1); + assert_size!(StreamManagement, 2); assert_size!(HandledCountTooHigh, 8); } @@ -237,7 +241,7 @@ mod tests { assert_size!(R, 0); assert_size!(Resume, 32); assert_size!(Resumed, 32); - assert_size!(StreamManagement, 1); + assert_size!(StreamManagement, 2); assert_size!(HandledCountTooHigh, 8); } @@ -251,7 +255,9 @@ mod tests { #[test] fn stream_feature() { let elem: Element = "".parse().unwrap(); - StreamManagement::try_from(elem).unwrap(); + let sm = StreamManagement::try_from(elem).unwrap(); + assert_eq!(sm.optional, false); + assert_eq!(sm.required, false); } #[test]