@Test public void testJavaBuilderWithClassName() throws InstantiationException, IllegalAccessException, ClassNotFoundException { final List<Object> constructorArgs = new ArrayList<Object>(); constructorArgs.add(5); constructorArgs.add(7); final List<Object> methodArgs = new ArrayList<Object>(); methodArgs.add(4); MockBuilder builder = new MockBuilder() { @Override public void configure() { java("com.consol.citrus.dsl.util.JavaTest") .constructorArgs(constructorArgs) .methodArgs(methodArgs) .method("add"); } }; builder.run(null, null); Assert.assertEquals(builder.testCase().getActions().size(), 1); Assert.assertEquals(builder.testCase().getActions().get(0).getClass(), JavaAction.class); JavaAction action = ((JavaAction) builder.testCase().getActions().get(0)); Assert.assertEquals(action.getName(), JavaAction.class.getSimpleName()); Assert.assertEquals(action.getClassName(), "com.consol.citrus.dsl.util.JavaTest"); Assert.assertNull(action.getInstance()); Assert.assertEquals(action.getMethodName(), "add"); Assert.assertEquals(action.getMethodArgs().size(), 1); }
@Test public void testJavaBuilderWithObjectInstance() throws InstantiationException, IllegalAccessException, ClassNotFoundException { final List<Object> methodArgs = new ArrayList<Object>(); methodArgs.add(new TestContext()); MockBuilder builder = new MockBuilder() { @Override public void configure() { java(new EchoAction()).methodArgs(methodArgs).method("execute"); } }; builder.run(null, null); Assert.assertEquals(builder.testCase().getActions().size(), 1); Assert.assertEquals(builder.testCase().getActions().get(0).getClass(), JavaAction.class); JavaAction action = ((JavaAction) builder.testCase().getActions().get(0)); Assert.assertEquals(action.getName(), JavaAction.class.getSimpleName()); Assert.assertNull(action.getClassName()); Assert.assertNotNull(action.getInstance()); Assert.assertEquals(action.getMethodName(), "execute"); Assert.assertEquals(action.getMethodArgs().size(), 1); }
@Test public void testExecutePLSQLBuilderWithStatement() { MockBuilder builder = new MockBuilder() { @Override public void configure() { plsql(dataSource) .statement("Test Statement") .statement("Test2 Statement") .statement("Test3 Statement"); } }; builder.run(null, null); Assert.assertEquals(builder.testCase().getActions().size(), 1); Assert.assertEquals( builder.testCase().getActions().get(0).getClass(), ExecutePLSQLAction.class); ExecutePLSQLAction action = (ExecutePLSQLAction) builder.testCase().getActions().get(0); Assert.assertEquals(action.getName(), ExecutePLSQLAction.class.getSimpleName()); Assert.assertEquals(action.isIgnoreErrors(), false); Assert.assertEquals( action.getStatements().toString(), "[Test Statement, Test2 Statement, Test3 Statement]"); Assert.assertNull(action.getScript()); Assert.assertNull(action.getSqlResourcePath()); Assert.assertEquals(action.getDataSource(), dataSource); }
@Test public void testExecutePLSQLBuilderWithSQLResource() throws IOException { MockBuilder builder = new MockBuilder() { @Override public void configure() { plsql(dataSource).sqlResource(sqlResource); } }; reset(sqlResource); expect(sqlResource.getInputStream()) .andReturn(new ByteArrayInputStream("testScript".getBytes())) .once(); replay(sqlResource); builder.run(null, null); Assert.assertEquals(builder.testCase().getActions().size(), 1); Assert.assertEquals( builder.testCase().getActions().get(0).getClass(), ExecutePLSQLAction.class); ExecutePLSQLAction action = (ExecutePLSQLAction) builder.testCase().getActions().get(0); Assert.assertEquals(action.getName(), ExecutePLSQLAction.class.getSimpleName()); Assert.assertEquals(action.isIgnoreErrors(), false); Assert.assertEquals(action.getStatements().size(), 0L); Assert.assertEquals(action.getScript(), "testScript"); Assert.assertEquals(action.getDataSource(), dataSource); }
@Test public void testPurgeChannelBuilderWithNames() { MockBuilder builder = new MockBuilder(applicationContextMock) { @Override public void configure() { purgeChannels() .channelResolver(channelResolver) .channelNames("ch1", "ch2", "ch3") .channel("ch4") .selector(messageSelector); } }; reset(applicationContextMock); expect(applicationContextMock.getBean(TestListeners.class)) .andReturn(new TestListeners()) .once(); expect(applicationContextMock.getBean(TestActionListeners.class)) .andReturn(new TestActionListeners()) .once(); expect(applicationContextMock.getBeansOfType(SequenceBeforeTest.class)) .andReturn(new HashMap<String, SequenceBeforeTest>()) .once(); replay(applicationContextMock); builder.run(null, null); Assert.assertEquals(builder.testCase().getActions().size(), 1); Assert.assertEquals( builder.testCase().getActions().get(0).getClass(), PurgeMessageChannelAction.class); PurgeMessageChannelAction action = (PurgeMessageChannelAction) builder.testCase().getActions().get(0); Assert.assertEquals(action.getChannelNames().size(), 4); Assert.assertEquals(action.getChannelNames().toString(), "[ch1, ch2, ch3, ch4]"); Assert.assertEquals(action.getChannelResolver(), channelResolver); Assert.assertEquals(action.getMessageSelector(), messageSelector); verify(applicationContextMock); }
@Test public void TestLoadBuilder() { MockBuilder builder = new MockBuilder(applicationContext) { @Override public void configure() { load("classpath:test.properties"); } }; builder.run(null, null); Assert.assertEquals(builder.testCase().getActions().size(), 1); Assert.assertEquals( builder.testCase().getActions().get(0).getClass(), LoadPropertiesAction.class); LoadPropertiesAction action = (LoadPropertiesAction) builder.testCase().getActions().get(0); Assert.assertEquals(action.getName(), "load"); Assert.assertEquals(action.getFilePath(), "classpath:test.properties"); }
@Test public void testPurgeChannelsBuilderWithChannels() { MockBuilder builder = new MockBuilder(applicationContext) { @Override public void configure() { purgeChannels().channels(channel1, channel2).channel(channel3); } }; builder.run(null, null); Assert.assertEquals(builder.testCase().getActions().size(), 1); Assert.assertEquals( builder.testCase().getActions().get(0).getClass(), PurgeMessageChannelAction.class); Assert.assertEquals(builder.testCase().getActions().get(0).getName(), "purge-channel"); PurgeMessageChannelAction action = (PurgeMessageChannelAction) builder.testCase().getActions().get(0); Assert.assertEquals(action.getChannels().size(), 3); Assert.assertEquals( action.getChannels().toString(), "[" + channel1.toString() + ", " + channel2.toString() + ", " + channel3.toString() + "]"); Assert.assertNull(action.getMessageSelector()); }
@Test public void testMissingChannelResolver() { MockBuilder builder = new MockBuilder(applicationContextMock) { @Override public void configure() { purgeChannels().channel("ch1"); } }; reset(applicationContextMock); expect(applicationContextMock.getBean(TestListeners.class)) .andReturn(new TestListeners()) .once(); expect(applicationContextMock.getBean(TestActionListeners.class)) .andReturn(new TestActionListeners()) .once(); expect(applicationContextMock.getBeansOfType(SequenceBeforeTest.class)) .andReturn(new HashMap<String, SequenceBeforeTest>()) .once(); replay(applicationContextMock); builder.run(null, null); Assert.assertEquals(builder.testCase().getActions().size(), 1); Assert.assertEquals( builder.testCase().getActions().get(0).getClass(), PurgeMessageChannelAction.class); PurgeMessageChannelAction action = (PurgeMessageChannelAction) builder.testCase().getActions().get(0); Assert.assertEquals(action.getChannelNames().size(), 1); Assert.assertEquals(action.getChannelNames().toString(), "[ch1]"); Assert.assertNotNull(action.getChannelResolver()); Assert.assertTrue(action.getChannelResolver() instanceof BeanFactoryChannelResolver); verify(applicationContextMock); }
@Test public void testExecutePLSQLBuilderWithInlineScript() { MockBuilder builder = new MockBuilder(applicationContext) { @Override public void configure() { plsql(dataSource).ignoreErrors(true).sqlScript("testScript"); } }; builder.run(null, null); Assert.assertEquals(builder.testCase().getActions().size(), 1); Assert.assertEquals( builder.testCase().getActions().get(0).getClass(), ExecutePLSQLAction.class); ExecutePLSQLAction action = (ExecutePLSQLAction) builder.testCase().getActions().get(0); Assert.assertEquals(action.getName(), "plsql"); Assert.assertEquals(action.isIgnoreErrors(), true); Assert.assertEquals(action.getStatements().size(), 0L); Assert.assertNull(action.getSqlResourcePath()); Assert.assertEquals(action.getScript(), "testScript"); Assert.assertEquals(action.getDataSource(), dataSource); }