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