use serde::{Deserialize, Serialize};
use crate::models::aspnet::JsonString;
pub type GetDetailsResponse = JsonString<AccountDetails>;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AccountDetails {
pub login: String,
pub first_name: String,
pub last_name: String,
pub email: Option<String>,
pub groups: Vec<String>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn decodes_observed_shape() {
let res: GetDetailsResponse = serde_json::from_str(
r#""{\"login\":\"1-101\",\"firstName\":\"Ada\",\"lastName\":\"Lovelace\",\"email\":null,\"groups\":[\"101\"]}""#,
)
.unwrap();
let details = res.into_inner();
assert_eq!(details.login, "1-101");
assert_eq!((details.email, details.groups), (None, vec!["101".into()]));
}
}