@@ -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