Skip to content

Commit ad25933

Browse files
committed
Add more AuthMonitor unit tests
1 parent 7fc5e46 commit ad25933

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

src/auth_monitor.test.rs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)