linode_api/endpoints/v4/
error.rs1use serde::{Deserialize, Serialize};
2
3use crate::objects::v4::Error;
4
5#[derive(Deserialize, Serialize, Debug, Clone)]
7pub struct ErrorResponseBody {
8 pub errors: Vec<Error>,
9}
10
11#[cfg(test)]
12mod tests {
13 use super::*;
14
15 use crate::objects::v4::ErrorReason;
16
17 #[test]
18 fn test_de_response_body() {
19 match serde_json::from_str::<ErrorResponseBody>(include_str!(
20 "../../../tests/response_body_files/error/error__with_invalid_json.json"
21 )) {
22 Ok(json) => {
23 assert_eq!(json.errors.len(), 1);
24 assert!(json.errors[0].field.is_none());
25 assert_eq!(json.errors[0].reason, ErrorReason::InvalidJson);
26 }
27 x => panic!("{x:?}"),
28 }
29
30 match serde_json::from_str::<ErrorResponseBody>(include_str!(
31 "../../../tests/response_body_files/error/error__with_invalid_token.json"
32 )) {
33 Ok(json) => {
34 assert_eq!(json.errors.len(), 1);
35 assert!(json.errors[0].field.is_none());
36 assert_eq!(json.errors[0].reason, ErrorReason::InvalidToken);
37 }
38 x => panic!("{x:?}"),
39 }
40
41 match serde_json::from_str::<ErrorResponseBody>(include_str!(
42 "../../../tests/response_body_files/error/error__with_not_found.json"
43 )) {
44 Ok(json) => {
45 assert_eq!(json.errors.len(), 1);
46 assert!(json.errors[0].field.is_none());
47 assert_eq!(json.errors[0].reason, ErrorReason::NotFound);
48 }
49 x => panic!("{x:?}"),
50 }
51
52 match serde_json::from_str::<ErrorResponseBody>(include_str!(
53 "../../../tests/response_body_files/error/error__with_page_size_invalid.json"
54 )) {
55 Ok(json) => {
56 assert_eq!(json.errors.len(), 1);
57 assert_eq!(json.errors[0].field, Some("page_size".into()));
58 assert_eq!(
59 json.errors[0].reason,
60 ErrorReason::Other("Must be 25-500".into())
61 );
62 }
63 x => panic!("{x:?}"),
64 }
65 }
66}