lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README | LICENSE

error.rs (2433B)


      1 use thiserror::Error;
      2 
      3 #[derive(Debug, Error)]
      4 pub enum RadrootsNostrAccountsError {
      5     #[error("identity error: {0}")]
      6     Identity(String),
      7 
      8     #[error("store error: {0}")]
      9     Store(String),
     10 
     11     #[error("vault error: {0}")]
     12     Vault(String),
     13 
     14     #[error("account not found: {0}")]
     15     AccountNotFound(String),
     16 
     17     #[error("account already exists: {0}")]
     18     AccountAlreadyExists(String),
     19 
     20     #[error("invalid account state: {0}")]
     21     InvalidState(String),
     22 
     23     #[error("invalid account selector: {0}")]
     24     InvalidAccountSelector(String),
     25 
     26     #[error("account selector is ambiguous: {0}")]
     27     AmbiguousAccountSelector(String),
     28 
     29     #[error("public key does not match secret key")]
     30     PublicKeyMismatch,
     31 }
     32 
     33 #[cfg(feature = "std")]
     34 impl From<radroots_identity::IdentityError> for RadrootsNostrAccountsError {
     35     fn from(value: radroots_identity::IdentityError) -> Self {
     36         Self::Identity(value.to_string())
     37     }
     38 }
     39 
     40 #[cfg(feature = "std")]
     41 impl From<radroots_runtime::RuntimeJsonError> for RadrootsNostrAccountsError {
     42     fn from(value: radroots_runtime::RuntimeJsonError) -> Self {
     43         Self::Store(value.to_string())
     44     }
     45 }
     46 
     47 #[cfg(feature = "std")]
     48 impl From<radroots_secret_vault::RadrootsSecretVaultAccessError> for RadrootsNostrAccountsError {
     49     fn from(value: radroots_secret_vault::RadrootsSecretVaultAccessError) -> Self {
     50         Self::Vault(value.to_string())
     51     }
     52 }
     53 
     54 #[cfg(test)]
     55 mod tests {
     56     use super::*;
     57     use radroots_identity::IdentityError;
     58     use radroots_runtime::RuntimeJsonError;
     59     use radroots_secret_vault::RadrootsSecretVaultAccessError;
     60     use std::path::PathBuf;
     61 
     62     #[test]
     63     fn converts_identity_error() {
     64         let source = IdentityError::PublicKeyMismatch;
     65         let converted: RadrootsNostrAccountsError = source.into();
     66         assert!(converted.to_string().starts_with("identity error:"));
     67     }
     68 
     69     #[test]
     70     fn converts_runtime_json_error() {
     71         let source = RuntimeJsonError::NotFound(PathBuf::from("accounts.json"));
     72         let converted: RadrootsNostrAccountsError = source.into();
     73         assert!(converted.to_string().starts_with("store error:"));
     74     }
     75 
     76     #[test]
     77     fn converts_secret_vault_access_error() {
     78         let source = RadrootsSecretVaultAccessError::Backend("vault failed".into());
     79         let converted: RadrootsNostrAccountsError = source.into();
     80         assert!(converted.to_string().starts_with("vault error:"));
     81     }
     82 }