scim_proto/
group.rs

1use crate::ScimEntryHeader;
2use serde::{Deserialize, Serialize};
3use url::Url;
4use uuid::Uuid;
5
6#[derive(Serialize, Deserialize, Debug, Clone)]
7pub struct Member {
8    value: Uuid,
9    #[serde(rename = "$ref")]
10    ref_: Url,
11    display: String,
12}
13
14#[derive(Serialize, Deserialize, Debug, Clone)]
15#[serde(rename_all = "camelCase")]
16pub struct Group {
17    #[serde(flatten)]
18    entry: ScimEntryHeader,
19
20    display_name: String,
21    members: Vec<Member>,
22}
23
24#[cfg(test)]
25mod tests {
26    use super::*;
27    use crate::constants::RFC7643_GROUP;
28
29    #[test]
30    fn parse_group() {
31        let _ = tracing_subscriber::fmt::try_init();
32
33        let g: Group = serde_json::from_str(RFC7643_GROUP).expect("Failed to parse RFC7643_GROUP");
34
35        tracing::trace!(?g);
36
37        let s = serde_json::to_string_pretty(&g).expect("Failed to serialise RFC7643_USER");
38        eprintln!("{}", s);
39    }
40}