use soup::MessageHeaders;
use soup::glib::translate::ToGlibPtr as _;
pub(crate) trait MessageHeadersExt {
fn contains(&self, name: &str) -> bool;
}
impl MessageHeadersExt for MessageHeaders {
fn contains(&self, name: &str) -> bool {
let value = unsafe {
soup::ffi::soup_message_headers_get_one(self.to_glib_none().0, name.to_glib_none().0)
};
!value.is_null()
}
}
#[cfg(test)]
mod tests {
use super::*;
use soup::MessageHeadersType;
const HEADER: &str = "X-Test-Header";
#[test]
fn contains_returns_false_when_header_is_missing() {
let headers = MessageHeaders::new(MessageHeadersType::Request);
assert!(!headers.contains(HEADER));
}
#[test]
fn contains_returns_true_when_header_is_present_with_one_value() {
let headers = MessageHeaders::new(MessageHeadersType::Request);
headers.append(HEADER, "foo");
assert!(headers.contains(HEADER));
}
#[test]
fn contains_returns_true_when_header_is_present_with_multiple_values() {
let headers = MessageHeaders::new(MessageHeadersType::Request);
headers.append(HEADER, "foo");
headers.append(HEADER, "bar");
assert!(headers.contains(HEADER));
}
}