@ -17,14 +17,29 @@ package org.thingsboard.rule.engine.action;
import lombok.extern.slf4j.Slf4j ;
import lombok.extern.slf4j.Slf4j ;
import org.junit.jupiter.api.Test ;
import org.junit.jupiter.api.Test ;
import org.junit.jupiter.params.ParameterizedTest ;
import org.junit.jupiter.params.provider.EnumSource ;
import org.thingsboard.common.util.JacksonUtil ;
import org.thingsboard.rule.engine.api.TbContext ;
import org.thingsboard.rule.engine.api.TbNodeConfiguration ;
import org.thingsboard.rule.engine.api.TbNodeException ;
import org.thingsboard.server.common.data.id.TenantId ;
import org.thingsboard.server.common.data.id.TenantId ;
import org.thingsboard.server.common.data.script.ScriptLanguage ;
import org.thingsboard.server.common.msg.TbMsg ;
import org.thingsboard.server.common.msg.TbMsg ;
import org.thingsboard.server.common.msg.TbMsgMetaData ;
import org.thingsboard.server.common.msg.TbMsgMetaData ;
import java.util.Collections ;
import java.util.Collections ;
import java.util.Map ;
import java.util.Map ;
import java.util.UUID ;
import static org.assertj.core.api.Assertions.assertThat ;
import static org.assertj.core.api.Assertions.assertThat ;
import static org.mockito.ArgumentMatchers.any ;
import static org.mockito.ArgumentMatchers.anyString ;
import static org.mockito.Mockito.mock ;
import static org.mockito.Mockito.never ;
import static org.mockito.Mockito.spy ;
import static org.mockito.Mockito.verify ;
import static org.mockito.Mockito.verifyNoMoreInteractions ;
@Slf4j
@Slf4j
public class TbLogNodeTest {
public class TbLogNodeTest {
@ -61,6 +76,7 @@ public class TbLogNodeTest {
"Incoming metadata:\n" +
"Incoming metadata:\n" +
"{}" ) ;
"{}" ) ;
}
}
@Test
@Test
void givenNullDataMsg_whenToLog_thenReturnString ( ) {
void givenNullDataMsg_whenToLog_thenReturnString ( ) {
TbLogNode node = new TbLogNode ( ) ;
TbLogNode node = new TbLogNode ( ) ;
@ -77,4 +93,50 @@ public class TbLogNodeTest {
"{}" ) ;
"{}" ) ;
}
}
@ParameterizedTest
@EnumSource ( ScriptLanguage . class )
void givenDefaultConfig_whenIsStandardForEachScriptLanguage_thenTrue ( ScriptLanguage scriptLanguage ) throws TbNodeException {
TbLogNodeConfiguration config = new TbLogNodeConfiguration ( ) . defaultConfiguration ( ) ;
config . setScriptLang ( scriptLanguage ) ;
TbLogNode node = spy ( new TbLogNode ( ) ) ;
TbNodeConfiguration tbNodeConfiguration = new TbNodeConfiguration ( JacksonUtil . valueToTree ( config ) ) ;
TbContext ctx = mock ( TbContext . class ) ;
node . init ( ctx , tbNodeConfiguration ) ;
assertThat ( node . isStandard ( config ) ) . as ( "Script is standard for language " + scriptLanguage ) . isTrue ( ) ;
verify ( node , never ( ) ) . createScriptEngine ( any ( ) , any ( ) ) ;
verify ( ctx , never ( ) ) . createScriptEngine ( any ( ) , anyString ( ) ) ;
}
@Test
void givenScriptEngineEnum_whenNewAdded_thenFailed ( ) {
assertThat ( ScriptLanguage . values ( ) . length ) . as ( "only two ScriptLanguage supported" ) . isEqualTo ( 2 ) ;
}
@Test
void givenScriptEngineLangJs_whenCreateScriptEngine_thenSupplyJsScript ( ) {
TbLogNodeConfiguration configJs = new TbLogNodeConfiguration ( ) . defaultConfiguration ( ) ;
configJs . setScriptLang ( ScriptLanguage . JS ) ;
configJs . setJsScript ( configJs . getJsScript ( ) + " // This is JS script " + UUID . randomUUID ( ) ) ;
TbLogNode node = new TbLogNode ( ) ;
TbContext ctx = mock ( TbContext . class ) ;
node . createScriptEngine ( ctx , configJs ) ;
verify ( ctx ) . createScriptEngine ( ScriptLanguage . JS , configJs . getJsScript ( ) ) ;
verifyNoMoreInteractions ( ctx ) ;
}
@Test
void givenScriptEngineLangTbel_whenCreateScriptEngine_thenSupplyTbelScript ( ) {
TbLogNodeConfiguration configTbel = new TbLogNodeConfiguration ( ) . defaultConfiguration ( ) ;
configTbel . setScriptLang ( ScriptLanguage . TBEL ) ;
configTbel . setTbelScript ( configTbel . getTbelScript ( ) + " // This is TBEL script " + UUID . randomUUID ( ) ) ;
TbLogNode node = new TbLogNode ( ) ;
TbContext ctx = mock ( TbContext . class ) ;
node . createScriptEngine ( ctx , configTbel ) ;
verify ( ctx ) . createScriptEngine ( ScriptLanguage . TBEL , configTbel . getTbelScript ( ) ) ;
verifyNoMoreInteractions ( ctx ) ;
}
}
}