/**
* 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 java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;
import org.jsmpp.bean.NumberingPlanIndicator;
import org.jsmpp.bean.SMSCDeliveryReceipt;
import org.jsmpp.bean.TypeOfNumber;
import org.jsmpp.extra.SessionState;
import org.jsmpp.session.Session;
import org.jsmpp.session.SessionStateListener;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
/**
* JUnit test class for <code>org.apache.camel.component.smpp.SmppConfiguration</code>
*
* @version
*/
public class SmppConfigurationTest {
private SmppConfiguration configuration;
@Before
public void setUp() {
configuration = new SmppConfiguration();
}
@Test
public void getterShouldReturnTheDefaultValues() {
assertEquals("1717", configuration.getDestAddr());
assertEquals(0x00, configuration.getDestAddrNpi());
assertEquals(0x00, configuration.getDestAddrTon());
assertEquals("", configuration.getAddressRange());
assertEquals(new Integer(5000), configuration.getEnquireLinkTimer());
assertEquals("localhost", configuration.getHost());
assertEquals("password", configuration.getPassword());
assertEquals(new Integer(2775), configuration.getPort());
assertEquals(0x01, configuration.getPriorityFlag());
assertEquals(0x00, configuration.getProtocolId());
assertEquals(0x01, configuration.getRegisteredDelivery());
assertEquals(0x00, configuration.getReplaceIfPresentFlag());
assertEquals("CMT", configuration.getServiceType());
assertEquals("1616", configuration.getSourceAddr());
assertEquals(0x00, configuration.getSourceAddrNpi());
assertEquals(0x00, configuration.getSourceAddrTon());
assertEquals("smppclient", configuration.getSystemId());
assertEquals("cp", configuration.getSystemType());
assertEquals(new Integer(10000), configuration.getTransactionTimer());
assertEquals("ISO-8859-1", configuration.getEncoding());
assertEquals(0x00, configuration.getNumberingPlanIndicator());
assertEquals(0x00, configuration.getTypeOfNumber());
assertEquals(false, configuration.getUsingSSL());
assertEquals(5000, configuration.getInitialReconnectDelay());
assertEquals(5000, configuration.getReconnectDelay());
assertEquals(null, configuration.getHttpProxyHost());
assertEquals(new Integer(3128), configuration.getHttpProxyPort());
assertEquals(null, configuration.getHttpProxyUsername());
assertEquals(null, configuration.getHttpProxyPassword());
assertEquals(null, configuration.getSessionStateListener());
}
@Test
public void getterShouldReturnTheSetValues() {
setNoneDefaultValues(configuration);
assertEquals("1919", configuration.getDestAddr());
assertEquals(0x08, configuration.getDestAddrNpi());
assertEquals(0x02, configuration.getDestAddrTon());
assertEquals(new Integer(5001), configuration.getEnquireLinkTimer());
assertEquals("127.0.0.1", configuration.getHost());
assertEquals("secret", configuration.getPassword());
assertEquals(new Integer(2776), configuration.getPort());
assertEquals(0x00, configuration.getPriorityFlag());
assertEquals(0x01, configuration.getProtocolId());
assertEquals(0x00, configuration.getRegisteredDelivery());
assertEquals(0x01, configuration.getReplaceIfPresentFlag());
assertEquals("XXX", configuration.getServiceType());
assertEquals("1818", configuration.getSourceAddr());
assertEquals(0x08, configuration.getSourceAddrNpi());
assertEquals(0x02, configuration.getSourceAddrTon());
assertEquals("client", configuration.getSystemId());
assertEquals("xx", configuration.getSystemType());
assertEquals(new Integer(10001), configuration.getTransactionTimer());
assertEquals("UTF-8", configuration.getEncoding());
assertEquals(0x08, configuration.getNumberingPlanIndicator());
assertEquals(0x02, configuration.getTypeOfNumber());
assertEquals(true, configuration.getUsingSSL());
assertEquals(5001, configuration.getInitialReconnectDelay());
assertEquals(5002, configuration.getReconnectDelay());
assertEquals("127.0.0.1", configuration.getHttpProxyHost());
assertEquals(new Integer(3129), configuration.getHttpProxyPort());
assertEquals("user", configuration.getHttpProxyUsername());
assertEquals("secret", configuration.getHttpProxyPassword());
assertNotNull(configuration.getSessionStateListener());
assertEquals("1", configuration.getProxyHeaders().get("X-Proxy-Header"));
}
@Test
public void getterShouldReturnTheConfigureValuesFromURI() throws URISyntaxException {
configuration.configureFromURI(new URI("smpp://client@127.0.0.1:2776"));
assertEquals("127.0.0.1", configuration.getHost());
assertEquals(new Integer(2776), configuration.getPort());
assertEquals("client", configuration.getSystemId());
}
@Test
public void cloneShouldReturnAnEqualInstance() {
setNoneDefaultValues(configuration);
SmppConfiguration config = configuration.copy();
assertEquals(config.getDestAddr(), configuration.getDestAddr());
assertEquals(config.getDestAddrNpi(), configuration.getDestAddrNpi());
assertEquals(config.getDestAddrTon(), configuration.getDestAddrTon());
assertEquals(config.getEnquireLinkTimer(), configuration.getEnquireLinkTimer());
assertEquals(config.getHost(), configuration.getHost());
assertEquals(config.getPassword(), configuration.getPassword());
assertEquals(config.getPort(), configuration.getPort());
assertEquals(config.getPriorityFlag(), configuration.getPriorityFlag());
assertEquals(config.getProtocolId(), configuration.getProtocolId());
assertEquals(config.getRegisteredDelivery(), configuration.getRegisteredDelivery());
assertEquals(config.getReplaceIfPresentFlag(), configuration.getReplaceIfPresentFlag());
assertEquals(config.getServiceType(), configuration.getServiceType());
assertEquals(config.getSourceAddr(), configuration.getSourceAddr());
assertEquals(config.getSourceAddrNpi(), configuration.getSourceAddrNpi());
assertEquals(config.getSourceAddrTon(), configuration.getSourceAddrTon());
assertEquals(config.getSystemId(), configuration.getSystemId());
assertEquals(config.getSystemType(), configuration.getSystemType());
assertEquals(config.getTransactionTimer(), configuration.getTransactionTimer());
assertEquals(config.getEncoding(), configuration.getEncoding());
assertEquals(config.getNumberingPlanIndicator(), configuration.getNumberingPlanIndicator());
assertEquals(config.getTypeOfNumber(), configuration.getTypeOfNumber());
assertEquals(config.getUsingSSL(), configuration.getUsingSSL());
assertEquals(config.getInitialReconnectDelay(), configuration.getInitialReconnectDelay());
assertEquals(config.getReconnectDelay(), configuration.getReconnectDelay());
assertEquals(config.getHttpProxyHost(), configuration.getHttpProxyHost());
assertEquals(config.getHttpProxyPort(), configuration.getHttpProxyPort());
assertEquals(config.getHttpProxyUsername(), configuration.getHttpProxyUsername());
assertEquals(config.getHttpProxyPassword(), configuration.getHttpProxyPassword());
assertEquals(config.getSessionStateListener(), configuration.getSessionStateListener());
assertEquals(config.getProxyHeaders(), configuration.getProxyHeaders());
}
@Test
public void toStringShouldListAllInstanceVariables() {
String expected = "SmppConfiguration["
+ "usingSSL=false, "
+ "enquireLinkTimer=5000, "
+ "host=localhost, "
+ "password=password, "
+ "port=2775, "
+ "systemId=smppclient, "
+ "systemType=cp, "
+ "dataCoding=0, "
+ "alphabet=0, "
+ "encoding=ISO-8859-1, "
+ "transactionTimer=10000, "
+ "registeredDelivery=1, "
+ "serviceType=CMT, "
+ "sourceAddrTon=0, "
+ "destAddrTon=0, "
+ "sourceAddrNpi=0, "
+ "destAddrNpi=0, "
+ "addressRange=, "
+ "protocolId=0, "
+ "priorityFlag=1, "
+ "replaceIfPresentFlag=0, "
+ "sourceAddr=1616, "
+ "destAddr=1717, "
+ "typeOfNumber=0, "
+ "numberingPlanIndicator=0, "
+ "initialReconnectDelay=5000, "
+ "reconnectDelay=5000, "
+ "maxReconnect=2147483647, "
+ "lazySessionCreation=false, "
+ "httpProxyHost=null, "
+ "httpProxyPort=3128, "
+ "httpProxyUsername=null, "
+ "httpProxyPassword=null, "
+ "splittingPolicy=ALLOW, "
+ "proxyHeaders=null]";
assertEquals(expected, configuration.toString());
}
private void setNoneDefaultValues(SmppConfiguration config) {
config.setDestAddr("1919");
config.setDestAddrNpi(NumberingPlanIndicator.NATIONAL.value());
config.setDestAddrTon(TypeOfNumber.NATIONAL.value());
config.setEnquireLinkTimer(new Integer(5001));
config.setHost("127.0.0.1");
config.setPassword("secret");
config.setPort(new Integer(2776));
config.setPriorityFlag((byte) 0);
config.setProtocolId((byte) 1);
config.setRegisteredDelivery(SMSCDeliveryReceipt.DEFAULT.value());
config.setReplaceIfPresentFlag((byte) 1);
config.setServiceType("XXX");
config.setSourceAddr("1818");
config.setSourceAddrNpi(NumberingPlanIndicator.NATIONAL.value());
config.setSourceAddrTon(TypeOfNumber.NATIONAL.value());
config.setSystemId("client");
config.setSystemType("xx");
config.setTransactionTimer(new Integer(10001));
config.setEncoding("UTF-8");
config.setNumberingPlanIndicator(NumberingPlanIndicator.NATIONAL.value());
config.setTypeOfNumber(TypeOfNumber.NATIONAL.value());
config.setUsingSSL(true);
config.setInitialReconnectDelay(5001);
config.setReconnectDelay(5002);
config.setHttpProxyHost("127.0.0.1");
config.setHttpProxyPort(new Integer(3129));
config.setHttpProxyUsername("user");
config.setHttpProxyPassword("secret");
config.setSessionStateListener(new SessionStateListener() {
public void onStateChange(SessionState arg0, SessionState arg1, Session arg2) {
}
});
Map<String, String> proxyHeaders = new HashMap<String, String>();
proxyHeaders.put("X-Proxy-Header", "1");
config.setProxyHeaders(proxyHeaders);
}
}