Skip to main content

chip_sdk/
error.rs

1#[derive(Debug, thiserror::Error)]
2pub enum ChipError {
3    #[error("HTTP request failed: {0}")]
4    Http(#[from] reqwest::Error),
5
6    #[error("API error {status}: {message}")]
7    Api { status: u16, message: String },
8
9    #[error("Missing required parameter: {0}")]
10    MissingParam(&'static str),
11
12    #[error("Signature verification failed")]
13    VerificationFailed,
14
15    #[error("Invalid configuration: {0}")]
16    Config(String),
17
18    #[error("JSON serialization error: {0}")]
19    Json(#[from] serde_json::Error),
20}
21
22#[cfg(test)]
23mod tests {
24    use super::*;
25
26    #[test]
27    fn chip_error_display_api_error() {
28        let err = ChipError::Api {
29            status: 400,
30            message: "Bad Request".into(),
31        };
32        assert_eq!(err.to_string(), "API error 400: Bad Request");
33    }
34
35    #[test]
36    fn chip_error_display_missing_param() {
37        let err = ChipError::MissingParam("brand_id");
38        assert_eq!(err.to_string(), "Missing required parameter: brand_id");
39    }
40
41    #[test]
42    fn chip_error_display_config() {
43        let err = ChipError::Config("base_url is required".into());
44        assert_eq!(
45            err.to_string(),
46            "Invalid configuration: base_url is required"
47        );
48    }
49
50    #[test]
51    fn chip_error_display_verification_failed() {
52        let err = ChipError::VerificationFailed;
53        assert_eq!(err.to_string(), "Signature verification failed");
54    }
55}