bitwarden_core/key_management/
v2_encrypted_migrations_grace_period_start.rs1use chrono::{DateTime, Utc};
2
3#[cfg_attr(
5 feature = "wasm",
6 derive(tsify::Tsify),
7 tsify(into_wasm_abi, from_wasm_abi)
8)]
9#[derive(serde::Serialize, serde::Deserialize, Clone, Debug, PartialEq, Eq)]
10#[serde(transparent)]
11pub struct V2EncryptedMigrationsGracePeriodStart(
12 #[cfg_attr(feature = "wasm", tsify(type = "DateTime<Utc>"))] pub DateTime<Utc>,
13);
14
15#[cfg(feature = "wasm")]
16impl TryFrom<wasm_bindgen::JsValue> for V2EncryptedMigrationsGracePeriodStart {
17 type Error = serde_wasm_bindgen::Error;
18
19 fn try_from(value: wasm_bindgen::JsValue) -> Result<Self, Self::Error> {
20 serde_wasm_bindgen::from_value(value)
21 }
22}
23
24#[cfg(feature = "uniffi")]
25uniffi::custom_newtype!(V2EncryptedMigrationsGracePeriodStart, DateTime<Utc>);
26
27#[cfg(test)]
28mod tests {
29 use super::*;
30
31 #[test]
32 fn serializes_as_an_rfc3339_string() {
33 let start = "2026-08-27T12:34:56.789Z".parse().unwrap();
34 let value = V2EncryptedMigrationsGracePeriodStart(start);
35
36 let serialized = serde_json::to_value(&value).unwrap();
37 assert_eq!(serialized, serde_json::json!("2026-08-27T12:34:56.789Z"));
38
39 let deserialized = serde_json::from_value(serialized).unwrap();
40 assert_eq!(value, deserialized);
41 }
42}