Skip to content

Commit 47a288f

Browse files
committed
data field in DataTransferRequest objects is optional
1 parent 5c90c01 commit 47a288f

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

src/tests/schema_validation/v2_0_1.rs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -871,10 +871,30 @@ mod tests {
871871
assert!(compiled.is_valid(&instance));
872872
}
873873
#[test]
874+
fn validate_data_transfer_request_no_data() {
875+
let test = DataTransferRequest {
876+
message_id: Some("message_id".to_string()),
877+
data: None,
878+
vendor_id: "vendor_id".to_string(),
879+
};
880+
let schema = include_str!("schemas/v2.0.1/DataTransferRequest.json");
881+
let schema = serde_json::from_str(schema).unwrap();
882+
let instance = serde_json::to_value(test).unwrap();
883+
let compiled = Validator::new(&schema).expect("A valid schema");
884+
let result = compiled.validate(&instance);
885+
if let Err(errors) = result {
886+
for error in errors {
887+
println!("Validation error: {}", error);
888+
println!("Instance path: {}", error.instance_path);
889+
}
890+
}
891+
assert!(compiled.is_valid(&instance));
892+
}
893+
#[test]
874894
fn validate_data_transfer_request() {
875895
let test = DataTransferRequest {
876896
message_id: Some("message_id".to_string()),
877-
data: "data".to_string(),
897+
data: Some("data".to_string()),
878898
vendor_id: "vendor_id".to_string(),
879899
};
880900
let schema = include_str!("schemas/v2.0.1/DataTransferRequest.json");
@@ -894,7 +914,7 @@ mod tests {
894914
fn validate_data_transfer_response() {
895915
let test = DataTransferResponse {
896916
status: DataTransferStatusEnumType::Accepted,
897-
data: "".to_string(),
917+
data: None,
898918
status_info: Some(StatusInfoType {
899919
reason_code: "".to_string(),
900920
additional_info: Some("".to_string()),

src/v2_0_1/messages/datatransfer.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ pub struct DataTransferRequest {
1313
#[serde(skip_serializing_if = "Option::is_none")]
1414
pub message_id: Option<String>,
1515
/// Data without specified length or format. This needs to be decided by both parties (Open to implementation).
16-
pub data: String,
16+
#[serde(skip_serializing_if = "Option::is_none")]
17+
pub data: Option<String>,
1718
/// This identifies the Vendor specific implementation
1819
#[validate(length(min = 0, max = 255))]
1920
pub vendor_id: String,
@@ -26,7 +27,8 @@ pub struct DataTransferResponse {
2627
/// This indicates the success or failure of the data transfer.
2728
pub status: DataTransferStatusEnumType,
2829
/// Data without specified length or format, in response to request.
29-
pub data: String,
30+
#[serde(skip_serializing_if = "Option::is_none")]
31+
pub data: Option<String>,
3032
/// Detailed status information.
3133
#[serde(skip_serializing_if = "Option::is_none")]
3234
pub status_info: Option<StatusInfoType>,

0 commit comments

Comments
 (0)