rocketmq_remoting/protocol/header/
delete_subscription_group_request_header.rs1use cheetah_string::CheetahString;
16use rocketmq_macros::RequestHeaderCodecV2;
17use serde::Deserialize;
18use serde::Serialize;
19
20use crate::rpc::rpc_request_header::RpcRequestHeader;
21
22#[derive(Clone, Debug, Serialize, Deserialize, Default, RequestHeaderCodecV2)]
23#[serde(rename_all = "camelCase")]
24pub struct DeleteSubscriptionGroupRequestHeader {
25 #[required]
26 pub group_name: CheetahString,
27
28 pub clean_offset: bool,
29
30 #[serde(flatten)]
31 pub rpc_request_header: Option<RpcRequestHeader>,
32}
33
34#[cfg(test)]
35mod tests {
36 use cheetah_string::CheetahString;
37
38 use super::*;
39
40 #[test]
41 fn delete_subscription_group_request_header_serializes_correctly() {
42 let header = DeleteSubscriptionGroupRequestHeader {
43 group_name: CheetahString::from_static_str("test_group"),
44 clean_offset: true,
45 rpc_request_header: None,
46 };
47 let serialized = serde_json::to_string(&header).unwrap();
48 let expected = r#"{"groupName":"test_group","cleanOffset":true}"#;
49 assert_eq!(serialized, expected);
50 }
51
52 #[test]
53 fn delete_subscription_group_request_header_deserializes_correctly() {
54 let data = r#"{"groupName":"test_group","cleanOffset":true}"#;
55 let header: DeleteSubscriptionGroupRequestHeader = serde_json::from_str(data).unwrap();
56 assert_eq!(header.group_name, CheetahString::from_static_str("test_group"));
57 assert!(header.clean_offset);
58 assert!(header.rpc_request_header.is_some());
59 }
60
61 #[test]
62 fn delete_subscription_group_request_header_handles_missing_optional_fields() {
63 let data = r#"{"groupName":"test_group","cleanOffset":false}"#;
64 let header: DeleteSubscriptionGroupRequestHeader = serde_json::from_str(data).unwrap();
65 assert_eq!(header.group_name, CheetahString::from_static_str("test_group"));
66 assert!(!header.clean_offset);
67 assert!(header.rpc_request_header.is_some());
68 }
69
70 #[test]
71 fn delete_subscription_group_request_header_handles_invalid_data() {
72 let data = r#"{"groupName":12345}"#;
73 let result: Result<DeleteSubscriptionGroupRequestHeader, _> = serde_json::from_str(data);
74 assert!(result.is_err());
75 }
76}