()
| 173 | |
| 174 | #[tokio::test] |
| 175 | async fn test_handle_uplink() { |
| 176 | let region_conf = lrwn::region::get(lrwn::region::CommonName::EU868, false, false); |
| 177 | let region_conf = Arc::new(region_conf); |
| 178 | |
| 179 | let upfs = UplinkFrameSet { |
| 180 | uplink_set_id: Uuid::nil(), |
| 181 | dr: 0, |
| 182 | ch: 0, |
| 183 | phy_payload: lrwn::PhyPayload { |
| 184 | mhdr: lrwn::MHDR { |
| 185 | f_type: lrwn::FType::UnconfirmedDataUp, |
| 186 | major: lrwn::Major::LoRaWANR1, |
| 187 | }, |
| 188 | payload: lrwn::Payload::MACPayload(lrwn::MACPayload { |
| 189 | fhdr: Default::default(), |
| 190 | f_port: None, |
| 191 | frm_payload: None, |
| 192 | }), |
| 193 | mic: Some([0, 0, 0, 0]), |
| 194 | }, |
| 195 | tx_info: Default::default(), |
| 196 | rx_info_set: Default::default(), |
| 197 | gateway_private_up_map: Default::default(), |
| 198 | gateway_private_down_map: Default::default(), |
| 199 | gateway_tenant_id_map: Default::default(), |
| 200 | gateway_downlink_priority_map: HashMap::new(), |
| 201 | region_common_name: lrwn::region::CommonName::EU868, |
| 202 | region_config_id: "eu868".into(), |
| 203 | roaming_meta_data: None, |
| 204 | }; |
| 205 | |
| 206 | let t: tenant::Tenant = Default::default(); |
| 207 | let app: application::Application = Default::default(); |
| 208 | let dp: device_profile::DeviceProfile = Default::default(); |
| 209 | let mut dev = device::Device { |
| 210 | dev_eui: EUI64::from_be_bytes([1, 2, 3, 4, 5, 6, 7, 8]), |
| 211 | device_session: Some( |
| 212 | internal::DeviceSession { |
| 213 | ..Default::default() |
| 214 | } |
| 215 | .into(), |
| 216 | ), |
| 217 | ..Default::default() |
| 218 | }; |
| 219 | |
| 220 | // must respond |
| 221 | let cmds = lrwn::MACCommandSet::new(vec![lrwn::MACCommand::RxTimingSetupAns]); |
| 222 | |
| 223 | let (resp, must_respond) = |
| 224 | handle_uplink(&upfs, &cmds, &t, &app, &dp, &mut dev, region_conf.clone()) |
| 225 | .await |
| 226 | .unwrap(); |
| 227 | assert_eq!(0, resp.len()); |
| 228 | assert!(must_respond); |
| 229 | |
| 230 | // mac-commands disabled |
| 231 | let mut conf = (*config::get()).clone(); |
| 232 | conf.network.mac_commands_disabled = true; |
nothing calls this directly
no test coverage detected