backend.rs (1515B)
1 use crate::policy::RadrootsHostVaultPolicy; 2 3 #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 4 pub enum RadrootsSecretBackendKind { 5 HostVault, 6 EncryptedFile, 7 ExternalCommand, 8 Memory, 9 } 10 11 #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 12 pub enum RadrootsSecretBackend { 13 HostVault(RadrootsHostVaultPolicy), 14 EncryptedFile, 15 ExternalCommand, 16 Memory, 17 } 18 19 impl RadrootsSecretBackend { 20 #[must_use] 21 pub const fn kind(self) -> RadrootsSecretBackendKind { 22 match self { 23 Self::HostVault(_) => RadrootsSecretBackendKind::HostVault, 24 Self::EncryptedFile => RadrootsSecretBackendKind::EncryptedFile, 25 Self::ExternalCommand => RadrootsSecretBackendKind::ExternalCommand, 26 Self::Memory => RadrootsSecretBackendKind::Memory, 27 } 28 } 29 } 30 31 #[cfg(test)] 32 mod tests { 33 use super::*; 34 35 #[test] 36 fn backend_kind_maps_all_backend_variants() { 37 assert_eq!( 38 RadrootsSecretBackend::HostVault(RadrootsHostVaultPolicy::desktop()).kind(), 39 RadrootsSecretBackendKind::HostVault 40 ); 41 assert_eq!( 42 RadrootsSecretBackend::EncryptedFile.kind(), 43 RadrootsSecretBackendKind::EncryptedFile 44 ); 45 assert_eq!( 46 RadrootsSecretBackend::ExternalCommand.kind(), 47 RadrootsSecretBackendKind::ExternalCommand 48 ); 49 assert_eq!( 50 RadrootsSecretBackend::Memory.kind(), 51 RadrootsSecretBackendKind::Memory 52 ); 53 } 54 }