1   /*
2    * $Id: JmsMessageReceiverTestCase.java 10961 2008-02-22 19:01:02Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.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.endpoint.EndpointBuilder;
14  import org.mule.api.endpoint.InboundEndpoint;
15  import org.mule.api.lifecycle.InitialisationException;
16  import org.mule.api.transport.MessageReceiver;
17  import org.mule.config.i18n.MessageFactory;
18  import org.mule.endpoint.EndpointURIEndpointBuilder;
19  import org.mule.tck.testmodels.fruit.Orange;
20  import org.mule.transport.AbstractMessageReceiverTestCase;
21  
22  import com.mockobjects.dynamic.AnyConstraintMatcher;
23  import com.mockobjects.dynamic.Mock;
24  
25  import javax.jms.Connection;
26  import javax.jms.ConnectionFactory;
27  
28  public class JmsMessageReceiverTestCase extends AbstractMessageReceiverTestCase
29  {
30      private JmsConnector connector;
31  
32      protected void doSetUp() throws Exception
33      {
34          connector = new JmsConnector();
35          connector.setName("TestConnector");
36          connector.setSpecification("1.1");
37  
38          Mock connectionFactory = new Mock(ConnectionFactory.class);
39          Mock connection = new Mock(Connection.class);
40          connectionFactory.expectAndReturn("createConnection", connection.proxy());
41          connection.expect("setExceptionListener", new AnyConstraintMatcher());
42          connection.expect("close");
43          connection.expect("start");
44          connection.expect("stop");
45          connector.setConnectionFactory((ConnectionFactory) connectionFactory.proxy());
46          
47          connector.setMuleContext(muleContext);
48          //muleContext.applyLifecycle(connector);
49          muleContext.getRegistry().registerConnector(connector);
50          
51          super.doSetUp();
52      }
53  
54      public void testReceive() throws Exception
55      {
56          JmsMessageReceiver receiver = (JmsMessageReceiver)getMessageReceiver();
57          assertNotNull(receiver.getService());
58          assertNotNull(receiver.getConnector());
59          assertNotNull(receiver.getEndpoint());
60          // hmm how do we unit test a message receive
61          // receiver.onMessage((Message) getValidMessage());
62      }
63  
64      /*
65       * (non-Javadoc)
66       * 
67       * @see org.mule.tck.providers.AbstractMessageReceiverTestCase#getMessageReceiver()
68       */
69      public MessageReceiver getMessageReceiver() throws Exception
70      {
71          return new JmsMessageReceiver(endpoint.getConnector(), getTestService("orange", Orange.class), endpoint);
72      }
73  
74      public Object getValidMessage() throws Exception
75      {
76          return JmsConnectorTestCase.getMessage();
77      }
78  
79      public InboundEndpoint getEndpoint() throws Exception
80      {
81          EndpointBuilder builder = new EndpointURIEndpointBuilder("jms://testcase", muleContext);
82          if (connector == null)
83          {
84              throw new InitialisationException(MessageFactory.createStaticMessage("Connector has not been initialized."), null);
85          }
86          builder.setConnector(connector);
87          endpoint = muleContext.getRegistry().lookupEndpointFactory().getInboundEndpoint(builder);
88          return endpoint;
89      }
90  
91  }