Skip to main content

rocketmq_remoting/protocol/header/
list_acl_request_header.rs

1// Copyright 2023 The RocketMQ Rust Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15use cheetah_string::CheetahString;
16use rocketmq_macros::RequestHeaderCodecV2;
17use serde::Deserialize;
18use serde::Serialize;
19
20#[derive(Debug, Clone, Serialize, Deserialize, Default, RequestHeaderCodecV2)]
21#[serde(rename_all = "camelCase")]
22pub struct ListAclRequestHeader {
23    pub subject_filter: CheetahString,
24    pub resource_filter: CheetahString,
25}
26
27#[cfg(test)]
28mod tests {
29    use super::*;
30    use cheetah_string::CheetahString;
31
32    #[test]
33    fn list_acl_request_header_default() {
34        let header: ListAclRequestHeader = Default::default();
35        assert_eq!(header.subject_filter, CheetahString::default());
36        assert_eq!(header.resource_filter, CheetahString::default());
37    }
38
39    #[test]
40    fn list_acl_request_header_serialize() {
41        let header = ListAclRequestHeader {
42            subject_filter: CheetahString::from("subjectFilterValue"),
43            resource_filter: CheetahString::from("resourceFilterValue"),
44        };
45
46        let json_str = serde_json::to_string(&header).unwrap();
47
48        // Verify the serialized JSON contains expected fields with camelCase naming
49        assert!(json_str.contains("\"subjectFilter\":\"subjectFilterValue\""));
50        assert!(json_str.contains("\"resourceFilter\":\"resourceFilterValue\""));
51    }
52
53    #[test]
54    fn list_acl_request_header_deserialize() {
55        let json_str = r#"{
56            "subjectFilter": "subjectFilterValue",
57            "resourceFilter": "resourceFilterValue"
58        }"#;
59
60        let header: ListAclRequestHeader = serde_json::from_str(json_str).unwrap();
61
62        assert_eq!(header.subject_filter, CheetahString::from("subjectFilterValue"));
63        assert_eq!(header.resource_filter, CheetahString::from("resourceFilterValue"));
64    }
65
66    #[test]
67    fn list_acl_request_header_clone() {
68        let header = ListAclRequestHeader {
69            subject_filter: CheetahString::from("subjectFilterValue"),
70            resource_filter: CheetahString::from("resourceFilterValue"),
71        };
72
73        let cloned_header = header.clone();
74
75        assert_eq!(header.subject_filter, cloned_header.subject_filter);
76        assert_eq!(header.resource_filter, cloned_header.resource_filter);
77    }
78}