Package com.consol.citrus.jms.actions

Source Code of com.consol.citrus.jms.actions.PurgeJmsQueuesActionTest

/*
* Copyright 2006-2010 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.consol.citrus.jms.actions;

import com.consol.citrus.jms.endpoint.TextMessageImpl;
import com.consol.citrus.testng.AbstractTestNGUnitTest;
import org.easymock.EasyMock;
import org.testng.annotations.Test;

import javax.jms.*;
import javax.jms.Queue;
import java.util.*;

import static org.easymock.EasyMock.*;

/**
* @author Christoph Deppisch
*/
public class PurgeJmsQueuesActionTest extends AbstractTestNGUnitTest {
 
    private ConnectionFactory connectionFactory = EasyMock.createMock(ConnectionFactory.class);
    private Connection connection = EasyMock.createMock(Connection.class);
    private Session session = EasyMock.createMock(Session.class);
    private MessageConsumer messageConsumer = EasyMock.createMock(MessageConsumer.class);
   
    private Queue queue = EasyMock.createMock(Queue.class);
   
    @Test
    public void testPurgeWithQueueNamesConsumeMessages() throws JMSException {
        PurgeJmsQueuesAction purgeQueuesAction = new PurgeJmsQueuesAction();
        purgeQueuesAction.setConnectionFactory(connectionFactory);
       
        List<String> queueNames = new ArrayList<String>();
        queueNames.add("myQueue");
        purgeQueuesAction.setQueueNames(queueNames);
       
        Map<String, Object> requestHeaders = new HashMap<String, Object>();
        TextMessage jmsRequest = new TextMessageImpl("<TestRequest>Hello World!</TestRequest>", requestHeaders);
       
        reset(connectionFactory, connection, session, messageConsumer);
       
        expect(connectionFactory.createConnection()).andReturn(connection).once();
        connection.start();
        expectLastCall().once();
       
        expect(connection.createSession(anyBoolean(), anyInt())).andReturn(session).once();
       
        expect(session.createQueue("myQueue")).andReturn(queue).once();
       
        expect(session.createConsumer(queue)).andReturn(messageConsumer).once();
        expect(messageConsumer.receive(100L)).andReturn(jmsRequest).times(2).andReturn(null);
       
        replay(connectionFactory, connection, session, messageConsumer);
       
        purgeQueuesAction.execute(context);
       
        verify(connectionFactory, connection, session, messageConsumer);
    }
   
  @Test
  public void testPurgeWithQueueNamesNoMessages() throws JMSException {
    PurgeJmsQueuesAction purgeQueuesAction = new PurgeJmsQueuesAction();
    purgeQueuesAction.setConnectionFactory(connectionFactory);
   
    List<String> queueNames = new ArrayList<String>();
    queueNames.add("myQueue");
    purgeQueuesAction.setQueueNames(queueNames);
   
    reset(connectionFactory, connection, session, messageConsumer);
       
        expect(connectionFactory.createConnection()).andReturn(connection).once();
        connection.start();
        expectLastCall().once();
       
        expect(connection.createSession(anyBoolean(), anyInt())).andReturn(session).once();
       
        expect(session.createQueue("myQueue")).andReturn(queue).once();
       
        expect(session.createConsumer(queue)).andReturn(messageConsumer).once();
        expect(messageConsumer.receive(100L)).andReturn(null).once();
       
        replay(connectionFactory, connection, session, messageConsumer);
   
    purgeQueuesAction.execute(context);
   
    verify(connectionFactory, connection, session, messageConsumer);
  }
 
  @Test
    public void testPurgeQueueNameList() throws JMSException {
        PurgeJmsQueuesAction purgeQueuesAction = new PurgeJmsQueuesAction();
        purgeQueuesAction.setConnectionFactory(connectionFactory);
       
        List<String> queueNames = new ArrayList<String>();
        queueNames.add("myQueue");
        queueNames.add("anotherQueue");
        queueNames.add("someQueue");
        purgeQueuesAction.setQueueNames(queueNames);
       
        reset(connectionFactory, connection, session, messageConsumer);
       
        expect(connectionFactory.createConnection()).andReturn(connection).once();
        connection.start();
        expectLastCall().once();
       
        expect(connection.createSession(anyBoolean(), anyInt())).andReturn(session).once();
       
        expect(session.createQueue("myQueue")).andReturn(queue).once();
        expect(session.createQueue("anotherQueue")).andReturn(queue).once();
        expect(session.createQueue("someQueue")).andReturn(queue).once();
       
        expect(session.createConsumer(queue)).andReturn(messageConsumer).times(3);
        expect(messageConsumer.receive(100L)).andReturn(null).times(3);
       
        replay(connectionFactory, connection, session, messageConsumer);
       
        purgeQueuesAction.execute(context);
       
        verify(connectionFactory, connection, session, messageConsumer);
    }
 
  @Test
    public void testPurgeQueueList() throws JMSException {
        PurgeJmsQueuesAction purgeQueuesAction = new PurgeJmsQueuesAction();
        purgeQueuesAction.setConnectionFactory(connectionFactory);
       
        List<Queue> queueNames = new ArrayList<Queue>();
        queueNames.add(queue);
        queueNames.add(queue);
        queueNames.add(queue);
        purgeQueuesAction.setQueues(queueNames);
       
        reset(connectionFactory, connection, session, messageConsumer, queue);
       
        expect(connectionFactory.createConnection()).andReturn(connection).once();
        connection.start();
        expectLastCall().once();
       
        expect(connection.createSession(anyBoolean(), anyInt())).andReturn(session).once();
       
        expect(queue.getQueueName()).andReturn("myQueue").times(3);
        expect(session.createConsumer(queue)).andReturn(messageConsumer).times(3);
        expect(messageConsumer.receive(100L)).andReturn(null).times(3);
       
        replay(connectionFactory, connection, session, messageConsumer, queue);
       
        purgeQueuesAction.execute(context);
       
        verify(connectionFactory, connection, session, messageConsumer, queue);
    }
  @Test
    public void testPurgeWithCustomTimeout() throws JMSException {
        PurgeJmsQueuesAction purgeQueuesAction = new PurgeJmsQueuesAction();
        purgeQueuesAction.setConnectionFactory(connectionFactory);
       
        purgeQueuesAction.setReceiveTimeout(500L);
       
        List<String> queueNames = new ArrayList<String>();
        queueNames.add("myQueue");
        purgeQueuesAction.setQueueNames(queueNames);
       
        reset(connectionFactory, connection, session, messageConsumer);
       
        expect(connectionFactory.createConnection()).andReturn(connection).once();
        connection.start();
        expectLastCall().once();
       
        expect(connection.createSession(anyBoolean(), anyInt())).andReturn(session).once();
       
        expect(session.createQueue("myQueue")).andReturn(queue).once();
       
        expect(session.createConsumer(queue)).andReturn(messageConsumer).once();
        expect(messageConsumer.receive(500L)).andReturn(null).once();
       
        replay(connectionFactory, connection, session, messageConsumer);
       
        purgeQueuesAction.execute(context);
       
        verify(connectionFactory, connection, session, messageConsumer);
    }
}
TOP

Related Classes of com.consol.citrus.jms.actions.PurgeJmsQueuesActionTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.