use of com.microsoft.azure.sdk.iot.device.DeviceTwin in project azure-iot-sdk-java by Azure.
the class DeviceTwinTest method desiredChangeResponseCallsGenericCBCBWithDesiredChangeIfNullCB.
/*
**Tests_SRS_DEVICETWIN_25_023: [**OnDesiredPropertyChange callback shall look for the user registered call back on the property that changed and if no callback is registered or is null then OnDesiredPropertyChange shall call the user on generic callback providing with the desired property change key and value pair**]**
*/
@Test
public void desiredChangeResponseCallsGenericCBCBWithDesiredChangeIfNullCB(@Mocked TwinParser mockedTwinParserObject) throws IOException {
DeviceTwin testTwin = new DeviceTwin(mockedDeviceIO, mockedConfig, mockedStatusCB, null, mockedGenericPropertyCB, null);
Map<Property, Pair<PropertyCallBack<String, Object>, Object>> desiredMap = new HashMap<>();
desiredMap.put(new Property("DesiredProp1", "DesiredValue1"), new Pair<>((PropertyCallBack<String, Object>) null, null));
testTwin.subscribeDesiredPropertiesNotification(desiredMap);
TwinChangedCallback onDesiredChange = Deencapsulation.newInnerInstance("OnDesiredPropertyChanged", testTwin);
final HashMap<String, Object> desiredPropertyMap = new HashMap<>();
desiredPropertyMap.put("DesiredProp1", "DesiredValue1");
//act
onDesiredChange.execute(desiredPropertyMap);
//assert
assertTrue(desiredPropertyMap.isEmpty());
new Verifications() {
{
mockedGenericPropertyCB.PropertyCall("DesiredProp1", "DesiredValue1", null);
times = 1;
desiredPropertyMap.remove("DesiredProp1");
times = 1;
}
};
}
use of com.microsoft.azure.sdk.iot.device.DeviceTwin in project azure-iot-sdk-java by Azure.
the class DeviceTwinTest method contructorSetAllPrivateMembersCorrectly.
/*
**Tests_SRS_DEVICETWIN_25_003: [**The constructor shall save all the parameters specified i.e client, config, deviceTwinCallback, genericPropertyCallback.**]**
*/
@Test
public void contructorSetAllPrivateMembersCorrectly() throws IOException {
//Arrange
//Act
DeviceTwin testTwin = new DeviceTwin(mockedDeviceIO, mockedConfig, mockedStatusCB, null, mockedGenericPropertyCB, null);
//Assert
TwinParser actualTwinParserObj = Deencapsulation.getField(testTwin, "twinParser");
DeviceIO actualClient = Deencapsulation.getField(testTwin, "deviceIO");
DeviceClientConfig actualConfig = Deencapsulation.getField(testTwin, "config");
IotHubEventCallback actualStatucCB = Deencapsulation.getField(testTwin, "deviceTwinStatusCallback");
PropertyCallBack actualPropCB = Deencapsulation.getField(testTwin, "deviceTwinGenericPropertyChangeCallback");
assertEquals(actualPropCB, mockedGenericPropertyCB);
assertEquals(actualStatucCB, mockedStatusCB);
assertEquals(actualClient, mockedDeviceIO);
assertEquals(actualConfig, mockedConfig);
}
use of com.microsoft.azure.sdk.iot.device.DeviceTwin in project azure-iot-sdk-java by Azure.
the class DeviceTwinTest method updateReportedPropSetsCorrectTwinOperation.
/*
**Tests_SRS_DEVICETWIN_25_012: [**The method shall create a device twin message with the serialized payload if not null to be sent IotHub.**]**
**Tests_SRS_DEVICETWIN_25_013: [**This method shall set the message type as DEVICE_OPERATION_TWIN_UPDATE_REPORTED_PROPERTIES_REQUEST by calling setDeviceOperationType.**]**
**Tests_SRS_DEVICETWIN_25_014: [**This method shall set the request id for the message by calling setRequestId .**]**
**Tests_SRS_DEVICETWIN_25_015: [**This method shall send the message to the lower transport layers by calling sendEventAsync.**]**
*/
@Test
public void updateReportedPropSetsCorrectTwinOperation(@Mocked final TwinParser mockedTwinParserObject, @Mocked final DeviceTwinMessage mockedDeviceTwinMessage) throws IOException {
final String mockedSerilizedProp = "SerializedReportedProperties";
new NonStrictExpectations() {
{
new TwinParser(withAny(new TwinChangedCallback() {
@Override
public void execute(Map<String, Object> map) {
}
}), withAny(new TwinChangedCallback() {
@Override
public void execute(Map<String, Object> map) {
}
}));
result = mockedTwinParserObject;
mockedTwinParserObject.updateReportedProperty(withAny(new HashMap<String, Object>()));
result = mockedSerilizedProp;
new DeviceTwinMessage(withAny(new byte[0]));
result = mockedDeviceTwinMessage;
}
};
DeviceTwin testTwin = new DeviceTwin(mockedDeviceIO, mockedConfig, mockedStatusCB, null, mockedGenericPropertyCB, null);
HashSet<Property> reportedProp = new HashSet<>();
testTwin.updateReportedProperties(reportedProp);
new Verifications() {
{
mockedTwinParserObject.updateReportedProperty(withAny(new HashMap<String, Object>()));
times = 1;
mockedDeviceTwinMessage.setRequestId(anyString);
times = 1;
mockedDeviceTwinMessage.setDeviceOperationType(DeviceOperations.DEVICE_OPERATION_TWIN_UPDATE_REPORTED_PROPERTIES_REQUEST);
times = 1;
mockedDeviceIO.sendEventAsync(mockedDeviceTwinMessage, (IotHubEventCallback) any, null);
times = 1;
}
};
}
use of com.microsoft.azure.sdk.iot.device.DeviceTwin in project azure-iot-sdk-java by Azure.
the class DeviceTwinTest method updateReportedPropThrowsExceptionPropIsNull.
/*
**Tests_SRS_DEVICETWIN_25_009: [**The method shall throw InvalidParameter Exception if reportedProperties is null.**]**
*/
@Test(expected = IllegalArgumentException.class)
public void updateReportedPropThrowsExceptionPropIsNull() throws IOException {
DeviceTwin testTwin = new DeviceTwin(mockedDeviceIO, mockedConfig, mockedStatusCB, null, mockedGenericPropertyCB, null);
testTwin.updateReportedProperties(null);
}
use of com.microsoft.azure.sdk.iot.device.DeviceTwin in project azure-iot-sdk-java by Azure.
the class DeviceTwinTest method desiredChangeResponseCallsUserGenericCBWithDesiredChangeIfUnsubscribedYet.
@Test
public void desiredChangeResponseCallsUserGenericCBWithDesiredChangeIfUnsubscribedYet(@Mocked TwinParser mockedTwinParserObject) throws IOException {
DeviceTwin testTwin = new DeviceTwin(mockedDeviceIO, mockedConfig, mockedStatusCB, null, mockedGenericPropertyCB, null);
TwinChangedCallback onDesiredChange = Deencapsulation.newInnerInstance("OnDesiredPropertyChanged", testTwin);
final HashMap<String, Object> desiredPropertyMap = new HashMap<>();
desiredPropertyMap.put("DesiredProp1", "DesiredValue1");
//act
onDesiredChange.execute(desiredPropertyMap);
//assert
assertTrue(desiredPropertyMap.isEmpty());
new Verifications() {
{
mockedGenericPropertyCB.PropertyCall("DesiredProp1", "DesiredValue1", null);
times = 1;
desiredPropertyMap.remove("DesiredProp1");
times = 1;
}
};
}
Aggregations