1use crate::AuditEntry;
16use rustfs_targets::catalog::builtin::builtin_audit_target_descriptors;
17use rustfs_targets::{BuiltinTargetDescriptor, TargetPluginDescriptor};
18
19pub fn builtin_target_descriptors() -> Vec<BuiltinTargetDescriptor<AuditEntry>> {
20 builtin_audit_target_descriptors::<AuditEntry>()
21}
22
23pub fn builtin_target_plugins() -> Vec<TargetPluginDescriptor<AuditEntry>> {
24 builtin_target_descriptors()
25 .into_iter()
26 .map(|descriptor| descriptor.plugin().clone())
27 .collect()
28}
29
30#[cfg(test)]
31mod tests {
32 use super::builtin_target_descriptors;
33 use rustfs_config::audit::AUDIT_AMQP_KEYS;
34 use rustfs_config::server_config::KVS;
35 use rustfs_config::{AMQP_EXCHANGE, AMQP_QUEUE_DIR, AMQP_ROUTING_KEY, AMQP_URL};
36 use rustfs_targets::target::ChannelTargetType;
37
38 fn amqp_base_config() -> KVS {
39 let mut config = KVS::new();
40 config.insert(AMQP_URL.to_string(), "amqp://127.0.0.1:5672/%2f".to_string());
41 config.insert(AMQP_EXCHANGE.to_string(), "rustfs.audit".to_string());
42 config.insert(AMQP_ROUTING_KEY.to_string(), "audit".to_string());
43 config.insert(AMQP_QUEUE_DIR.to_string(), String::new());
44 config
45 }
46
47 #[test]
48 fn builtin_plugins_include_amqp_descriptor() {
49 let plugin = builtin_target_descriptors()
50 .into_iter()
51 .find(|plugin| plugin.plugin().target_type() == ChannelTargetType::Amqp.as_str())
52 .expect("amqp plugin should exist");
53
54 assert!(plugin.plugin().valid_fields().contains(&AMQP_URL));
55 assert!(plugin.plugin().valid_fields().contains(&AMQP_EXCHANGE));
56 assert!(plugin.plugin().valid_fields().contains(&AMQP_ROUTING_KEY));
57 assert_eq!(plugin.plugin().valid_fields().len(), AUDIT_AMQP_KEYS.len());
58 }
59
60 #[test]
61 fn builtin_plugins_create_audit_amqp_target() {
62 let plugin = builtin_target_descriptors()
63 .into_iter()
64 .find(|plugin| plugin.plugin().target_type() == ChannelTargetType::Amqp.as_str())
65 .expect("amqp plugin should exist");
66
67 let target = plugin
68 .plugin()
69 .create_target("primary".to_string(), &amqp_base_config())
70 .expect("AMQP audit target should be created");
71
72 let target_id = target.id();
73 assert_eq!(target_id.id, "primary");
74 assert_eq!(target_id.name, "amqp");
75 assert!(target.store().is_none());
76 }
77}