identity_credential/sd_jwt_vc/
status.rs1use identity_core::common::Url;
5use serde::Deserialize;
6use serde::Serialize;
7
8#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
9pub struct Status(StatusMechanism);
11
12#[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)]
14#[non_exhaustive]
15pub enum StatusMechanism {
16 #[serde(rename = "status_list")]
18 StatusList(StatusListRef),
19 #[serde(untagged)]
21 Custom(serde_json::Value),
22}
23
24#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
25pub struct StatusListRef {
29 pub uri: Url,
31 pub idx: usize,
33}
34
35#[cfg(test)]
36mod tests {
37 use super::*;
38
39 use serde_json::json;
40
41 #[test]
42 fn round_trip() {
43 let status_value = json!({
44 "status_list": {
45 "idx": 420,
46 "uri": "https://example.com/statuslists/1"
47 }
48 });
49 let status: Status = serde_json::from_value(status_value.clone()).unwrap();
50 assert_eq!(serde_json::to_value(status).unwrap(), status_value);
51 }
52}