public async Task OTAA_Join_With_Wrong_AppKey_Fails() { var device = TestFixtureCi.Device3_OTAA; LogTestStart(device); var appKeyToUse = AppKey.Parse("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); Assert.NotEqual(appKeyToUse, device.AppKey); await ArduinoDevice.setDeviceModeAsync(LoRaArduinoSerial._device_mode_t.LWOTAA); await ArduinoDevice.setIdAsync(device.DevAddr, device.DeviceID, device.AppEui); await ArduinoDevice.setKeyAsync(device.NwkSKey, device.AppSKey, appKeyToUse); await ArduinoDevice.SetupLora(TestFixtureCi.Configuration); var joinSucceeded = await ArduinoDevice.setOTAAJoinAsyncWithRetry(LoRaArduinoSerial._otaa_join_cmd_t.JOIN, 20000, 3); Assert.False(joinSucceeded, "Join suceeded for invalid AppKey (mic check should fail)"); await TestFixtureCi.AssertNetworkServerModuleLogStartsWithAsync( $"{device.DeviceID}: join refused: invalid MIC", $"{device.DeviceID}: join request MIC invalid"); await ArduinoDevice.WaitForIdleAsync(); }
public async Task Test_ABP_Mismatch_NwkSKey_And_AppSKey_Fails_Mic_Validation() { var device = TestFixtureCi.Device7_ABP; LogTestStart(device); var appSKeyToUse = AppSessionKey.Parse("000102030405060708090A0B0C0D0E0F"); var nwkSKeyToUse = NetworkSessionKey.Parse("01020304050607080910111213141516"); Assert.NotEqual(appSKeyToUse, device.AppSKey); Assert.NotEqual(nwkSKeyToUse, device.NwkSKey); await ArduinoDevice.setDeviceModeAsync(LoRaArduinoSerial._device_mode_t.LWABP); await ArduinoDevice.setIdAsync(device.DevAddr, device.DeviceID, null); await ArduinoDevice.setKeyAsync(nwkSKeyToUse, appSKeyToUse, null); await ArduinoDevice.SetupLora(TestFixtureCi.Configuration); await ArduinoDevice.transferPacketAsync(GeneratePayloadMessage(), 10); // wait for serial logs to be ready await Task.Delay(Constants.DELAY_FOR_SERIAL_AFTER_SENDING_PACKET); // After transferPacket: Expectation from serial // +MSG: Done // await AssertUtils.ContainsWithRetriesAsync("+MSG: Done", this.lora.SerialLogs); // 0000000000000005: with devAddr 0028B1B0 check MIC failed. Device will be ignored from now on await TestFixtureCi.AssertNetworkServerModuleLogStartsWithAsync($"{device.DevAddr}: with devAddr {device.DevAddr} check MIC failed"); await Task.Delay(Constants.DELAY_BETWEEN_MESSAGES); TestFixtureCi.ClearLogs(); // Try with confirmed message await ArduinoDevice.transferPacketWithConfirmedAsync(GeneratePayloadMessage(), 10); await Task.Delay(Constants.DELAY_FOR_SERIAL_AFTER_SENDING_PACKET); // 0000000000000005: with devAddr 0028B1B0 check MIC failed await TestFixtureCi.AssertNetworkServerModuleLogStartsWithAsync($"{device.DevAddr}: with devAddr {device.DevAddr} check MIC failed"); // wait until arduino stops trying to send confirmed msg await ArduinoDevice.WaitForIdleAsync(); }
public async Task OTAA_Join_With_Wrong_DevEUI_Fails() { var device = TestFixtureCi.Device2_OTAA; LogTestStart(device); await ArduinoDevice.setDeviceModeAsync(LoRaArduinoSerial._device_mode_t.LWOTAA); await ArduinoDevice.setIdAsync(device.DevAddr, device.DeviceID, device.AppEui); await ArduinoDevice.setKeyAsync(device.NwkSKey, device.AppSKey, device.AppKey); await ArduinoDevice.SetupLora(TestFixtureCi.Configuration); var joinSucceeded = await ArduinoDevice.setOTAAJoinAsyncWithRetry(LoRaArduinoSerial._otaa_join_cmd_t.JOIN, 20000, 3); Assert.False(joinSucceeded, "Join suceeded for invalid DevEUI"); await ArduinoDevice.WaitForIdleAsync(); }
public async Task Test_ABP_Invalid_NwkSKey_Fails_With_Mic_Error() { var device = TestFixtureCi.Device8_ABP; LogTestStart(device); var nwkSKeyToUse = NetworkSessionKey.Parse("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); Assert.NotEqual(nwkSKeyToUse, device.NwkSKey); await ArduinoDevice.setDeviceModeAsync(LoRaArduinoSerial._device_mode_t.LWABP); await ArduinoDevice.setIdAsync(device.DevAddr, device.DeviceID, null); await ArduinoDevice.setKeyAsync(nwkSKeyToUse, device.AppSKey, null); await ArduinoDevice.SetupLora(TestFixtureCi.Configuration); await ArduinoDevice.transferPacketAsync(GeneratePayloadMessage(), 10); await Task.Delay(Constants.DELAY_BETWEEN_MESSAGES); // After transferPacket: Expectation from serial // +MSG: Done await AssertUtils.ContainsWithRetriesAsync("+MSG: Done", ArduinoDevice.SerialLogs); // 0000000000000008: with devAddr 0028B1B3 check MIC failed. Device will be ignored from now on await TestFixtureCi.AssertNetworkServerModuleLogStartsWithAsync($"{device.DevAddr}: with devAddr {device.DevAddr} check MIC failed"); TestFixtureCi.ClearLogs(); // Try with confirmed message await ArduinoDevice.transferPacketWithConfirmedAsync(GeneratePayloadMessage(), 10); await Task.Delay(Constants.DELAY_BETWEEN_MESSAGES); // 0000000000000008: with devAddr 0028B1B3 check MIC failed. await TestFixtureCi.AssertNetworkServerModuleLogStartsWithAsync($"{device.DevAddr}: with devAddr {device.DevAddr} check MIC failed"); // Before starting new test, wait until Lora drivers stops sending/receiving data await ArduinoDevice.WaitForIdleAsync(); }