include!(concat!(env!("OUT_DIR"), "/permission_sets_registry.rs"));
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_registry_contains_expected_permission_sets() {
assert!(has_permission_set("storage/data-read"));
assert!(has_permission_set("storage/data-write"));
assert!(has_permission_set("storage/management"));
assert!(has_permission_set("storage/provision"));
assert!(has_permission_set("worker/execute"));
assert!(has_permission_set("worker/management"));
assert!(has_permission_set("worker/provision"));
assert!(has_permission_set("build/execute"));
assert!(has_permission_set("build/management"));
assert!(has_permission_set("build/provision"));
assert!(has_permission_set("kubernetes-cluster/heartbeat"));
assert!(has_permission_set("email/provision"));
assert!(has_permission_set("email/send"));
assert!(has_permission_set("email/management"));
assert!(has_permission_set("email/manage-identities"));
}
#[test]
fn test_get_permission_set() {
let storage_read = get_permission_set("storage/data-read");
assert!(storage_read.is_some());
let perm_set = storage_read.unwrap();
assert_eq!(perm_set.id, "storage/data-read");
assert_eq!(
perm_set.description,
"Allows reading data from storage buckets and containers"
);
assert!(perm_set.platforms.aws.is_some());
assert!(perm_set.platforms.gcp.is_some());
assert!(perm_set.platforms.azure.is_some());
}
#[test]
fn test_nonexistent_permission_set() {
assert!(!has_permission_set("nonexistent/permission"));
assert!(get_permission_set("nonexistent/permission").is_none());
}
#[test]
fn test_list_permission_set_ids() {
let ids = list_permission_set_ids();
assert!(!ids.is_empty());
assert!(ids.contains(&"storage/data-read"));
assert!(ids.contains(&"worker/execute"));
println!("Available permission sets: {:?}", ids);
}
#[test]
fn test_permission_set_structure() {
let function_exec = get_permission_set("worker/execute").unwrap();
if let Some(aws_perms) = &function_exec.platforms.aws {
assert!(!aws_perms.is_empty());
let first_perm = &aws_perms[0];
assert!(first_perm.grant.actions.is_some());
let actions = first_perm.grant.actions.as_ref().unwrap();
assert!(actions.contains(&"logs:PutLogEvents".to_string()));
assert!(!first_perm.binding.is_empty());
assert!(first_perm.binding.stack.is_some());
assert!(first_perm.binding.resource.is_some());
}
}
}