@@ -86,6 +86,10 @@ fn expect_update_callback_is_called_after_writing_auth_failed_message(
8686) {
8787 let message = create_log_line ( AUTH_FAILED_TEST_MESSAGES [ 0 ] ) ;
8888 file. write ( & message) ;
89+ expect_update_callback_is_called_once ( auth_monitor) ;
90+ }
91+
92+ fn expect_update_callback_is_called_once ( auth_monitor : & mut AuthMonitor ) {
8993 let mut call_count = 0 ;
9094 auth_monitor. update ( || call_count += 1 ) ;
9195 assert_eq ! ( call_count, 1 , "One callback call was expected" )
@@ -126,3 +130,40 @@ pub fn when_reset_after_seconds_passed_then_failed_attempts_count_is_reset() {
126130 & mut file,
127131 ) ;
128132}
133+
134+ #[ test]
135+ pub fn when_max_failed_attempts_limit_is_reached_before_update_is_called_then_update_callback_is_called (
136+ ) {
137+ for max_failed_attempts in 2 ..10 {
138+ let mut file = TestFile :: new ( "auth-monitor" ) ;
139+ let mut auth_monitor = AuthMonitor :: new ( AuthMonitorParams {
140+ filepath : file. filepath . clone ( ) ,
141+ options : AuthMonitorOptions {
142+ max_failed_attempts,
143+ ..AuthMonitorOptions :: default ( )
144+ } ,
145+ } )
146+ . expect ( "Error creating AuthMonitor" ) ;
147+
148+ expect_no_update_callback_call ( & mut auth_monitor) ;
149+ write_auth_failed_messages ( & mut file, ( max_failed_attempts + 1 ) as usize ) ;
150+ write_other_messages ( & mut file, max_failed_attempts as usize ) ;
151+ expect_update_callback_is_called_once ( & mut auth_monitor) ;
152+ }
153+ }
154+
155+ fn write_auth_failed_messages ( file : & mut TestFile , count : usize ) {
156+ write_messages ( file, & AUTH_FAILED_TEST_MESSAGES , count) ;
157+ }
158+
159+ fn write_other_messages ( file : & mut TestFile , count : usize ) {
160+ write_messages ( file, & OTHER_TEST_MESSAGES , count) ;
161+ }
162+
163+ fn write_messages ( file : & mut TestFile , messages : & [ & str ] , count : usize ) {
164+ for i in 0usize ..( count - 1 ) {
165+ let message_index = i % messages. len ( ) ;
166+ let message = create_log_line ( messages[ message_index] ) ;
167+ file. write ( & message) ;
168+ }
169+ }
0 commit comments