public async Task When_PreferredWindow_Is_Not_Define_In_Twin_Should_Have_Window1_As_Preferred() { var twin = TestUtils.CreateTwin( desired: new Dictionary <string, object> { { "NwkSKey", "ABC02000000000000000000000000009ABC02000000000000000000000000009" }, { "AppSKey", "ABCD2000000000000000000000000009ABC02000000000000000000000000009" }, { "DevAddr", "0000AABB" }, { "GatewayID", "mygateway" }, { "SensorDecoder", "DecoderValueSensor" }, { "$version", 1 }, }, reported: new Dictionary <string, object> { { "$version", 1 }, { "NwkSKey", "ABC02000000000000000000000000009ABC02000000000000000000000000009" }, { "AppSKey", "ABCD2000000000000000000000000009ABC02000000000000000000000000009" }, { "DevAddr", "0000AABB" }, }); this.loRaDeviceClient.Setup(x => x.GetTwinAsync()) .ReturnsAsync(twin); var loRaDevice = new LoRaDevice("00000001", "ABC0200000000009", new SingleDeviceConnectionManager(this.loRaDeviceClient.Object)); await loRaDevice.InitializeAsync(); Assert.Equal(1, loRaDevice.PreferredWindow); }
public async Task When_Initialized_With_Keep_Alive_Should_Read_Value_From_Twin(object keepAliveTimeoutValue, int expectedKeepAliveTimeout) { var twin = TestUtils.CreateTwin( desired: new Dictionary <string, object> { { "NwkSKey", "ABC02000000000000000000000000009ABC02000000000000000000000000009" }, { "AppSKey", "ABCD2000000000000000000000000009ABC02000000000000000000000000009" }, { "DevAddr", "0000AABB" }, { "GatewayID", "mygateway" }, { "SensorDecoder", "DecoderValueSensor" }, { "KeepAliveTimeout", keepAliveTimeoutValue }, { "$version", 1 }, }, reported: new Dictionary <string, object> { { "$version", 1 }, { "NwkSKey", "ABC02000000000000000000000000009ABC02000000000000000000000000009" }, { "AppSKey", "ABCD2000000000000000000000000009ABC02000000000000000000000000009" }, { "DevAddr", "0000AABB" } }); this.loRaDeviceClient.Setup(x => x.GetTwinAsync()) .ReturnsAsync(twin); var loRaDevice = new LoRaDevice("00000001", "ABC0200000000009", new SingleDeviceConnectionManager(this.loRaDeviceClient.Object)); await loRaDevice.InitializeAsync(); Assert.Equal(expectedKeepAliveTimeout, loRaDevice.KeepAliveTimeout); }
public async Task When_Downlink_Is_Enabled_In_Twin_Should_Have_DownlinkEnabled_Equals_True(object downlinkTwinPropertyValue) { var twin = TestUtils.CreateTwin( desired: new Dictionary <string, object> { { "NwkSKey", "ABC02000000000000000000000000009ABC02000000000000000000000000009" }, { "AppSKey", "ABCD2000000000000000000000000009ABC02000000000000000000000000009" }, { "DevAddr", "0000AABB" }, { "GatewayID", "mygateway" }, { "SensorDecoder", "DecoderValueSensor" }, { TwinProperty.DownlinkEnabled, downlinkTwinPropertyValue }, { "$version", 1 }, }, reported: new Dictionary <string, object> { { "$version", 1 }, { "NwkSKey", "ABC02000000000000000000000000009ABC02000000000000000000000000009" }, { "AppSKey", "ABCD2000000000000000000000000009ABC02000000000000000000000000009" }, { "DevAddr", "0000AABB" }, }); this.loRaDeviceClient.Setup(x => x.GetTwinAsync()) .ReturnsAsync(twin); var loRaDevice = new LoRaDevice("00000001", "ABC0200000000009", new SingleDeviceConnectionManager(this.loRaDeviceClient.Object)); await loRaDevice.InitializeAsync(); Assert.True(loRaDevice.DownlinkEnabled); }
public async Task When_Initialized_New_OTAA_Device_Should_Have_All_Properties() { var twin = TestUtils.CreateTwin( desired: new Dictionary <string, object> { { "AppEUI", "ABC0200000000009" }, { "AppKey", "ABC02000000000000000000000000009" }, { "GatewayID", "mygateway" }, { "SensorDecoder", "DecoderValueSensor" }, { "$version", 1 }, }, reported: new Dictionary <string, object> { { "$version", 1 }, }); this.loRaDeviceClient.Setup(x => x.GetTwinAsync()) .ReturnsAsync(twin); var loRaDevice = new LoRaDevice(string.Empty, "ABC0200000000009", this.loRaDeviceClient.Object); await loRaDevice.InitializeAsync(); Assert.Equal("ABC0200000000009", loRaDevice.AppEUI); Assert.Equal("ABC02000000000000000000000000009", loRaDevice.AppKey); Assert.Equal("mygateway", loRaDevice.GatewayID); Assert.Equal("DecoderValueSensor", loRaDevice.SensorDecoder); Assert.Empty(loRaDevice.AppSKey ?? string.Empty); Assert.Empty(loRaDevice.NwkSKey ?? string.Empty); Assert.Empty(loRaDevice.DevAddr ?? string.Empty); Assert.Empty(loRaDevice.DevNonce ?? string.Empty); Assert.Empty(loRaDevice.NetID ?? string.Empty); Assert.False(loRaDevice.IsABP); Assert.False(loRaDevice.IsOurDevice); }
public async Task When_Initialized_With_Class_C_And_Custom_RX2DR_Should_Have_Correct_Properties() { const string appSKey = "ABCD2000000000000000000000000009ABC02000000000000000000000000009"; const string nwkSKey = "ABC02000000000000000000000000009ABC02000000000000000000000000009"; var twin = TestUtils.CreateTwin( desired: new Dictionary <string, object> { { "AppEUI", "ABC02000000000000000000000000009ABC02000000000000000000000000009" }, { "AppKey", "ABCD2000000000000000000000000009ABC02000000000000000000000000009" }, { "ClassType", "C" }, { "GatewayID", "mygateway" }, { "SensorDecoder", "http://mydecoder" }, { "RX2DataRate", "10" }, { "$version", 1 }, }, reported: new Dictionary <string, object> { { "$version", 1 }, { "NwkSKey", nwkSKey }, { "AppSKey", appSKey }, { "DevAddr", "0000AABB" }, { "FCntDown", 9 }, { "FCntUp", 100 }, { "DevEUI", "ABC0200000000009" }, { "NetId", "010000" }, { "DevNonce", "C872" }, { "RX2DataRate", 10 }, { "Region", "US915" }, }); this.loRaDeviceClient.Setup(x => x.GetTwinAsync()) .ReturnsAsync(twin); var loRaDevice = new LoRaDevice("00000001", "ABC0200000000009", new SingleDeviceConnectionManager(this.loRaDeviceClient.Object)); await loRaDevice.InitializeAsync(); Assert.Equal(LoRaDeviceClassType.C, loRaDevice.ClassType); Assert.Equal("mygateway", loRaDevice.GatewayID); Assert.Equal(9u, loRaDevice.FCntDown); Assert.Equal(100u, loRaDevice.FCntUp); Assert.Equal(10, loRaDevice.ReportedRX2DataRate.Value); Assert.Equal(10, loRaDevice.DesiredRX2DataRate.Value); Assert.Equal(appSKey, loRaDevice.AppSKey); Assert.Equal(nwkSKey, loRaDevice.NwkSKey); Assert.Equal(LoRaRegionType.US915, loRaDevice.LoRaRegion); Assert.False(loRaDevice.IsABP); }
public async Task When_Initialized_With_PreferredGateway_And_Region_Should_Get_Properties( [CombinatorialValues("EU868", "3132", "eu868", "US915", "us915", "eu")] string regionValue) { var twin = TestUtils.CreateTwin( desired: new Dictionary <string, object> { { "NwkSKey", "ABC02000000000000000000000000009ABC02000000000000000000000000009" }, { "AppSKey", "ABCD2000000000000000000000000009ABC02000000000000000000000000009" }, { "DevAddr", "0000AABB" }, { "GatewayID", "mygateway" }, { "SensorDecoder", "DecoderValueSensor" }, { "$version", 1 }, }, reported: new Dictionary <string, object> { { "$version", 1 }, { "NwkSKey", "ABC02000000000000000000000000009ABC02000000000000000000000000009" }, { "AppSKey", "ABCD2000000000000000000000000009ABC02000000000000000000000000009" }, { "DevAddr", "0000AABB" }, { "FCntDown", 10 }, { "FCntUp", 20 }, { "PreferredGatewayID", "gateway1" }, { "Region", regionValue } }); this.loRaDeviceClient.Setup(x => x.GetTwinAsync()) .ReturnsAsync(twin); var loRaDevice = new LoRaDevice("00000001", "ABC0200000000009", new SingleDeviceConnectionManager(this.loRaDeviceClient.Object)); await loRaDevice.InitializeAsync(); Assert.Equal("gateway1", loRaDevice.PreferredGatewayID); if (string.Equals(LoRaRegionType.EU868.ToString(), regionValue, StringComparison.InvariantCultureIgnoreCase)) { Assert.Equal(LoRaRegionType.EU868, loRaDevice.LoRaRegion); } else if (string.Equals(LoRaRegionType.US915.ToString(), regionValue, StringComparison.InvariantCultureIgnoreCase)) { Assert.Equal(LoRaRegionType.US915, loRaDevice.LoRaRegion); } else { Assert.Equal(LoRaRegionType.NotSet, loRaDevice.LoRaRegion); } }
public async Task When_Initialized_New_OTAA_Device_Should_Have_All_Properties() { var appKey = TestKeys.CreateAppKey(0xABC0200000000000, 0x09); var joinEui = new JoinEui(0xABC0200000000009); var twin = TestUtils.CreateTwin( desired: new Dictionary <string, object> { { "AppEUI", joinEui.ToString() }, { "AppKey", appKey.ToString() }, { "GatewayID", "mygateway" }, { "SensorDecoder", "DecoderValueSensor" }, { "$version", 1 }, }, reported: new Dictionary <string, object> { { "$version", 1 }, }); this.loRaDeviceClient.Setup(x => x.GetTwinAsync(CancellationToken.None)) .ReturnsAsync(twin); using var connectionManager = new SingleDeviceConnectionManager(this.loRaDeviceClient.Object); using var loRaDevice = new LoRaDevice(null, new DevEui(0xabc0200000000009), connectionManager); await loRaDevice.InitializeAsync(this.configuration); Assert.Equal(joinEui, loRaDevice.AppEui); Assert.Equal(appKey, loRaDevice.AppKey); Assert.Equal("mygateway", loRaDevice.GatewayID); Assert.Equal("DecoderValueSensor", loRaDevice.SensorDecoder); Assert.Equal(0U, loRaDevice.FCntDown); Assert.Equal(0U, loRaDevice.LastSavedFCntDown); Assert.Equal(0U, loRaDevice.FCntUp); Assert.Equal(0U, loRaDevice.LastSavedFCntUp); Assert.False(loRaDevice.HasFrameCountChanges); Assert.Null(loRaDevice.AppSKey); Assert.Null(loRaDevice.NwkSKey); Assert.Null(loRaDevice.DevAddr); Assert.Null(loRaDevice.DevNonce); Assert.Null(loRaDevice.NetId); Assert.False(loRaDevice.IsABP); Assert.False(loRaDevice.IsOurDevice); Assert.Null(loRaDevice.ReportedDwellTimeSetting); }
public async Task When_Initialized_ABP_Device_Should_Have_All_Properties() { var twin = TestUtils.CreateTwin( desired: new Dictionary <string, object> { { "NwkSKey", "ABC02000000000000000000000000009ABC02000000000000000000000000009" }, { "AppSKey", "ABCD2000000000000000000000000009ABC02000000000000000000000000009" }, { "DevAddr", "0000AABB" }, { "GatewayID", "mygateway" }, { "SensorDecoder", "DecoderValueSensor" }, { "$version", 1 }, }, reported: new Dictionary <string, object> { { "$version", 1 }, { "NwkSKey", "ABC02000000000000000000000000009ABC02000000000000000000000000009" }, { "AppSKey", "ABCD2000000000000000000000000009ABC02000000000000000000000000009" }, { "DevAddr", "0000AABB" }, }); this.loRaDeviceClient.Setup(x => x.GetTwinAsync()) .ReturnsAsync(twin); var loRaDevice = new LoRaDevice("00000001", "ABC0200000000009", new SingleDeviceConnectionManager(this.loRaDeviceClient.Object)); await loRaDevice.InitializeAsync(); Assert.Empty(loRaDevice.AppEUI ?? string.Empty); Assert.Empty(loRaDevice.AppKey ?? string.Empty); Assert.Equal("mygateway", loRaDevice.GatewayID); Assert.Equal("DecoderValueSensor", loRaDevice.SensorDecoder); Assert.True(loRaDevice.IsABP); Assert.True(loRaDevice.IsOurDevice); Assert.Equal(0U, loRaDevice.FCntDown); Assert.Equal(0U, loRaDevice.LastSavedFCntDown); Assert.Equal(0U, loRaDevice.FCntUp); Assert.Equal(0U, loRaDevice.LastSavedFCntUp); Assert.False(loRaDevice.HasFrameCountChanges); Assert.Equal("ABC02000000000000000000000000009ABC02000000000000000000000000009", loRaDevice.NwkSKey); Assert.Equal("ABCD2000000000000000000000000009ABC02000000000000000000000000009", loRaDevice.AppSKey); Assert.Empty(loRaDevice.DevNonce ?? string.Empty); Assert.Equal("0000AABB", loRaDevice.DevAddr); }
public async Task When_Initialized_ABP_Device_Has_Fcnt_Should_Have_Non_Zero_Fcnt_Values() { var twin = TestUtils.CreateTwin( desired: new Dictionary <string, object> { { "NwkSKey", "ABC02000000000000000000000000009ABC02000000000000000000000000009" }, { "AppSKey", "ABCD2000000000000000000000000009ABC02000000000000000000000000009" }, { "DevAddr", "0000AABB" }, { "GatewayID", "mygateway" }, { "SensorDecoder", "DecoderValueSensor" }, { "$version", 1 }, }, reported: new Dictionary <string, object> { { "$version", 1 }, { "NwkSKey", "ABC02000000000000000000000000009ABC02000000000000000000000000009" }, { "AppSKey", "ABCD2000000000000000000000000009ABC02000000000000000000000000009" }, { "DevAddr", "0000AABB" }, { "FCntDown", 10 }, { "FCntUp", 20 }, }); this.loRaDeviceClient.Setup(x => x.GetTwinAsync()) .ReturnsAsync(twin); var loRaDevice = new LoRaDevice("00000001", "ABC0200000000009", new SingleDeviceConnectionManager(this.loRaDeviceClient.Object)); await loRaDevice.InitializeAsync(); Assert.True(loRaDevice.IsOurDevice); Assert.Equal(10U, loRaDevice.FCntDown); Assert.Equal(10U, loRaDevice.LastSavedFCntDown); Assert.Equal(20U, loRaDevice.FCntUp); Assert.Equal(20U, loRaDevice.LastSavedFCntUp); Assert.Empty(loRaDevice.PreferredGatewayID); Assert.Equal(LoRaRegionType.NotSet, loRaDevice.LoRaRegion); Assert.False(loRaDevice.HasFrameCountChanges); }