|
1 | 1 | use credential_exchange_format::{ |
2 | 2 | AddressCredential, Credential, CustomFieldsCredential, DriversLicenseCredential, EditableField, |
3 | | - EditableFieldString, IdentityDocumentCredential, PassportCredential, PersonNameCredential, |
| 3 | + EditableFieldString, EditableFieldValue, IdentityDocumentCredential, PassportCredential, |
| 4 | + PersonNameCredential, |
4 | 5 | }; |
5 | 6 |
|
6 | 7 | use crate::{cxf::editable_field::create_field, Field, Identity}; |
@@ -421,18 +422,22 @@ impl From<Identity> for Vec<Credential> { |
421 | 422 | } |
422 | 423 |
|
423 | 424 | // Handle unmapped Identity fields as custom fields |
424 | | - let custom_fields: Vec<EditableField<EditableFieldString>> = [ |
425 | | - identity.email.as_ref().map(|email| EditableField { |
426 | | - id: None, |
427 | | - label: Some("Email".to_string()), |
428 | | - value: EditableFieldString(email.clone()), |
429 | | - extensions: None, |
| 425 | + let custom_fields: Vec<EditableFieldValue> = [ |
| 426 | + identity.email.as_ref().map(|email| { |
| 427 | + EditableFieldValue::String(EditableField { |
| 428 | + id: None, |
| 429 | + label: Some("Email".to_string()), |
| 430 | + value: EditableFieldString(email.clone()), |
| 431 | + extensions: None, |
| 432 | + }) |
430 | 433 | }), |
431 | | - identity.username.as_ref().map(|username| EditableField { |
432 | | - id: None, |
433 | | - label: Some("Username".to_string()), |
434 | | - value: EditableFieldString(username.clone()), |
435 | | - extensions: None, |
| 434 | + identity.username.as_ref().map(|username| { |
| 435 | + EditableFieldValue::String(EditableField { |
| 436 | + id: None, |
| 437 | + label: Some("Username".to_string()), |
| 438 | + value: EditableFieldString(username.clone()), |
| 439 | + extensions: None, |
| 440 | + }) |
436 | 441 | }), |
437 | 442 | ] |
438 | 443 | .into_iter() |
@@ -752,13 +757,21 @@ mod tests { |
752 | 757 |
|
753 | 758 | // Check email field |
754 | 759 | let email_field = &custom_fields.fields[0]; |
755 | | - assert_eq!(email_field.label.as_ref().unwrap(), "Email"); |
756 | | - assert_eq!(email_field .value .0, "[email protected]"); |
| 760 | + if let EditableFieldValue::String(email_field) = email_field { |
| 761 | + assert_eq!(email_field.label.as_ref().unwrap(), "Email"); |
| 762 | + assert_eq!(email_field .value .0, "[email protected]"); |
| 763 | + } else { |
| 764 | + panic!("Expected email field to be of type String"); |
| 765 | + } |
757 | 766 |
|
758 | 767 | // Check username field |
759 | 768 | let username_field = &custom_fields.fields[1]; |
760 | | - assert_eq!(username_field.label.as_ref().unwrap(), "Username"); |
761 | | - assert_eq!(username_field.value.0, "johndoe"); |
| 769 | + if let EditableFieldValue::String(username_field) = username_field { |
| 770 | + assert_eq!(username_field.label.as_ref().unwrap(), "Username"); |
| 771 | + assert_eq!(username_field.value.0, "johndoe"); |
| 772 | + } else { |
| 773 | + panic!("Expected username field to be of type String"); |
| 774 | + } |
762 | 775 | } else { |
763 | 776 | panic!("Expected CustomFields credential"); |
764 | 777 | } |
|
0 commit comments