Skip to main content

azure_pim_cli/models/
assignments.rs

1use crate::{graph::Object, models::scope::Scope};
2use serde::{Deserialize, Serialize};
3
4#[derive(Deserialize, Debug, Serialize)]
5pub(crate) struct Assignments {
6    pub(crate) value: Vec<Assignment>,
7}
8
9#[derive(Deserialize, Debug, Serialize)]
10#[serde(deny_unknown_fields)]
11pub struct Assignment {
12    pub id: String,
13    pub name: String,
14    pub properties: Properties,
15    #[serde(rename = "type")]
16    pub type_: String,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub object: Option<Object>,
19}
20
21#[derive(Deserialize, Debug, Serialize)]
22#[serde(rename_all = "camelCase")]
23#[serde(deny_unknown_fields)]
24pub struct Properties {
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub condition: Option<String>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub condition_version: Option<String>,
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub created_on: Option<String>,
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub created_by: Option<String>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub updated_on: Option<String>,
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub updated_by: Option<String>,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub description: Option<String>,
39    pub role_definition_id: String,
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub delegated_managed_identity_resource_id: Option<String>,
42    pub principal_id: String,
43    pub principal_type: String,
44    pub scope: Scope,
45}
46
47#[cfg(test)]
48mod tests {
49    use super::Assignments;
50    use anyhow::Result;
51    use insta::assert_json_snapshot;
52
53    #[test]
54    fn test_deserialization() -> Result<()> {
55        const DATA: &str = include_str!("../../tests/data/assignments.json");
56        let data: Assignments = serde_json::from_str(DATA)?;
57        assert_json_snapshot!(data);
58        Ok(())
59    }
60}