//! `POST /api/forge/users/{name}/admin`. use serde::{Deserialize, Serialize}; /// What `POST /api/forge/users/{name}/admin` found. #[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)] #[cfg_attr(feature = "schema", derive(utoipa::ToSchema))] #[serde(rename_all = "snake_case")] pub enum ForgeAdminChange { Promoted, AlreadyAdmin, } /// Success body of `POST /api/forge/users/{name}/admin`. #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] #[cfg_attr(feature = "schema", derive(utoipa::ToSchema))] pub struct MakeForgeAdminResponse { pub change: ForgeAdminChange, } #[cfg(test)] mod tests { use super::{ForgeAdminChange, MakeForgeAdminResponse}; #[test] fn both_changes_round_trip() { for (change, wire) in [ (ForgeAdminChange::Promoted, r#"{"change":"promoted"}"#), ( ForgeAdminChange::AlreadyAdmin, r#"{"change":"already_admin"}"#, ), ] { let resp = MakeForgeAdminResponse { change }; assert_eq!(serde_json::to_string(&resp).unwrap(), wire); assert_eq!( serde_json::from_str::(wire).unwrap(), resp ); } } }