View Javadoc

1   /*
2    * $Id: JmsConnectorTestCase.java 19191 2010-08-25 21:05:23Z tcarlson $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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       * Tests that client ID is set on the connection if it is originally null.
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       * Tests that client ID is set on the connection if it has a different client ID.
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       * Tests that client ID is not set on the connection if it has the same client
82       * ID.
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 }