package rocks.inspectit.server.diagnosis.engine.rule; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.nullValue; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.when; import java.util.Map; import org.mockito.Mock; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import rocks.inspectit.server.diagnosis.engine.rule.ExecutionContext; import rocks.inspectit.server.diagnosis.engine.rule.RuleDefinition; import rocks.inspectit.server.diagnosis.engine.rule.RuleInput; import rocks.inspectit.server.diagnosis.engine.rule.SessionVariableInjection; import rocks.inspectit.server.diagnosis.engine.rule.exception.RuleExecutionException; import rocks.inspectit.server.diagnosis.engine.testrules.RuleDummy; import rocks.inspectit.shared.all.testbase.TestBase; /** * @author Claudio Waldvogel */ @SuppressWarnings("all") public class SessionVariableInjectionTest extends TestBase { @Mock RuleInput input; @Mock RuleDefinition definition; @Mock Map<String, Object> variables; @Mock(name = "instance") RuleDummy ruleImpl; /** * Tests {@link SessionVariableInjection#execute(ExecutionContext)} method. */ public static class Execute extends SessionVariableInjectionTest { private ExecutionContext context; @BeforeMethod public void init() { context = new ExecutionContext(definition, ruleImpl, input, variables); } @Test public void shouldInjectValue() throws RuleExecutionException { // prepare doReturn(true).when(variables).containsKey("var"); when(variables.get("var")).thenReturn(123); // execute new SessionVariableInjection("var", false, RuleDummy.sessionVariableIntField()).execute(context); // verify assertThat(ruleImpl.sessionIntVariable, is(123)); } @Test public void shouldRespectOptional() throws RuleExecutionException { // execute new SessionVariableInjection("var", true, RuleDummy.sessionVariableIntField()).execute(context); // verify assertThat(ruleImpl.sessionIntVariable, is(nullValue())); } @Test(expectedExceptions = RuleExecutionException.class) public void shouldFailDueToMissingVariable() throws RuleExecutionException { // execute new SessionVariableInjection("var", false, RuleDummy.sessionVariableIntField()).execute(context); } } }