1   package com.diasparsoftware.javax.jms.test;
2   
3   import java.util.Collections;
4   
5   import javax.jms.*;
6   import javax.naming.InitialContext;
7   
8   import junit.framework.TestCase;
9   
10  import org.easymock.MockControl;
11  import org.mockejb.jndi.MockContextFactory;
12  
13  import com.diasparsoftware.javax.jms.JBossMapMessageSender;
14  import com.sun.jms.MapMessageImpl;
15  
16  public class SendMapMessageToJBossServerTest extends TestCase {
17      public void testHappyPath() throws Exception {
18          MockContextFactory.setAsInitial();
19  
20          String destinationQueueJndiName = "destinationQueue";
21          MapMessage mapMessage = new MapMessageImpl();
22  
23          MockControl queueConnectionFactoryControl =
24              MockControl.createControl(QueueConnectionFactory.class);
25  
26          QueueConnectionFactory queueConnectionFactory =
27              (QueueConnectionFactory) queueConnectionFactoryControl
28                  .getMock();
29  
30          MockControl queueConnectionControl =
31              MockControl.createControl(QueueConnection.class);
32  
33          QueueConnection queueConnection =
34              (QueueConnection) queueConnectionControl.getMock();
35  
36          MockControl queueSessionControl =
37              MockControl.createControl(QueueSession.class);
38  
39          QueueSession queueSession =
40              (QueueSession) queueSessionControl.getMock();
41  
42          MockControl queueControl =
43              MockControl.createControl(Queue.class);
44  
45          Queue queue = (Queue) queueControl.getMock();
46  
47          MockControl queueSenderControl =
48              MockControl.createControl(QueueSender.class);
49  
50          QueueSender queueSender =
51              (QueueSender) queueSenderControl.getMock();
52  
53          queueConnectionFactory.createQueueConnection();
54          queueConnectionFactoryControl.setReturnValue(queueConnection);
55  
56          queueConnection.createQueueSession(
57              false,
58              QueueSession.AUTO_ACKNOWLEDGE);
59          queueConnectionControl.setReturnValue(queueSession);
60  
61          queueConnection.start();
62          queueConnectionControl.setVoidCallable();
63  
64          queueSession.createMapMessage();
65          queueSessionControl.setReturnValue(mapMessage);
66  
67          queueSession.createSender(queue);
68          queueSessionControl.setReturnValue(queueSender);
69  
70          queueSender.send(mapMessage);
71          queueSenderControl.setVoidCallable();
72  
73          queueConnection.stop();
74          queueConnectionControl.setVoidCallable();
75  
76          queueSession.close();
77          queueSessionControl.setVoidCallable();
78  
79          queueConnection.close();
80          queueConnectionControl.setVoidCallable();
81  
82          InitialContext rootContext = new InitialContext();
83          rootContext.bind(
84              JBossMapMessageSender.QUEUE_CONNECTION_FACTORY_JNDI_NAME,
85              queueConnectionFactory);
86  
87          rootContext.bind(destinationQueueJndiName, queue);
88  
89          queueConnectionFactoryControl.replay();
90          queueConnectionControl.replay();
91          queueSessionControl.replay();
92          queueSenderControl.replay();
93          queueControl.replay();
94  
95          JBossMapMessageSender messageSender =
96              new JBossMapMessageSender();
97  
98          messageSender.sendMapMessage(
99              destinationQueueJndiName,
100             Collections.EMPTY_MAP);
101 
102         queueConnectionFactoryControl.verify();
103         queueConnectionControl.verify();
104         queueSessionControl.verify();
105         queueSenderControl.verify();
106         queueControl.verify();
107     }
108 }