identity_credential/sd_jwt_vc/
status.rsuse identity_core::common::Url;
use serde::Deserialize;
use serde::Serialize;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Status(StatusMechanism);
#[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum StatusMechanism {
#[serde(rename = "status_list")]
StatusList(StatusListRef),
#[serde(untagged)]
Custom(serde_json::Value),
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct StatusListRef {
pub uri: Url,
pub idx: usize,
}
#[cfg(test)]
mod tests {
use super::*;
use serde_json::json;
#[test]
fn round_trip() {
let status_value = json!({
"status_list": {
"idx": 420,
"uri": "https://example.com/statuslists/1"
}
});
let status: Status = serde_json::from_value(status_value.clone()).unwrap();
assert_eq!(serde_json::to_value(status).unwrap(), status_value);
}
}