openzeppelin_relayer/models/error/
address.rs1use 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}