/* * TeleStax, Open Source Cloud Communications * Copyright 2012, Telestax Inc and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.mobicents.smsc.library; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import static org.testng.Assert.assertNull; import java.util.Date; import org.mobicents.smsc.mproc.DeliveryReceiptData; import org.restcomm.smpp.parameter.TlvSet; import org.testng.annotations.Test; import com.cloudhopper.smpp.SmppConstants; import com.cloudhopper.smpp.tlv.Tlv; /** * * @author sergey vetyutnev * */ public class ParseDeliveryReceiptTest { @Test(groups = { "ParseDeliveryReceipt" }) public void testParseDeliveryReceipt() { String msg = "id:0512249005 sub:001 dlvrd:000 submit date:1609051327 done date:1609051337 stat:ENROUTE err:054 text:xxssxx"; String msg2 = "id:0512249005 sub:001 dlvrd:000 submit date:1609051327 done date:1609051337 stat:ENROUTE err:054 text:"; String msg3 = "id:1010d937-8f43-4754-9dd8-6e987cda32fa sub:001 dlvrd:000 submit date:161008120127 done date:1610081500 stat:UNDELIV err:004 text:exampleMessage02"; String msg4 = "id:1479978899.393701000100 sub:001 dlvrd:001 submit date:161124101732 done date:161124101735 stat:DELIVRD err:000"; Date d1 = new Date(116, 9 - 1, 5, 13, 27, 0); Date d2 = new Date(116, 9 - 1, 5, 13, 37, 0); Date d3 = new Date(116, 10 - 1, 8, 12, 1, 27); Date d4 = new Date(116, 10 - 1, 8, 15, 0, 0); Date d5 = new Date(116, 11 - 1, 24, 10, 17, 32); Date d6 = new Date(116, 11 - 1, 24, 10, 17, 35); TlvSet tlvSet = new TlvSet(); DeliveryReceiptData deliveryReceiptData = MessageUtil.parseDeliveryReceipt(msg, tlvSet); assertEquals(deliveryReceiptData.getMessageId(), "0512249005"); assertEquals(deliveryReceiptData.getMsgSubmitted(), 1); assertEquals(deliveryReceiptData.getMsgDelivered(), 0); assertTrue(deliveryReceiptData.getSubmitDate().equals(d1)); assertTrue(deliveryReceiptData.getDoneDate().equals(d2)); assertEquals(deliveryReceiptData.getStatus(), "ENROUTE"); assertEquals(deliveryReceiptData.getError(), 54); assertEquals(deliveryReceiptData.getText(), "xxssxx"); assertNull(deliveryReceiptData.getTlvReceiptedMessageId()); assertNull(deliveryReceiptData.getTlvMessageState()); deliveryReceiptData = MessageUtil.parseDeliveryReceipt(msg2, tlvSet); assertEquals(deliveryReceiptData.getText(), ""); String rcptId = "00ffab10"; byte[] data = rcptId.getBytes(); Tlv tlv = new Tlv(SmppConstants.TAG_RECEIPTED_MSG_ID, data, "rec_msg_id"); tlvSet.addOptionalParameter(tlv); byte[] data2 = new byte[] { 2 }; Tlv tlv2 = new Tlv(SmppConstants.TAG_MSG_STATE, data2, "msg_state"); tlvSet.addOptionalParameter(tlv2); assertNull(deliveryReceiptData.getTlvReceiptedMessageId()); assertNull(deliveryReceiptData.getTlvMessageState()); deliveryReceiptData = MessageUtil.parseDeliveryReceipt(msg3, tlvSet); assertEquals(deliveryReceiptData.getMessageId(), "1010d937-8f43-4754-9dd8-6e987cda32fa"); assertEquals(deliveryReceiptData.getMsgSubmitted(), 1); assertEquals(deliveryReceiptData.getMsgDelivered(), 0); assertTrue(deliveryReceiptData.getSubmitDate().equals(d3)); assertTrue(deliveryReceiptData.getDoneDate().equals(d4)); assertEquals(deliveryReceiptData.getStatus(), "UNDELIV"); assertEquals(deliveryReceiptData.getError(), 4); assertEquals(deliveryReceiptData.getText(), "exampleMessage02"); assertEquals(deliveryReceiptData.getTlvReceiptedMessageId(), rcptId); assertEquals((int) deliveryReceiptData.getTlvMessageState(), 2); String rcptId2 = "1479978899.393701000100@1154905154"; tlvSet.clearAllOptionalParameter(); data = rcptId2.getBytes(); tlv = new Tlv(SmppConstants.TAG_RECEIPTED_MSG_ID, data, "rec_msg_id"); tlvSet.addOptionalParameter(tlv); data2 = new byte[] { 2 }; tlv2 = new Tlv(SmppConstants.TAG_MSG_STATE, data2, "msg_state"); tlvSet.addOptionalParameter(tlv2); deliveryReceiptData = MessageUtil.parseDeliveryReceipt(msg4, tlvSet); assertEquals(deliveryReceiptData.getMessageId(), "1479978899.393701000100"); assertEquals(deliveryReceiptData.getMsgSubmitted(), 1); assertEquals(deliveryReceiptData.getMsgDelivered(), 1); assertTrue(deliveryReceiptData.getSubmitDate().equals(d5)); assertTrue(deliveryReceiptData.getDoneDate().equals(d6)); assertEquals(deliveryReceiptData.getStatus(), "DELIVRD"); assertEquals(deliveryReceiptData.getError(), 0); assertNull(deliveryReceiptData.getText()); assertEquals(deliveryReceiptData.getTlvReceiptedMessageId(), rcptId2); assertEquals((int) deliveryReceiptData.getTlvMessageState(), 2); } @Test(groups = { "ParseDeliveryReceipt" }) public void testEncodeDeliveryReceipt() { String mId = MessageUtil.createMessageIdString(201); String s1 = MessageUtil.createDeliveryReceiptMessage(mId, new Date(), new Date(), ErrorCode.APP_SPECIFIC_230.getCode(), "www www eee", true, null, false); } }