1
2
3
4
5
6
7 package org.mule.transport.jdbc.config;
8
9 import org.mule.api.endpoint.ImmutableEndpoint;
10 import org.mule.tck.junit4.FunctionalTestCase;
11 import org.mule.transaction.MuleTransactionConfig;
12 import org.mule.transaction.XaTransactionFactory;
13 import org.mule.transport.jdbc.ExtendedQueryRunner;
14 import org.mule.transport.jdbc.JdbcConnector;
15 import org.mule.transport.jdbc.JdbcTransactionFactory;
16 import org.mule.transport.jdbc.sqlstrategy.DefaultSqlStatementStrategyFactory;
17 import org.mule.transport.jdbc.test.TestDataSource;
18
19 import org.apache.commons.dbutils.QueryRunner;
20 import org.junit.Test;
21
22 import static org.junit.Assert.assertEquals;
23 import static org.junit.Assert.assertNotNull;
24 import static org.junit.Assert.assertNull;
25 import static org.junit.Assert.assertTrue;
26
27 public class JdbcNamespaceHandlerTestCase extends FunctionalTestCase
28 {
29
30 @Override
31 protected String getConfigResources()
32 {
33 return "jdbc-namespace-config.xml";
34 }
35
36 @Test
37 public void testWithDataSource() throws Exception
38 {
39 JdbcConnector c = (JdbcConnector) muleContext.getRegistry().lookupConnector("jdbcConnector1");
40 assertNotNull(c);
41
42 assertTrue(c.getDataSource() instanceof TestDataSource);
43 assertNull(c.getQueries());
44 assertEquals(-1, c.getQueryTimeout());
45 }
46
47 @Test
48 public void testWithDataSourceViaJndi() throws Exception
49 {
50 JdbcConnector c = (JdbcConnector) muleContext.getRegistry().lookupConnector("jdbcConnector2");
51 assertNotNull(c);
52
53 assertTrue(c.getDataSource() instanceof TestDataSource);
54 assertNull(c.getQueries());
55 assertTrue(c.isConnected());
56 assertTrue(c.isStarted());
57 assertEquals(3, c.getQueryTimeout());
58 }
59
60 @Test
61 public void testFullyConfigured() throws Exception
62 {
63 JdbcConnector c = (JdbcConnector) muleContext.getRegistry().lookupConnector("jdbcConnector3");
64 assertNotNull(c);
65
66 assertTrue(c.getDataSource() instanceof TestDataSource);
67
68 assertNotNull(c.getQueries());
69 assertEquals(3, c.getQueries().size());
70
71 assertTrue(c.isConnected());
72 assertTrue(c.isStarted());
73
74 assertTrue(c.isValidateConnections());
75 }
76
77 @Test
78 public void testEndpointQueryOverride() throws Exception
79 {
80 JdbcConnector c = (JdbcConnector) muleContext.getRegistry().lookupConnector("jdbcConnector3");
81 ImmutableEndpoint testJdbcEndpoint = muleContext.getEndpointFactory()
82 .getInboundEndpoint("testJdbcEndpoint");
83
84
85 assertNotNull(c.getQuery(testJdbcEndpoint, "getTest"));
86
87
88 assertNotNull(c.getQuery(testJdbcEndpoint, "getTest2"));
89 assertEquals("OVERRIDDEN VALUE", c.getQuery(testJdbcEndpoint, "getTest2"));
90
91
92 assertNotNull(c.getQuery(testJdbcEndpoint, "getTest3"));
93
94
95 assertNull(c.getQuery(testJdbcEndpoint, "getTest4"));
96 assertEquals("3", testJdbcEndpoint.getProperty("queryTimeout"));
97
98 QueryRunner queryRunner = c.getQueryRunnerFor(testJdbcEndpoint);
99 assertEquals(ExtendedQueryRunner.class, queryRunner.getClass());
100 assertEquals(3, ((ExtendedQueryRunner) queryRunner).getQueryTimeout());
101 }
102
103 @Test
104 public void testEndpointWithTransaction() throws Exception
105 {
106 ImmutableEndpoint endpoint = muleContext.getRegistry().
107 lookupEndpointBuilder("endpointWithTransaction").buildInboundEndpoint();
108 assertNotNull(endpoint);
109 assertEquals(JdbcTransactionFactory.class,
110 endpoint.getTransactionConfig().getFactory().getClass());
111 assertEquals(MuleTransactionConfig.ACTION_NONE,
112 endpoint.getTransactionConfig().getAction());
113 assertEquals("-1", endpoint.getProperty("queryTimeout"));
114 }
115
116 @Test
117 public void testEndpointWithXaTransaction() throws Exception
118 {
119 ImmutableEndpoint endpoint = muleContext.getRegistry().
120 lookupEndpointBuilder("endpointWithXaTransaction").buildInboundEndpoint();
121 assertNotNull(endpoint);
122 assertEquals(XaTransactionFactory.class,
123 endpoint.getTransactionConfig().getFactory().getClass());
124 assertEquals(MuleTransactionConfig.ACTION_ALWAYS_BEGIN,
125 endpoint.getTransactionConfig().getAction());
126 }
127
128 @Test
129 public void testSqlStatementStrategyFactoryOverride() throws Exception
130 {
131
132 JdbcConnector c = (JdbcConnector) muleContext.getRegistry().lookupConnector("jdbcConnector4");
133 assertNotNull(c.getSqlStatementStrategyFactory());
134 assertTrue(c.getSqlStatementStrategyFactory() instanceof TestSqlStatementStrategyFactory);
135
136
137 c = (JdbcConnector) muleContext.getRegistry().lookupConnector("jdbcConnector5");
138 assertNotNull(c.getSqlStatementStrategyFactory());
139 assertTrue(c.getSqlStatementStrategyFactory() instanceof TestSqlStatementStrategyFactory);
140 }
141
142 public static class TestSqlStatementStrategyFactory extends DefaultSqlStatementStrategyFactory
143 {
144
145 }
146 }