/**
* 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.smpp;
import org.apache.camel.Component;
import org.apache.camel.Consumer;
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.jsmpp.bean.AlertNotification;
import org.jsmpp.bean.DataSm;
import org.jsmpp.bean.DeliverSm;
import org.junit.Before;
import org.junit.Test;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.isA;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
/**
* JUnit test class for <code>org.apache.camel.component.smpp.SmppEndpoint</code>
*
* @version
*/
public class SmppEndpointTest {
private SmppEndpoint endpoint;
private SmppConfiguration configuration;
private Component component;
private SmppBinding binding;
@Before
public void setUp() throws Exception {
configuration = createMock(SmppConfiguration.class);
component = createMock(Component.class);
binding = createMock(SmppBinding.class);
expect(component.createConfiguration("smpp://smppclient@localhost:2775")).andReturn(null);
expect(component.getCamelContext()).andReturn(null);
replay(component);
endpoint = new SmppEndpoint("smpp://smppclient@localhost:2775", component, configuration);
endpoint.setBinding(binding);
}
@Test
public void isLenientPropertiesShouldReturnTrue() {
assertTrue(endpoint.isLenientProperties());
}
@Test
public void isSingletonShouldReturnTrue() {
assertTrue(endpoint.isSingleton());
}
@Test
public void createEndpointUriShouldReturnTheEndpointUri() {
expect(configuration.getUsingSSL()).andReturn(false);
expect(configuration.getSystemId()).andReturn("smppclient").times(2);
expect(configuration.getHost()).andReturn("localhost");
expect(configuration.getPort()).andReturn(new Integer(2775));
replay(configuration);
assertEquals("smpp://smppclient@localhost:2775", endpoint.createEndpointUri());
verify(configuration);
}
@Test
public void createEndpointUriWithoutUserShouldReturnTheEndpointUri() {
expect(configuration.getUsingSSL()).andReturn(false);
expect(configuration.getSystemId()).andReturn(null);
expect(configuration.getHost()).andReturn("localhost");
expect(configuration.getPort()).andReturn(new Integer(2775));
replay(configuration);
assertEquals("smpp://localhost:2775", endpoint.createEndpointUri());
verify(configuration);
}
@Test
public void createConsumerShouldReturnASmppConsumer() throws Exception {
Processor processor = createMock(Processor.class);
replay(processor);
Consumer consumer = endpoint.createConsumer(processor);
verify(processor);
assertTrue(consumer instanceof SmppConsumer);
}
@Test
public void createProducerShouldReturnASmppProducer() throws Exception {
Producer producer = endpoint.createProducer();
assertTrue(producer instanceof SmppProducer);
}
@Test
public void createOnAcceptAlertNotificationExchange() {
AlertNotification alertNotification = createMock(AlertNotification.class);
SmppMessage message = createMock(SmppMessage.class);
expect(binding.createSmppMessage(alertNotification)).andReturn(message);
message.setExchange(isA(Exchange.class));
replay(alertNotification, binding, message);
Exchange exchange = endpoint.createOnAcceptAlertNotificationExchange(alertNotification);
verify(alertNotification, binding, message);
assertSame(binding, exchange.getProperty(Exchange.BINDING));
assertSame(message, exchange.getIn());
assertSame(ExchangePattern.InOnly, exchange.getPattern());
}
@Test
public void createOnAcceptAlertNotificationExchangeWithExchangePattern() {
AlertNotification alertNotification = createMock(AlertNotification.class);
SmppMessage message = createMock(SmppMessage.class);
expect(binding.createSmppMessage(alertNotification)).andReturn(message);
message.setExchange(isA(Exchange.class));
replay(alertNotification, binding, message);
Exchange exchange = endpoint.createOnAcceptAlertNotificationExchange(ExchangePattern.InOut, alertNotification);
verify(alertNotification, binding, message);
assertSame(binding, exchange.getProperty(Exchange.BINDING));
assertSame(message, exchange.getIn());
assertSame(ExchangePattern.InOut, exchange.getPattern());
}
@Test
public void createOnAcceptDeliverSmExchange() throws Exception {
DeliverSm deliverSm = createMock(DeliverSm.class);
SmppMessage message = createMock(SmppMessage.class);
expect(binding.createSmppMessage(deliverSm)).andReturn(message);
message.setExchange(isA(Exchange.class));
replay(deliverSm, binding, message);
Exchange exchange = endpoint.createOnAcceptDeliverSmExchange(deliverSm);
verify(deliverSm, binding, message);
assertSame(binding, exchange.getProperty(Exchange.BINDING));
assertSame(message, exchange.getIn());
assertSame(ExchangePattern.InOnly, exchange.getPattern());
}
@Test
public void createOnAcceptDeliverSmWithExchangePattern() throws Exception {
DeliverSm deliverSm = createMock(DeliverSm.class);
SmppMessage message = createMock(SmppMessage.class);
expect(binding.createSmppMessage(deliverSm)).andReturn(message);
message.setExchange(isA(Exchange.class));
replay(deliverSm, binding, message);
Exchange exchange = endpoint.createOnAcceptDeliverSmExchange(ExchangePattern.InOut, deliverSm);
verify(deliverSm, binding, message);
assertSame(binding, exchange.getProperty(Exchange.BINDING));
assertSame(message, exchange.getIn());
assertSame(ExchangePattern.InOut, exchange.getPattern());
}
@Test
public void createOnAcceptDataSm() throws Exception {
DataSm dataSm = createMock(DataSm.class);
SmppMessage message = createMock(SmppMessage.class);
expect(binding.createSmppMessage(eq(dataSm), isA(String.class))).andReturn(message);
message.setExchange(isA(Exchange.class));
replay(dataSm, binding, message);
Exchange exchange = endpoint.createOnAcceptDataSm(dataSm, "1");
verify(dataSm, binding, message);
assertSame(binding, exchange.getProperty(Exchange.BINDING));
assertSame(message, exchange.getIn());
assertSame(ExchangePattern.InOnly, exchange.getPattern());
}
@Test
public void createOnAcceptDataSmWithExchangePattern() throws Exception {
DataSm dataSm = createMock(DataSm.class);
SmppMessage message = createMock(SmppMessage.class);
expect(binding.createSmppMessage(eq(dataSm), isA(String.class))).andReturn(message);
message.setExchange(isA(Exchange.class));
replay(dataSm, binding, message);
Exchange exchange = endpoint.createOnAcceptDataSm(ExchangePattern.InOut, dataSm, "1");
verify(dataSm, binding, message);
assertSame(binding, exchange.getProperty(Exchange.BINDING));
assertSame(message, exchange.getIn());
assertSame(ExchangePattern.InOut, exchange.getPattern());
}
@Test
public void getConnectionStringShouldReturnTheConnectionString() {
expect(configuration.getUsingSSL()).andReturn(false);
expect(configuration.getSystemId()).andReturn("smppclient").times(2);
expect(configuration.getHost()).andReturn("localhost");
expect(configuration.getPort()).andReturn(new Integer(2775));
replay(configuration);
assertEquals("smpp://smppclient@localhost:2775", endpoint.getConnectionString());
verify(configuration);
}
@Test
public void getConnectionStringWithoutUserShouldReturnTheConnectionString() {
expect(configuration.getUsingSSL()).andReturn(false);
expect(configuration.getSystemId()).andReturn(null);
expect(configuration.getHost()).andReturn("localhost");
expect(configuration.getPort()).andReturn(new Integer(2775));
replay(configuration);
assertEquals("smpp://localhost:2775", endpoint.getConnectionString());
verify(configuration);
}
@Test
public void getConfigurationShouldReturnTheSetValue() {
assertSame(configuration, endpoint.getConfiguration());
}
}