pubsub/event: Remove invalid empty items.

Emmanuel Gil Peyrot created

Change summary

src/pubsub/event.rs | 22 +++++++---------------
1 file changed, 7 insertions(+), 15 deletions(-)

Detailed changes

src/pubsub/event.rs 🔗

@@ -69,9 +69,6 @@ pub enum PubSubEvent {
         node: NodeName,
         redirect: Option<String>,
     },
-    EmptyItems {
-        node: NodeName,
-    },
     PublishedItems {
         node: NodeName,
         items: Vec<Item>,
@@ -119,9 +116,9 @@ fn parse_items(elem: Element, node: NodeName) -> Result<PubSubEvent, Error> {
         }
     }
     Ok(match is_retract {
-        None => PubSubEvent::EmptyItems { node },
         Some(false) => PubSubEvent::PublishedItems { node, items },
         Some(true) => PubSubEvent::RetractedItems { node, items: retracts },
+        None => return Err(Error::ParseError("Missing children in items element.")),
     })
 }
 
@@ -204,12 +201,6 @@ impl From<PubSubEvent> for Element {
                          }))
                         .build()
             },
-            PubSubEvent::EmptyItems { node } => {
-                Element::builder("items")
-                        .ns(ns::PUBSUB_EVENT)
-                        .attr("node", node)
-                        .build()
-            },
             PubSubEvent::PublishedItems { node, items } => {
                 Element::builder("items")
                         .ns(ns::PUBSUB_EVENT)
@@ -260,13 +251,14 @@ mod tests {
     use compare_elements::NamespaceAwareCompare;
 
     #[test]
-    fn test_simple() {
+    fn missing_items() {
         let elem: Element = "<event xmlns='http://jabber.org/protocol/pubsub#event'><items node='coucou'/></event>".parse().unwrap();
-        let event = PubSubEvent::try_from(elem).unwrap();
-        match event {
-            PubSubEvent::EmptyItems { node } => assert_eq!(node, NodeName(String::from("coucou"))),
+        let error = PubSubEvent::try_from(elem).unwrap_err();
+        let message = match error {
+            Error::ParseError(string) => string,
             _ => panic!(),
-        }
+        };
+        assert_eq!(message, "Missing children in items element.");
     }
 
     #[test]