| 1234 | |
| 1235 | #[tokio::test] |
| 1236 | async fn test_async_request() { |
| 1237 | let server = MockServer::start(); |
| 1238 | |
| 1239 | let c = Client::new(ClientConfig { |
| 1240 | sender_id: vec![1, 2, 3], |
| 1241 | server: server.url("/"), |
| 1242 | async_timeout: Duration::from_secs(1), |
| 1243 | ..Default::default() |
| 1244 | }) |
| 1245 | .unwrap(); |
| 1246 | |
| 1247 | let mut req = HomeNSReqPayload { |
| 1248 | base: BasePayload { |
| 1249 | sender_id: vec![1, 2, 3], |
| 1250 | receiver_id: vec![1, 2, 3, 4, 5, 6, 7, 8], |
| 1251 | message_type: MessageType::HomeNSReq, |
| 1252 | transaction_id: 1234, |
| 1253 | ..Default::default() |
| 1254 | }, |
| 1255 | dev_eui: vec![8, 7, 6, 5, 4, 3, 2, 1], |
| 1256 | }; |
| 1257 | |
| 1258 | let ans = HomeNSAnsPayload { |
| 1259 | base: BasePayloadResult { |
| 1260 | base: BasePayload { |
| 1261 | sender_id: vec![1, 2, 3, 4, 5, 6, 7, 8], |
| 1262 | receiver_id: vec![1, 2, 3], |
| 1263 | message_type: MessageType::HomeNSAns, |
| 1264 | transaction_id: 1234, |
| 1265 | ..Default::default() |
| 1266 | }, |
| 1267 | result: ResultPayload { |
| 1268 | result_code: ResultCode::Success, |
| 1269 | description: "".into(), |
| 1270 | }, |
| 1271 | }, |
| 1272 | h_net_id: vec![3, 2, 1], |
| 1273 | }; |
| 1274 | |
| 1275 | let mut mock = server.mock(|when, then| { |
| 1276 | when.method(POST) |
| 1277 | .path("/") |
| 1278 | .body(serde_json::to_string(&req).unwrap()); |
| 1279 | then.status(200); |
| 1280 | }); |
| 1281 | |
| 1282 | // OK |
| 1283 | let (tx, rx) = oneshot::channel(); |
| 1284 | tx.send(serde_json::to_vec(&ans).unwrap()).unwrap(); |
| 1285 | let resp = c |
| 1286 | .home_ns_req(vec![1, 2, 3, 4, 5, 6, 7, 8], &mut req, Some(rx)) |
| 1287 | .await |
| 1288 | .unwrap(); |
| 1289 | mock.assert(); |
| 1290 | mock.delete(); |
| 1291 | assert_eq!(resp, ans); |
| 1292 | |
| 1293 | // Timeout |