package org.mobicents.smsc.mproc.impl;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
import org.mobicents.smsc.library.ErrorCode;
import org.mobicents.smsc.library.Sms;
import org.mobicents.smsc.library.SmsSet;
import org.mobicents.smsc.mproc.MProcMessage;
import org.mobicents.smsc.mproc.ProcessingType;
import org.restcomm.smpp.parameter.TlvSet;
import org.testng.annotations.Test;
import com.cloudhopper.smpp.SmppConstants;
import com.cloudhopper.smpp.tlv.Tlv;
public class MProcRuleDefaultTest {
@Test(groups = { "MProcRule" })
public void testA() throws Exception {
Sms sms = new Sms();
SmsSet smsSet = new SmsSet();
sms.setSmsSet(smsSet);
smsSet.setStatus(ErrorCode.ABSENT_SUBSCRIBER); // code 8
MProcMessage message = new MProcMessageImpl(sms, ProcessingType.SMPP, null);
MProcRuleDefaultImpl pmr = new MProcRuleDefaultImpl();
pmr.updateRuleParameters("processingtype SIP");
assertEquals(pmr.getProcessingType(), ProcessingType.SIP);
pmr.updateRuleParameters("processingtype -1");
pmr.updateRuleParameters("errorcode 6");
boolean res = pmr.matchesPostArrival(message);
assertFalse(res);
pmr.updateRuleParameters("errorcode 6,7,8");
res = pmr.matchesPostArrival(message);
assertTrue(res);
}
@Test(groups = { "MProcRule" })
public void testTlvOptions() throws Exception {
Sms sms = new Sms();
MProcRuleDefaultImpl pmr = null;
MProcMessage message = null;
TlvSet tlvSet = null;
//FIXME:add more failing tests
//test tlvbyte_*
tlvSet = new TlvSet();
tlvSet.addOptionalParameter(new Tlv(SmppConstants.TAG_DEST_NETWORK_ID, new byte[]{7}));
sms.setTlvSet(tlvSet);
message = new MProcMessageImpl(sms, ProcessingType.SMPP, null);
pmr = new MProcRuleDefaultImpl();
pmr.setInitialRuleParameters("tlv_byte_1550 7");
assertEquals(pmr.getRuleParameters(), "tlvByte_1550=7", "error");
assertTrue(pmr.matchesPostArrival(message));
tlvSet = new TlvSet();
tlvSet.addOptionalParameter(new Tlv(SmppConstants.TAG_DEST_NETWORK_ID, new byte[]{13}));
sms.setTlvSet(tlvSet);
message = new MProcMessageImpl(sms, ProcessingType.SMPP, null);
assertFalse(pmr.matchesPostArrival(message));
pmr.setInitialRuleParameters("tlv_byte_1550 13");
assertEquals(pmr.getRuleParameters(), "tlvByte_1550=13", "error");
assertTrue(pmr.matchesPostArrival(message));
//test tlvint_*
tlvSet = new TlvSet();
tlvSet.addOptionalParameter(new Tlv(SmppConstants.TAG_DEST_NETWORK_ID, new byte[]{0,0,0,7}));
sms.setTlvSet(tlvSet);
message = new MProcMessageImpl(sms, ProcessingType.SMPP, null);
pmr = new MProcRuleDefaultImpl();
pmr.setInitialRuleParameters("tlv_int_1550 7");
assertEquals(pmr.getRuleParameters(), "tlvInt_1550=7", "error");
assertTrue(pmr.matchesPostArrival(message));
tlvSet = new TlvSet();
tlvSet.addOptionalParameter(new Tlv(SmppConstants.TAG_DEST_NETWORK_ID, new byte[]{0,0,0,13}));
sms.setTlvSet(tlvSet);
message = new MProcMessageImpl(sms, ProcessingType.SMPP, null);
assertFalse(pmr.matchesPostArrival(message));
pmr.setInitialRuleParameters("tlv_int_1550 13");
assertEquals(pmr.getRuleParameters(), "tlvInt_1550=13", "error");
assertTrue(pmr.matchesPostArrival(message));
//test tlvstring_*
tlvSet = new TlvSet();
tlvSet.addOptionalParameter(new Tlv(SmppConstants.TAG_DEST_NETWORK_ID, "7".getBytes()));
sms.setTlvSet(tlvSet);
message = new MProcMessageImpl(sms, ProcessingType.SMPP, null);
pmr = new MProcRuleDefaultImpl();
pmr.setInitialRuleParameters("tlv_string_1550 7");
assertEquals(pmr.getRuleParameters(), "tlvString_1550=7", "error");
assertTrue(pmr.matchesPostArrival(message));
tlvSet = new TlvSet();
tlvSet.addOptionalParameter(new Tlv(SmppConstants.TAG_DEST_NETWORK_ID, "13".getBytes()));
sms.setTlvSet(tlvSet);
message = new MProcMessageImpl(sms, ProcessingType.SMPP, null);
assertFalse(pmr.matchesPostArrival(message));
pmr.setInitialRuleParameters("tlv_string_1550 13");
assertEquals(pmr.getRuleParameters(), "tlvString_1550=13", "error");
assertTrue(pmr.matchesPostArrival(message));
}
}