Skip to content

Commit

Permalink
refactor(pickup): refactor handle_live_delivery_change function
Browse files Browse the repository at this point in the history
  • Loading branch information
Hermann-Core committed Nov 12, 2024
1 parent ec8b4da commit f7ce91f
Showing 1 changed file with 46 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -208,33 +208,35 @@ pub async fn handle_live_delivery_change(
ensure_transport_return_route_is_decorated_all(&message)
.map_err(|_| PickupError::MalformedRequest("Missing return_route header".to_owned()))?;

if let Some(_live_delivery) = message.body.get("live_delivery").and_then(Value::as_bool) {
let mediator_did = &state.diddoc.id;
let sender_did = sender_did(&message)?;
let id = Uuid::new_v4().urn().to_string();
let pthid = message.thid.as_deref().unwrap_or(id.as_str());

let response_builder: MessageBuilder = LiveDeliveryChange {
id: id.as_str(),
pthid,
type_: PROBLEM_REPORT_2_0,
body: BodyLiveDeliveryChange {
code: "e.m.live-mode-not-supported",
comment: "Connection does not support Live Delivery",
},
}
.into();
match message.body.get("live_delivery").and_then(Value::as_bool) {
Some(true) => {
let mediator_did = &state.diddoc.id;
let sender_did = sender_did(&message)?;
let id = Uuid::new_v4().urn().to_string();
let pthid = message.thid.as_deref().unwrap_or(id.as_str());

let response_builder: MessageBuilder = LiveDeliveryChange {
id: id.as_str(),
pthid,
type_: PROBLEM_REPORT_2_0,
body: BodyLiveDeliveryChange {
code: "e.m.live-mode-not-supported",
comment: "Connection does not support Live Delivery",
},
}
.into();

let response = response_builder
.to(sender_did.to_owned())
.from(mediator_did.to_owned())
.finalize();
let response = response_builder
.to(sender_did.to_owned())
.from(mediator_did.to_owned())
.finalize();

Ok(Some(response))
} else {
Err(PickupError::MalformedRequest(
Ok(Some(response))
}
Some(false) => Ok(None),
None => Err(PickupError::MalformedRequest(
"Missing \"live_delivery\" specifier".to_owned(),
))
)),
}
}

Expand Down Expand Up @@ -720,6 +722,26 @@ mod tests {
);
}

#[tokio::test]
async fn test_handle_live_delivery_change_false() {
let state = setup(test_connections(), test_messages());

let request = Message::build(
"id_alice_live_delivery_change".to_owned(),
LIVE_MODE_CHANGE_3_0.to_owned(),
json!({"live_delivery": false}),
)
.thid("123".to_owned())
.header("return_route".into(), json!("all"))
.to(global::_mediator_did(&state))
.from(global::_edge_did())
.finalize();

let response = handle_live_delivery_change(state, request).await.unwrap();

assert_eq!(response, None);
}

#[tokio::test]
async fn test_handle_live_delivery_change_with_invalid_body() {
let state = setup(test_connections(), test_messages());
Expand Down

0 comments on commit f7ce91f

Please sign in to comment.