azure_pim_cli/models/
assignments.rs1use 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}