|
| 1 | +//! Example admission policy hook using registry admission checks. |
| 2 | +
|
| 3 | +use stellar_k8s::controller::check_admission; |
| 4 | +use stellar_k8s::crd::stellar_registry::{StellarRegistry, VulnerabilitySummary}; |
| 5 | + |
| 6 | +pub fn validate_image(registry: &StellarRegistry, image: &str, signed: bool) -> Result<(), String> { |
| 7 | + check_admission(registry, image, signed, &VulnerabilitySummary::default()) |
| 8 | +} |
| 9 | + |
| 10 | +#[cfg(test)] |
| 11 | +mod tests { |
| 12 | + use super::*; |
| 13 | + use kube::core::ObjectMeta; |
| 14 | + use stellar_k8s::crd::stellar_registry::{ |
| 15 | + AdmissionPolicy, RegistryMirror, ScanningConfig, SigningConfig, StellarRegistrySpec, |
| 16 | + }; |
| 17 | + |
| 18 | + fn sample_registry() -> StellarRegistry { |
| 19 | + StellarRegistry { |
| 20 | + metadata: ObjectMeta { |
| 21 | + name: Some("reg".into()), |
| 22 | + namespace: Some("stellar".into()), |
| 23 | + ..Default::default() |
| 24 | + }, |
| 25 | + spec: StellarRegistrySpec { |
| 26 | + endpoint: "registry.example.com".into(), |
| 27 | + scanning: ScanningConfig::default(), |
| 28 | + signing: SigningConfig { |
| 29 | + require_signature: false, |
| 30 | + ..Default::default() |
| 31 | + }, |
| 32 | + admission: AdmissionPolicy::default(), |
| 33 | + mirrors: vec![], |
| 34 | + garbage_collection: None, |
| 35 | + proxy: None, |
| 36 | + auto_patch: None, |
| 37 | + }, |
| 38 | + status: None, |
| 39 | + } |
| 40 | + } |
| 41 | + |
| 42 | + #[test] |
| 43 | + fn allows_signed_image() { |
| 44 | + assert!(validate_image(&sample_registry(), "app:v1", true).is_ok()); |
| 45 | + } |
| 46 | +} |
0 commit comments