use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
#[derive(Debug, Clone, Serialize, Deserialize, Default, ToSchema)]
pub struct AuthContext {
#[serde(default)]
pub visibility: String,
#[serde(default)]
pub owner_groups: Vec<String>,
#[serde(default)]
pub confidentiality: String,
}
impl AuthContext {
pub fn new() -> Self {
Self::default()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_default_auth_context() {
let ctx = AuthContext::new();
assert!(ctx.visibility.is_empty());
assert!(ctx.owner_groups.is_empty());
assert!(ctx.confidentiality.is_empty());
}
#[test]
fn test_serde_roundtrip() {
let ctx = AuthContext {
visibility: "team".to_string(),
owner_groups: vec!["developers".to_string(), "pdt-team".to_string()],
confidentiality: "confidential".to_string(),
};
let json = serde_json::to_string(&ctx).unwrap();
let deserialized: AuthContext = serde_json::from_str(&json).unwrap();
assert_eq!(deserialized.visibility, "team");
assert_eq!(deserialized.owner_groups.len(), 2);
assert_eq!(deserialized.confidentiality, "confidential");
}
}