1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.jms;
12
13 import org.mule.api.transaction.Transaction;
14 import org.mule.tck.AbstractMuleTestCase;
15 import org.mule.transaction.TransactionCoordination;
16
17 import static org.mockito.Mockito.mock;
18 import static org.mockito.Mockito.never;
19 import static org.mockito.Mockito.times;
20 import static org.mockito.Mockito.verify;
21 import static org.mockito.Mockito.when;
22
23 import org.mule.tck.AbstractMuleTestCase;
24
25 import javax.jms.Connection;
26 import javax.jms.ConnectionFactory;
27 import javax.jms.Session;
28
29 import org.mockito.Matchers;
30
31 public class JmsConnectorTestCase extends AbstractMuleTestCase
32 {
33 private static final String CLIENT_ID1 = "client1";
34 private static final String CLIENT_ID2 = "client2";
35
36
37
38
39 public void testSetClientIDInConnectorForFirstTime() throws Exception
40 {
41 final Connection connection = mock(Connection.class);
42 when(connection.getClientID()).thenReturn(null);
43
44 JmsSupport jmsSupport = mock(JmsSupport.class);
45 when(jmsSupport.createConnection(Matchers.<ConnectionFactory> any())).thenReturn(connection);
46
47 JmsConnector connector = new JmsConnector(muleContext);
48 connector.setClientId(CLIENT_ID1);
49 connector.setJmsSupport(jmsSupport);
50
51 Connection createdConnection = connector.createConnection();
52
53 assertEquals(connection, createdConnection);
54 verify(connection, times(1)).setClientID(Matchers.anyString());
55 verify(connection, times(1)).setClientID(CLIENT_ID1);
56 }
57
58
59
60
61 public void testSetClientIDInConnectorForSecondTime() throws Exception
62 {
63 final Connection connection = mock(Connection.class);
64 when(connection.getClientID()).thenReturn(CLIENT_ID1);
65
66 JmsSupport jmsSupport = mock(JmsSupport.class);
67 when(jmsSupport.createConnection(Matchers.<ConnectionFactory> any())).thenReturn(connection);
68
69 JmsConnector connector = new JmsConnector(muleContext);
70 connector.setClientId(CLIENT_ID2);
71 connector.setJmsSupport(jmsSupport);
72
73 Connection createdConnection = connector.createConnection();
74
75 assertEquals(connection, createdConnection);
76 verify(connection, times(1)).setClientID(Matchers.anyString());
77 verify(connection, times(1)).setClientID(CLIENT_ID2);
78 }
79
80
81
82
83
84 public void testSetClientIDInConnectionForFirstTime() throws Exception
85 {
86 final Connection connection = mock(Connection.class);
87 when(connection.getClientID()).thenReturn(CLIENT_ID1);
88
89 JmsSupport jmsSupport = mock(JmsSupport.class);
90 when(jmsSupport.createConnection(Matchers.<ConnectionFactory> any())).thenReturn(connection);
91
92 JmsConnector connector = new JmsConnector(muleContext);
93 connector.setClientId(CLIENT_ID1);
94 connector.setJmsSupport(jmsSupport);
95
96 Connection createdConnection = connector.createConnection();
97
98 assertEquals(connection, createdConnection);
99 verify(connection, times(0)).setClientID(Matchers.anyString());
100 }
101
102 public void testClosesSessionIfThereIsNoActiveTransaction() throws Exception
103 {
104 JmsConnector connector = new JmsConnector(muleContext);
105
106 Session session = mock(Session.class);
107 connector.closeSessionIfNoTransactionActive(session);
108 verify(session, times(1)).close();
109 }
110
111 public void testDoNotClosesSessionIfThereIsAnActiveTransaction() throws Exception
112 {
113 Transaction transaction = mock(Transaction.class);
114 TransactionCoordination.getInstance().bindTransaction(transaction);
115
116 JmsConnector connector = new JmsConnector(muleContext);
117
118 Session session = mock(Session.class);
119 connector.closeSessionIfNoTransactionActive(session);
120 verify(session, never()).close();
121 }
122 }