/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.camel.component.rabbitmq;
import java.util.HashMap;
import java.util.Map;
import com.rabbitmq.client.ConnectionFactory;
import org.apache.camel.CamelContext;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.SimpleRegistry;
import org.junit.Test;
import org.mockito.Mockito;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
public class RabbitMQComponentTest {
private CamelContext context = Mockito.mock(CamelContext.class);
@Test
public void testDefaultProperties() throws Exception {
RabbitMQEndpoint endpoint = createEndpoint(new HashMap<String, Object>());
assertEquals(14, endpoint.getPortNumber());
assertEquals(10, endpoint.getThreadPoolSize());
assertEquals(true, endpoint.isAutoAck());
assertEquals(true, endpoint.isAutoDelete());
assertEquals(true, endpoint.isDurable());
assertEquals("direct", endpoint.getExchangeType());
assertEquals(ConnectionFactory.DEFAULT_CONNECTION_TIMEOUT, endpoint.getConnectionTimeout());
assertEquals(ConnectionFactory.DEFAULT_CHANNEL_MAX, endpoint.getRequestedChannelMax());
assertEquals(ConnectionFactory.DEFAULT_FRAME_MAX, endpoint.getRequestedFrameMax());
assertEquals(ConnectionFactory.DEFAULT_HEARTBEAT, endpoint.getRequestedHeartbeat());
assertNull(endpoint.getConnectionFactory());
}
@Test
public void testPropertiesSet() throws Exception {
Map<String, Object> params = new HashMap<String, Object>();
params.put("username", "coldplay");
params.put("password", "chrism");
params.put("autoAck", true);
params.put("vhost", "vman");
params.put("threadPoolSize", 515);
params.put("portNumber", 14123);
params.put("hostname", "special.host");
params.put("queue", "queuey");
params.put("exchangeType", "topic");
params.put("connectionTimeout", 123);
params.put("requestedChannelMax", 456);
params.put("requestedFrameMax", 789);
params.put("requestedHeartbeat", 321);
RabbitMQEndpoint endpoint = createEndpoint(params);
assertEquals("chrism", endpoint.getPassword());
assertEquals("coldplay", endpoint.getUsername());
assertEquals("queuey", endpoint.getQueue());
assertEquals("vman", endpoint.getVhost());
assertEquals("special.host", endpoint.getHostname());
assertEquals(14123, endpoint.getPortNumber());
assertEquals(515, endpoint.getThreadPoolSize());
assertEquals(true, endpoint.isAutoAck());
assertEquals(true, endpoint.isAutoDelete());
assertEquals(true, endpoint.isDurable());
assertEquals("topic", endpoint.getExchangeType());
assertEquals(123, endpoint.getConnectionTimeout());
assertEquals(456, endpoint.getRequestedChannelMax());
assertEquals(789, endpoint.getRequestedFrameMax());
assertEquals(321, endpoint.getRequestedHeartbeat());
}
private RabbitMQEndpoint createEndpoint(Map<String, Object> params) throws Exception {
String uri = "rabbitmq:special.host:14/queuey";
String remaining = "special.host:14/queuey";
return new RabbitMQComponent(context).createEndpoint(uri, remaining, params);
}
@Test
public void testConnectionFactoryRef() throws Exception {
SimpleRegistry registry = new SimpleRegistry();
ConnectionFactory connectionFactoryMock = Mockito.mock(ConnectionFactory.class);
registry.put("connectionFactoryMock", connectionFactoryMock);
CamelContext defaultContext = new DefaultCamelContext(registry);
Map<String, Object> params = new HashMap<String, Object>();
params.put("connectionFactory", "#connectionFactoryMock");
RabbitMQEndpoint endpoint = new RabbitMQComponent(defaultContext).createEndpoint("rabbitmq:localhost/exchange", "localhost/exchange", params);
assertSame(connectionFactoryMock, endpoint.getConnectionFactory());
}
}