bitwarden_vault/cipher/blob/conversions/
drivers_license.rs1use super::{DriversLicenseDataV1, DriversLicenseView};
2
3impl_bidirectional_from!(
4 DriversLicenseView,
5 DriversLicenseDataV1,
6 [
7 first_name,
8 middle_name,
9 last_name,
10 date_of_birth,
11 license_number,
12 issuing_country,
13 issuing_state,
14 issue_date,
15 expiration_date,
16 issuing_authority,
17 license_class,
18 ]
19);
20
21#[cfg(test)]
22mod tests {
23 use super::super::{CipherBlobV1, test_support::*};
24 use crate::cipher::{cipher::CipherType, drivers_license::DriversLicenseView};
25
26 #[test]
27 fn test_drivers_license_cipher_round_trip() {
28 let (key_store, key_id) = create_test_key_store();
29 let mut ctx = key_store.context_mut();
30
31 let original = crate::CipherView {
32 name: "My Driver's License".to_string(),
33 notes: None,
34 r#type: CipherType::DriversLicense,
35 drivers_license: Some(DriversLicenseView {
36 first_name: Some("John".to_string()),
37 middle_name: Some("Michael".to_string()),
38 last_name: Some("Doe".to_string()),
39 date_of_birth: Some("1985-06-15".to_string()),
40 license_number: Some("DL-987654".to_string()),
41 issuing_country: Some("US".to_string()),
42 issuing_state: Some("NY".to_string()),
43 issue_date: Some("2020-01-01".to_string()),
44 expiration_date: Some("2028-01-01".to_string()),
45 issuing_authority: Some("NY DMV".to_string()),
46 license_class: Some("D".to_string()),
47 }),
48 ..create_shell_cipher_view(CipherType::DriversLicense)
49 };
50
51 let blob = CipherBlobV1::from_cipher_view(&original, &mut ctx, key_id).unwrap();
52 let mut restored = create_shell_cipher_view(CipherType::DriversLicense);
53 blob.apply_to_cipher_view(&mut restored, &mut ctx, key_id)
54 .unwrap();
55
56 assert_eq!(restored.name, "My Driver's License");
57 assert_eq!(restored.r#type, CipherType::DriversLicense);
58 let dl = restored.drivers_license.unwrap();
59 assert_eq!(dl.first_name, Some("John".to_string()));
60 assert_eq!(dl.license_number, Some("DL-987654".to_string()));
61 assert!(restored.login.is_none());
62 }
63}