aboutsummaryrefslogtreecommitdiff
path: root/src/message/signalproxy/objects/ircuser.rs
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2021-01-21 14:57:41 +0100
committerMax Audron <audron@cocaine.farm>2021-01-21 14:57:41 +0100
commit6a6b1197f4ebc826c6b15eb3ca7f9e3efca1be19 (patch)
tree2e6771af51fe1aec0da0e5d44b2c9ba7318451fa /src/message/signalproxy/objects/ircuser.rs
parentreorganize tests and add quassel features (diff)
add to and from network derive
Diffstat (limited to '')
-rw-r--r--src/message/signalproxy/objects/ircuser.rs201
1 files changed, 201 insertions, 0 deletions
diff --git a/src/message/signalproxy/objects/ircuser.rs b/src/message/signalproxy/objects/ircuser.rs
new file mode 100644
index 0000000..0ce597f
--- /dev/null
+++ b/src/message/signalproxy/objects/ircuser.rs
@@ -0,0 +1,201 @@
+use crate::primitive::{DateTime, StringList};
+
+#[allow(unused_imports)]
+use crate::message::signalproxy::Network;
+use libquassel_derive::Network;
+
+#[allow(dead_code)]
+#[derive(Debug, Clone, PartialEq, Network)]
+#[network(repr = "maplist")]
+pub struct IrcUser {
+ user: String,
+ host: String,
+ nick: String,
+ #[network(rename = "realName")]
+ real_name: String,
+ account: String,
+ away: bool,
+ #[network(rename = "awayMessage")]
+ away_message: String,
+ #[network(rename = "idleTime")]
+ idle_time: DateTime,
+ #[network(rename = "loginTime")]
+ login_time: DateTime,
+ server: String,
+ #[network(rename = "ircOperator")]
+ irc_operator: String,
+ #[network(rename = "lastAwayMessageTime")]
+ last_away_message_time: DateTime,
+ #[network(rename = "whoisServiceReply")]
+ whois_service_reply: String,
+ #[network(rename = "suserHost")]
+ suser_host: String,
+ encrypted: bool,
+ channels: StringList,
+ #[network(rename = "userModes")]
+ user_modes: String,
+}
+
+#[cfg(test)]
+mod tests {
+ use crate::primitive::{Variant, VariantMap};
+ use time::OffsetDateTime;
+
+ use super::*;
+
+ fn get_runtime() -> IrcUser {
+ IrcUser {
+ user: s!("NickServ"),
+ host: s!("services"),
+ nick: s!("NickServ"),
+ real_name: s!(""),
+ account: s!(""),
+ away: false,
+ away_message: s!(""),
+ idle_time: OffsetDateTime::unix_epoch(),
+ login_time: OffsetDateTime::unix_epoch(),
+ server: s!(""),
+ irc_operator: s!(""),
+ last_away_message_time: OffsetDateTime::unix_epoch(),
+ whois_service_reply: s!(""),
+ suser_host: s!(""),
+ encrypted: false,
+ channels: StringList::new(),
+ user_modes: s!(""),
+ }
+ }
+
+ fn get_network() -> VariantMap {
+ map! {
+ s!("suserHost") => Variant::VariantList(vec!
+ [
+ Variant::String(
+ s!(""),
+ ),
+ ],
+ ),
+ s!("lastAwayMessageTime") => Variant::VariantList(vec!
+ [
+ Variant::DateTime(
+ OffsetDateTime::unix_epoch() ,
+ ),
+ ],
+ ),
+ s!("away") => Variant::VariantList(vec!
+ [
+ Variant::bool(
+ false,
+ ),
+ ],
+ ),
+ s!("ircOperator") => Variant::VariantList(vec!
+ [
+ Variant::String(
+ s!(""),
+ ),
+ ],
+ ),
+ s!("account") => Variant::VariantList(vec!
+ [
+ Variant::String(
+ s!(""),
+ ),
+ ],
+ ),
+ s!("loginTime") => Variant::VariantList(vec!
+ [
+ Variant::DateTime(
+ OffsetDateTime::unix_epoch()
+ ),
+ ],
+ ),
+ s!("userModes") => Variant::VariantList(vec!
+ [
+ Variant::String(
+ s!(""),
+ ),
+ ],
+ ),
+ s!("host") => Variant::VariantList(vec!
+ [
+ Variant::String(
+ s!("services"),
+ ),
+ ],
+ ),
+ s!("whoisServiceReply") => Variant::VariantList(vec!
+ [
+ Variant::String(
+ s!(""),
+ ),
+ ],
+ ),
+ s!("channels") => Variant::VariantList(vec!
+ [
+ Variant::StringList(vec!
+ [],
+ ),
+ ],
+ ),
+ s!("realName") => Variant::VariantList(vec!
+ [
+ Variant::String(
+ s!(""),
+ ),
+ ],
+ ),
+ s!("nick") => Variant::VariantList(vec!
+ [
+ Variant::String(
+ s!("NickServ"),
+ ),
+ ],
+ ),
+ s!("idleTime") => Variant::VariantList(vec!
+ [
+ Variant::DateTime(
+ OffsetDateTime::unix_epoch()
+ ),
+ ],
+ ),
+ s!("encrypted") => Variant::VariantList(vec!
+ [
+ Variant::bool(
+ false,
+ ),
+ ],
+ ),
+ s!("awayMessage") => Variant::VariantList(vec!
+ [
+ Variant::String(
+ s!(""),
+ ),
+ ],
+ ),
+ s!("user") => Variant::VariantList(vec!
+ [
+ Variant::String(
+ s!("NickServ"),
+ ),
+ ],
+ ),
+ s!("server") => Variant::VariantList(vec!
+ [
+ Variant::String(
+ s!(""),
+ ),
+ ],
+ ),
+ }
+ }
+
+ #[test]
+ fn ircuser_to_network() {
+ assert_eq!(get_runtime().to_network(), get_network())
+ }
+
+ #[test]
+ fn ircuser_from_network() {
+ assert_eq!(IrcUser::from_network(get_network()), get_runtime())
+ }
+}