aboutsummaryrefslogtreecommitdiff
path: root/tests/table.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/table.rs')
-rw-r--r--tests/table.rs61
1 files changed, 29 insertions, 32 deletions
diff --git a/tests/table.rs b/tests/table.rs
index 971d58b..d8a5f1e 100644
--- a/tests/table.rs
+++ b/tests/table.rs
@@ -1,7 +1,9 @@
-use std::ffi::CStr;
-
mod sys;
-use rustables::{query::get_operation_from_nlmsghdr_type, MsgType};
+use rustables::{
+ nlmsg::NfNetlinkObject,
+ parser::{get_operation_from_nlmsghdr_type, nft_nlmsg_maxsize},
+ MsgType, Table,
+};
use sys::*;
mod lib;
@@ -10,61 +12,56 @@ use lib::*;
#[test]
fn new_empty_table() {
let mut table = get_test_table();
- let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg(&mut table);
+ let mut buf = Vec::with_capacity(nft_nlmsg_maxsize() as usize);
+ let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg(&mut buf, &mut table);
assert_eq!(
get_operation_from_nlmsghdr_type(nlmsghdr.nlmsg_type),
NFT_MSG_NEWTABLE as u8
);
assert_eq!(nlmsghdr.nlmsg_len, 44);
- assert_eq!(
- raw_expr,
- NetlinkExpr::List(vec![
- NetlinkExpr::Final(NFTA_TABLE_NAME, TABLE_NAME.to_vec()),
- NetlinkExpr::Final(NFTA_TABLE_FLAGS, 0u32.to_be_bytes().to_vec()),
- ])
- .to_raw()
- );
+ assert_eq!(raw_expr, get_test_table_raw_expr().to_raw());
}
#[test]
fn new_empty_table_with_userdata() {
let mut table = get_test_table();
- table.set_userdata(CStr::from_bytes_with_nul(TABLE_USERDATA).unwrap());
- let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg(&mut table);
+ table.set_userdata(TABLE_USERDATA.as_bytes().to_vec());
+ let mut buf = Vec::with_capacity(nft_nlmsg_maxsize() as usize);
+ let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg(&mut buf, &mut table);
assert_eq!(
get_operation_from_nlmsghdr_type(nlmsghdr.nlmsg_type),
NFT_MSG_NEWTABLE as u8
);
assert_eq!(nlmsghdr.nlmsg_len, 64);
- assert_eq!(
- raw_expr,
- NetlinkExpr::List(vec![
- NetlinkExpr::Final(NFTA_TABLE_NAME, TABLE_NAME.to_vec()),
- NetlinkExpr::Final(NFTA_TABLE_FLAGS, 0u32.to_be_bytes().to_vec()),
- NetlinkExpr::Final(NFTA_TABLE_USERDATA, TABLE_USERDATA.to_vec())
- ])
- .to_raw()
- );
+ assert_eq!(raw_expr, get_test_table_with_userdata_raw_expr().to_raw());
}
#[test]
fn delete_empty_table() {
let mut table = get_test_table();
- let (nlmsghdr, _nfgenmsg, raw_expr) = get_test_nlmsg_with_msg_type(&mut table, MsgType::Del);
+ let mut buf = Vec::with_capacity(nft_nlmsg_maxsize() as usize);
+ let (nlmsghdr, _nfgenmsg, raw_expr) =
+ get_test_nlmsg_with_msg_type(&mut buf, &mut table, MsgType::Del);
assert_eq!(
get_operation_from_nlmsghdr_type(nlmsghdr.nlmsg_type),
NFT_MSG_DELTABLE as u8
);
assert_eq!(nlmsghdr.nlmsg_len, 44);
- assert_eq!(
- raw_expr,
- NetlinkExpr::List(vec![
- NetlinkExpr::Final(NFTA_TABLE_NAME, TABLE_NAME.to_vec()),
- NetlinkExpr::Final(NFTA_TABLE_FLAGS, 0u32.to_be_bytes().to_vec()),
- ])
- .to_raw()
- );
+ assert_eq!(raw_expr, get_test_table_raw_expr().to_raw());
+}
+
+#[test]
+fn parse_table() {
+ let mut table = get_test_table();
+ table.set_userdata(TABLE_USERDATA.as_bytes().to_vec());
+ let mut buf = Vec::with_capacity(nft_nlmsg_maxsize() as usize);
+ let (_nlmsghdr, _nfgenmsg, _raw_expr) = get_test_nlmsg(&mut buf, &mut table);
+
+ let (deserialized_table, remaining) =
+ Table::deserialize(&buf).expect("Couldn't deserialize the object");
+ assert_eq!(table, deserialized_table);
+ assert_eq!(remaining.len(), 0);
}