|
1 |
| -use noteguard::filters::{Content, Kinds, ProtectedEvents, RateLimit, Whitelist}; |
| 1 | +use noteguard::filters::{Blacklist, Content, Kinds, ProtectedEvents, RateLimit, Whitelist}; |
2 | 2 |
|
3 | 3 | #[cfg(feature = "forwarder")]
|
4 | 4 | use noteguard::filters::Forwarder;
|
@@ -47,6 +47,7 @@ impl Noteguard {
|
47 | 47 | fn register_builtin_filters(&mut self) {
|
48 | 48 | self.register_filter::<RateLimit>();
|
49 | 49 | self.register_filter::<Whitelist>();
|
| 50 | + self.register_filter::<Blacklist>(); |
50 | 51 | self.register_filter::<ProtectedEvents>();
|
51 | 52 | self.register_filter::<Kinds>();
|
52 | 53 | self.register_filter::<Content>();
|
@@ -217,6 +218,7 @@ mod tests {
|
217 | 218 | let noteguard = Noteguard::new();
|
218 | 219 | assert!(noteguard.registered_filters.contains_key("ratelimit"));
|
219 | 220 | assert!(noteguard.registered_filters.contains_key("whitelist"));
|
| 221 | + assert!(noteguard.registered_filters.contains_key("blacklist")); |
220 | 222 | assert!(noteguard
|
221 | 223 | .registered_filters
|
222 | 224 | .contains_key("protected_events"));
|
@@ -315,6 +317,56 @@ mod tests {
|
315 | 317 | assert_eq!(output_message.action, Action::Reject);
|
316 | 318 | }
|
317 | 319 |
|
| 320 | + #[test] |
| 321 | + fn test_blacklist_reject() { |
| 322 | + let mut noteguard = Noteguard::new(); |
| 323 | + |
| 324 | + let config: Config = toml::from_str( |
| 325 | + r#" |
| 326 | + pipeline = ["blacklist"] |
| 327 | + [filters.blacklist] |
| 328 | + pubkeys = ["mock_pubkey"] |
| 329 | + "#, |
| 330 | + ) |
| 331 | + .expect("Failed to parse config"); |
| 332 | + |
| 333 | + noteguard |
| 334 | + .load_config(&config) |
| 335 | + .expect("Failed to load config"); |
| 336 | + |
| 337 | + let input_message = create_mock_input_message("test_event_3", "new"); |
| 338 | + let output_message = noteguard.run(input_message); |
| 339 | + |
| 340 | + assert_eq!(output_message.action, Action::Reject); |
| 341 | + assert_eq!( |
| 342 | + output_message.msg.expect("Failed to get message"), |
| 343 | + "blocked: pubkey/ip is blacklisted".to_string() |
| 344 | + ); |
| 345 | + } |
| 346 | + |
| 347 | + #[test] |
| 348 | + fn test_blacklist_accept() { |
| 349 | + let mut noteguard = Noteguard::new(); |
| 350 | + |
| 351 | + let config: Config = toml::from_str( |
| 352 | + r#" |
| 353 | + pipeline = ["blacklist"] |
| 354 | + [filters.blacklist] |
| 355 | + pubkeys = ["not_blacklisted"] |
| 356 | + "#, |
| 357 | + ) |
| 358 | + .expect("Failed to parse config"); |
| 359 | + |
| 360 | + noteguard |
| 361 | + .load_config(&config) |
| 362 | + .expect("Failed to load config"); |
| 363 | + |
| 364 | + let input_message = create_mock_input_message("test_event_4", "new"); |
| 365 | + let output_message = noteguard.run(input_message); |
| 366 | + |
| 367 | + assert_eq!(output_message.action, Action::Accept); |
| 368 | + } |
| 369 | + |
318 | 370 | #[test]
|
319 | 371 | fn test_deserialize_input_message() {
|
320 | 372 | let input_json = r#"
|
|
0 commit comments