openzeppelin_relayer/models/error/
address.rs

1use serde::Serialize;
2use thiserror::Error;
3
4use super::{SignerError, TransactionError};
5
6#[derive(Error, Debug, Serialize)]
7pub enum AddressError {
8    #[error("Address conversion error: {0}")]
9    ConversionError(String),
10}
11
12impl From<AddressError> for SignerError {
13    fn from(err: AddressError) -> Self {
14        SignerError::SigningError(err.to_string())
15    }
16}
17
18impl From<AddressError> for TransactionError {
19    fn from(err: AddressError) -> Self {
20        TransactionError::ValidationError(err.to_string())
21    }
22}
23
24#[cfg(test)]
25mod tests {
26    use super::*;
27
28    #[test]
29    fn test_address_error_creation() {
30        let error = AddressError::ConversionError("Invalid format".to_string());
31        assert!(matches!(error, AddressError::ConversionError(_)));
32        assert_eq!(
33            error.to_string(),
34            "Address conversion error: Invalid format"
35        );
36    }
37
38    #[test]
39    fn test_conversion_to_signer_error() {
40        let address_error = AddressError::ConversionError("Invalid format".to_string());
41        let signer_error: SignerError = address_error.into();
42
43        assert!(matches!(signer_error, SignerError::SigningError(_)));
44        assert_eq!(
45            signer_error.to_string(),
46            "Failed to sign transaction: Address conversion error: Invalid format"
47        );
48    }
49
50    #[test]
51    fn test_conversion_to_transaction_error() {
52        let address_error = AddressError::ConversionError("Invalid format".to_string());
53        let transaction_error: TransactionError = address_error.into();
54
55        assert!(matches!(
56            transaction_error,
57            TransactionError::ValidationError(_)
58        ));
59        assert_eq!(
60            transaction_error.to_string(),
61            "Transaction validation error: Address conversion error: Invalid format"
62        );
63    }
64}