diff --git a/services/commtest/src/tunnelbroker/socket.rs b/services/commtest/src/tunnelbroker/socket.rs --- a/services/commtest/src/tunnelbroker/socket.rs +++ b/services/commtest/src/tunnelbroker/socket.rs @@ -1,14 +1,23 @@ use crate::identity::device::DeviceInfo; use crate::service_addr; use futures_util::{SinkExt, StreamExt}; +use serde::{Deserialize, Serialize}; use tokio::net::TcpStream; use tokio_tungstenite::tungstenite::Message; use tokio_tungstenite::{connect_async, MaybeTlsStream, WebSocketStream}; use tunnelbroker_messages::{ ConnectionInitializationMessage, DeviceTypes, MessageSentStatus, - MessageToDevice, MessageToDeviceRequest, MessageToDeviceRequestStatus, + MessageToDeviceRequest, MessageToDeviceRequestStatus, }; +#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)] +#[serde(tag = "type", rename_all = "camelCase")] +pub struct WebSocketMessageToDevice { + #[serde(rename = "deviceID")] + pub device_id: String, + pub payload: String, +} + pub async fn create_socket( device_info: &DeviceInfo, ) -> WebSocketStream> { @@ -39,7 +48,7 @@ pub async fn send_message( socket: &mut WebSocketStream>, - message: MessageToDevice, + message: WebSocketMessageToDevice, ) -> Result> { let client_message_id = uuid::Uuid::new_v4().to_string(); let request = MessageToDeviceRequest { diff --git a/services/commtest/tests/tunnelbroker_integration_tests.rs b/services/commtest/tests/tunnelbroker_integration_tests.rs --- a/services/commtest/tests/tunnelbroker_integration_tests.rs +++ b/services/commtest/tests/tunnelbroker_integration_tests.rs @@ -7,16 +7,16 @@ MOCK_CLIENT_KEYS_1, MOCK_CLIENT_KEYS_2, }; use commtest::service_addr; -use commtest::tunnelbroker::socket::{create_socket, send_message}; +use commtest::tunnelbroker::socket::{ + create_socket, send_message, WebSocketMessageToDevice, +}; use futures_util::StreamExt; use proto::tunnelbroker_service_client::TunnelbrokerServiceClient; use proto::MessageToDevice; use std::time::Duration; use tokio::time::sleep; -use tunnelbroker_messages::{ - MessageToDevice as WebSocketMessageToDevice, RefreshKeyRequest, -}; +use tunnelbroker_messages::RefreshKeyRequest; #[tokio::test] async fn send_refresh_request() { diff --git a/services/commtest/tests/tunnelbroker_persist_tests.rs b/services/commtest/tests/tunnelbroker_persist_tests.rs --- a/services/commtest/tests/tunnelbroker_persist_tests.rs +++ b/services/commtest/tests/tunnelbroker_persist_tests.rs @@ -6,15 +6,15 @@ MOCK_CLIENT_KEYS_1, MOCK_CLIENT_KEYS_2, }; use commtest::service_addr; -use commtest::tunnelbroker::socket::{create_socket, send_message}; +use commtest::tunnelbroker::socket::{ + create_socket, send_message, WebSocketMessageToDevice, +}; use futures_util::StreamExt; use proto::tunnelbroker_service_client::TunnelbrokerServiceClient; use proto::MessageToDevice; use std::time::Duration; use tokio::time::sleep; -use tunnelbroker_messages::{ - MessageToDevice as WebSocketMessageToDevice, RefreshKeyRequest, -}; +use tunnelbroker_messages::RefreshKeyRequest; /// Tests that a message to an offline device gets pushed to dynamodb /// then recalled once a device connects diff --git a/shared/tunnelbroker_messages/src/messages/message_to_device.rs b/shared/tunnelbroker_messages/src/messages/message_to_device.rs --- a/shared/tunnelbroker_messages/src/messages/message_to_device.rs +++ b/shared/tunnelbroker_messages/src/messages/message_to_device.rs @@ -8,6 +8,8 @@ #[serde(rename = "deviceID")] pub device_id: String, pub payload: String, + #[serde(rename = "messageID")] + pub message_id: String, } #[cfg(test)] @@ -19,12 +21,14 @@ let example_payload = r#"{ "type": "MessageToDevice", "deviceID": "alice", - "payload": "message from Bob" + "payload": "message from Bob", + "messageID": "id234" }"#; let request = serde_json::from_str::(example_payload).unwrap(); assert_eq!(request.device_id, "alice"); assert_eq!(request.payload, "message from Bob"); + assert_eq!(request.message_id, "id234"); } }