aws_lambda_events/event/autoscaling/
mod.rs1use chrono::{DateTime, Utc};
2use serde::{de::DeserializeOwned, Deserialize, Serialize};
3use serde_json::Value;
4use std::collections::HashMap;
5
6use crate::custom_serde::deserialize_lambda_map;
7
8#[derive(Debug, Default, Clone, Eq, PartialEq, Deserialize, Serialize)]
10#[serde(rename_all = "camelCase")]
11pub struct AutoScalingEvent<T1 = Value>
12where
13 T1: DeserializeOwned,
14 T1: Serialize,
15{
16 #[serde(default)]
18 pub version: Option<String>,
19 #[serde(default)]
21 pub id: Option<String>,
22 #[serde(default)]
24 #[serde(rename = "detail-type")]
25 pub detail_type: Option<String>,
26 #[serde(default)]
28 pub source: Option<String>,
29 #[serde(default)]
31 #[serde(rename = "account")]
32 pub account_id: Option<String>,
33 pub time: DateTime<Utc>,
35 #[serde(default)]
37 pub region: Option<String>,
38 pub resources: Vec<String>,
40 #[serde(deserialize_with = "deserialize_lambda_map")]
41 #[serde(default)]
42 #[serde(bound = "")]
43 pub detail: HashMap<String, T1>,
44 #[cfg(feature = "catch-all-fields")]
48 #[cfg_attr(docsrs, doc(cfg(feature = "catch-all-fields")))]
49 #[serde(flatten)]
50 pub other: serde_json::Map<String, Value>,
51}
52
53#[cfg(test)]
54mod test {
55 use super::*;
56
57 #[test]
58 #[cfg(feature = "autoscaling")]
59 fn example_autoscaling_event_launch_successful() {
60 let data = include_bytes!("../../fixtures/example-autoscaling-event-launch-successful.json");
61 let parsed: AutoScalingEvent = serde_json::from_slice(data).unwrap();
62 let output: String = serde_json::to_string(&parsed).unwrap();
63 let reparsed: AutoScalingEvent = serde_json::from_slice(output.as_bytes()).unwrap();
64 assert_eq!(parsed, reparsed);
65 }
66
67 #[test]
68 #[cfg(feature = "autoscaling")]
69 fn example_autoscaling_event_launch_unsuccessful() {
70 let data = include_bytes!("../../fixtures/example-autoscaling-event-launch-unsuccessful.json");
71 let parsed: AutoScalingEvent = serde_json::from_slice(data).unwrap();
72 let output: String = serde_json::to_string(&parsed).unwrap();
73 let reparsed: AutoScalingEvent = serde_json::from_slice(output.as_bytes()).unwrap();
74 assert_eq!(parsed, reparsed);
75 }
76
77 #[test]
78 #[cfg(feature = "autoscaling")]
79 fn example_autoscaling_event_lifecycle_action() {
80 let data = include_bytes!("../../fixtures/example-autoscaling-event-lifecycle-action.json");
81 let parsed: AutoScalingEvent = serde_json::from_slice(data).unwrap();
82 let output: String = serde_json::to_string(&parsed).unwrap();
83 let reparsed: AutoScalingEvent = serde_json::from_slice(output.as_bytes()).unwrap();
84 assert_eq!(parsed, reparsed);
85 }
86
87 #[test]
88 #[cfg(feature = "autoscaling")]
89 fn example_autoscaling_event_terminate_action() {
90 let data = include_bytes!("../../fixtures/example-autoscaling-event-terminate-action.json");
91 let parsed: AutoScalingEvent = serde_json::from_slice(data).unwrap();
92 let output: String = serde_json::to_string(&parsed).unwrap();
93 let reparsed: AutoScalingEvent = serde_json::from_slice(output.as_bytes()).unwrap();
94 assert_eq!(parsed, reparsed);
95 }
96
97 #[test]
98 #[cfg(feature = "autoscaling")]
99 fn example_autoscaling_event_terminate_successful() {
100 let data = include_bytes!("../../fixtures/example-autoscaling-event-terminate-successful.json");
101 let parsed: AutoScalingEvent = serde_json::from_slice(data).unwrap();
102 let output: String = serde_json::to_string(&parsed).unwrap();
103 let reparsed: AutoScalingEvent = serde_json::from_slice(output.as_bytes()).unwrap();
104 assert_eq!(parsed, reparsed);
105 }
106
107 #[test]
108 #[cfg(feature = "autoscaling")]
109 fn example_autoscaling_event_terminate_unsuccessful() {
110 let data = include_bytes!("../../fixtures/example-autoscaling-event-terminate-unsuccessful.json");
111 let parsed: AutoScalingEvent = serde_json::from_slice(data).unwrap();
112 let output: String = serde_json::to_string(&parsed).unwrap();
113 let reparsed: AutoScalingEvent = serde_json::from_slice(output.as_bytes()).unwrap();
114 assert_eq!(parsed, reparsed);
115 }
116}