From 094cff6174039febbf3fc3a4b64bc99085f79942 Mon Sep 17 00:00:00 2001 From: Dmytro Skarzhynets Date: Wed, 14 Feb 2024 14:01:20 +0200 Subject: [PATCH] Tell failure if originator is not a device --- .../thingsboard/rule/engine/action/TbDeviceStateNode.java | 7 +++++-- .../rule/engine/action/TbDeviceStateNodeTest.java | 7 ++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbDeviceStateNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbDeviceStateNode.java index 9d6901ea01..b0f426d905 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbDeviceStateNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/action/TbDeviceStateNode.java @@ -98,8 +98,11 @@ public class TbDeviceStateNode implements TbNode { return; } - if (!EntityType.DEVICE.equals(msg.getOriginator().getEntityType())) { - ctx.tellSuccess(msg); + EntityType originatorEntityType = msg.getOriginator().getEntityType(); + if (!EntityType.DEVICE.equals(originatorEntityType)) { + ctx.tellFailure(msg, new IllegalArgumentException( + "Unsupported originator entity type: [" + originatorEntityType + "]. Only DEVICE entity type is supported." + )); return; } diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbDeviceStateNodeTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbDeviceStateNodeTest.java index d66babea9a..19cb3c55bd 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbDeviceStateNodeTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/action/TbDeviceStateNodeTest.java @@ -263,7 +263,12 @@ public class TbDeviceStateNodeTest { node.onMsg(ctxMock, msg); // THEN - then(ctxMock).should().tellSuccess(msg); + var exceptionCaptor = ArgumentCaptor.forClass(Exception.class); + then(ctxMock).should().tellFailure(eq(msg), exceptionCaptor.capture()); + assertThat(exceptionCaptor.getValue()) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("Unsupported originator entity type: [" + unsupportedType + "]. Only DEVICE entity type is supported."); + then(ctxMock).shouldHaveNoMoreInteractions(); }