Skip to content

Commit ca4ead5

Browse files
committed
test: [#1250] add tests for tracker core errors
1 parent 0811d67 commit ca4ead5

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

packages/tracker-core/src/error.rs

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,86 @@ pub enum PeerKeyError {
3535
source: LocatedError<'static, databases::error::Error>,
3636
},
3737
}
38+
39+
#[cfg(test)]
40+
mod tests {
41+
42+
mod whitelist_error {
43+
44+
use crate::core_tests::sample_info_hash;
45+
use crate::error::WhitelistError;
46+
47+
#[test]
48+
fn torrent_not_whitelisted() {
49+
let err = WhitelistError::TorrentNotWhitelisted {
50+
info_hash: sample_info_hash(),
51+
location: std::panic::Location::caller(),
52+
};
53+
54+
let err_msg = format!("{err}");
55+
56+
assert!(
57+
err_msg.contains(&format!("The torrent: {}, is not whitelisted", sample_info_hash())),
58+
"Error message did not contain expected text: {err_msg}"
59+
);
60+
}
61+
}
62+
63+
mod peer_key_error {
64+
use torrust_tracker_located_error::Located;
65+
66+
use crate::databases::driver::Driver;
67+
use crate::error::PeerKeyError;
68+
use crate::{authentication, databases};
69+
70+
#[test]
71+
fn duration_overflow() {
72+
let seconds_valid = 100;
73+
74+
let err = PeerKeyError::DurationOverflow { seconds_valid };
75+
76+
let err_msg = format!("{err}");
77+
78+
assert!(
79+
err_msg.contains(&format!("Invalid peer key duration: {seconds_valid}")),
80+
"Error message did not contain expected text: {err_msg}"
81+
);
82+
}
83+
84+
#[test]
85+
fn parsing_from_string() {
86+
let err = authentication::key::ParseKeyError::InvalidKeyLength;
87+
88+
let err = PeerKeyError::InvalidKey {
89+
key: "INVALID KEY".to_string(),
90+
source: Located(err).into(),
91+
};
92+
93+
let err_msg = format!("{err}");
94+
95+
assert!(
96+
err_msg.contains(&"Invalid key: INVALID KEY".to_string()),
97+
"Error message did not contain expected text: {err_msg}"
98+
);
99+
}
100+
101+
#[test]
102+
fn persisting_into_database() {
103+
let err = databases::error::Error::InsertFailed {
104+
location: std::panic::Location::caller(),
105+
driver: Driver::Sqlite3,
106+
};
107+
108+
let err = PeerKeyError::DatabaseError {
109+
source: Located(err).into(),
110+
};
111+
112+
let err_msg = format!("{err}");
113+
114+
assert!(
115+
err_msg.contains(&"Can't persist key".to_string()),
116+
"Error message did not contain expected text: {err}"
117+
);
118+
}
119+
}
120+
}

0 commit comments

Comments
 (0)