Skip to main content

age_crypto/errors/
mod.rs

1pub mod decrypt;
2pub mod encrypt;
3pub use decrypt::DecryptError;
4pub use encrypt::EncryptError;
5use thiserror::Error;
6#[derive(Debug, Error)]
7pub enum Error {
8    #[error("Encrypt error: {0}")]
9    Encrypt(#[from] EncryptError),
10    #[error("Decrypt error: {0}")]
11    Decrypt(#[from] DecryptError),
12}
13pub type Result<T> = std::result::Result<T, Error>;
14#[cfg(test)]
15mod tests {
16    use super::*;
17    #[test]
18    fn test_error_display_encrypt() {
19        let err = Error::from(EncryptError::Failed("test".into()));
20        assert_eq!(format!("{}", err), "Encrypt error: Encryption failed: test");
21    }
22    #[test]
23    fn test_error_display_decrypt() {
24        let err = Error::from(DecryptError::Failed("test".into()));
25        assert_eq!(format!("{}", err), "Decrypt error: Decryption failed: test");
26    }
27    #[test]
28    fn test_error_from_encrypt_error() {
29        let encrypt_err = EncryptError::InvalidRecipient {
30            recipient: "key".into(),
31            reason: "invalid format".into(),
32        };
33        let err: Error = encrypt_err.into();
34        assert!(matches!(
35            err,
36            Error::Encrypt(EncryptError::InvalidRecipient { .. })
37        ));
38    }
39    #[test]
40    fn test_error_from_decrypt_error() {
41        let decrypt_err = DecryptError::InvalidIdentity("id".into());
42        let err: Error = decrypt_err.into();
43        assert!(matches!(
44            err,
45            Error::Decrypt(DecryptError::InvalidIdentity(_))
46        ));
47    }
48}