Skip to content

Commit

Permalink
BS-232 Updated test cases for SmppHandler
Browse files Browse the repository at this point in the history
  • Loading branch information
hrosa committed Jun 8, 2018
1 parent b1bf904 commit 7394f86
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 11 deletions.
Expand Up @@ -35,7 +35,7 @@
@Immutable
public class SmsMessageFilter {

private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
public static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");

private String accountSid;
private List<String> accountSidSet; // if not-null we need the cdrs that belong to several accounts
Expand Down
Expand Up @@ -19,8 +19,14 @@
*/
package org.restcomm.connect.sms.smpp;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;

import akka.actor.Actor;
import akka.actor.ActorRef;
Expand All @@ -35,6 +41,8 @@
import com.cloudhopper.smpp.pdu.PduResponse;
import com.cloudhopper.smpp.pdu.SubmitSmResp;
import org.apache.commons.configuration.Configuration;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormatter;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Ignore;
Expand All @@ -50,6 +58,7 @@
import org.restcomm.connect.dao.SmsMessagesDao;
import org.restcomm.connect.dao.entities.IncomingPhoneNumber;
import org.restcomm.connect.dao.entities.SmsMessage;
import org.restcomm.connect.dao.entities.SmsMessageFilter;
import org.restcomm.connect.monitoringservice.MonitoringService;
import org.restcomm.connect.sms.smpp.dlr.spi.DLRPayload;

Expand Down Expand Up @@ -128,7 +137,7 @@ public void testRemover() {
}

@Test
public void testOnReceiveDlrPayload() {
public void testOnReceiveDlrPayload() throws ParseException {
new JavaTestKit(system) {
{
// given
Expand All @@ -137,10 +146,14 @@ public void testOnReceiveDlrPayload() {

final DLRPayload dlrPayload = new DLRPayload();
dlrPayload.setId("12345");
dlrPayload.setStat(SmsMessage.Status.QUEUED);
dlrPayload.setStat(SmsMessage.Status.UNDELIVERED);

final SmsMessagesDao smsMessagesDao = mock(SmsMessagesDao.class);
final SmsMessage smsMessage = SmsMessage.builder().setSid(Sid.generate(Sid.Type.SMS_MESSAGE)).setSmppMessageId(dlrPayload.getId()).setStatus(SmsMessage.Status.SENDING).build();
final SmsMessage smsMessage1 = SmsMessage.builder().setSid(Sid.generate(Sid.Type.SMS_MESSAGE)).setSmppMessageId(dlrPayload.getId()).setStatus(SmsMessage.Status.SENDING).build();
final SmsMessage smsMessage2 = SmsMessage.builder().setSid(Sid.generate(Sid.Type.SMS_MESSAGE)).setSmppMessageId(dlrPayload.getId()).setStatus(SmsMessage.Status.SENDING).build();
final SmsMessage smsMessage3 = SmsMessage.builder().setSid(Sid.generate(Sid.Type.SMS_MESSAGE)).setSmppMessageId(dlrPayload.getId()).setStatus(SmsMessage.Status.SENDING).build();

final List<SmsMessage> messages = Arrays.asList(smsMessage1, smsMessage2, smsMessage3);

when(servletContext.getAttribute(DaoManager.class.getName())).thenReturn(daoManager);
when(servletContext.getAttribute(Configuration.class.getName())).thenReturn(mock(Configuration.class));
Expand All @@ -149,7 +162,7 @@ public void testOnReceiveDlrPayload() {
when(servletContext.getAttribute(NumberSelectorService.class.getName())).thenReturn(mock(NumberSelectorService.class));

when(daoManager.getSmsMessagesDao()).thenReturn(smsMessagesDao);
when(smsMessagesDao.getSmsMessageBySmppMessageId(dlrPayload.getId())).thenReturn(smsMessage);
when(smsMessagesDao.getSmsMessages(any(SmsMessageFilter.class))).thenReturn(messages);

final ActorRef messageHandler = system.actorOf(Props.apply(new Creator<Actor>() {
@Override
Expand All @@ -162,17 +175,30 @@ public Actor create() throws Exception {
messageHandler.tell(dlrPayload, getRef());

// then
final ArgumentCaptor<SmsMessageFilter> filterCaptor = ArgumentCaptor.forClass(SmsMessageFilter.class);
verify(smsMessagesDao, timeout(50)).getSmsMessages(filterCaptor.capture());

final SmsMessageFilter filter = filterCaptor.getValue();
assertEquals(dlrPayload.getId(), filter.getSmppMessageId());

final Date endDate = SmsMessageFilter.DATE_FORMAT.parse(filter.getEndTime());
assertEquals(3, TimeUnit.DAYS.convert(new Date().getTime() - endDate.getTime(), TimeUnit.MILLISECONDS));

final ArgumentCaptor<SmsMessage> smsCaptor = ArgumentCaptor.forClass(SmsMessage.class);
verify(smsMessagesDao, timeout(50)).updateSmsMessage(smsCaptor.capture());
assertNotNull(smsCaptor.getValue());
assertNull(smsCaptor.getValue().getSmppMessageId());
assertEquals(dlrPayload.getStat(), smsCaptor.getValue().getStatus());
verify(smsMessagesDao, timeout(50).times(3)).updateSmsMessage(smsCaptor.capture());
final List<SmsMessage> capturedSms = smsCaptor.getAllValues();
assertNull(capturedSms.get(0).getSmppMessageId());
assertEquals(dlrPayload.getStat(), capturedSms.get(0).getStatus());
assertNull(capturedSms.get(1).getSmppMessageId());
assertEquals(SmsMessage.Status.SENT, capturedSms.get(1).getStatus());
assertNull(capturedSms.get(2).getSmppMessageId());
assertEquals(SmsMessage.Status.SENT, capturedSms.get(2).getStatus());
}
};
}

@Test
public void testOnReceiveDlrPayloadForUnknownSms() {
public void testOnReceiveDlrPayloadForUnknownSms() throws ParseException {
new JavaTestKit(system) {
{
// given
Expand All @@ -189,8 +215,10 @@ public void testOnReceiveDlrPayloadForUnknownSms() {
when(servletContext.getAttribute(MonitoringService.class.getName())).thenReturn(mock(ActorRef.class));
when(servletContext.getAttribute(NumberSelectorService.class.getName())).thenReturn(mock(NumberSelectorService.class));

final List<SmsMessage> messages = Collections.emptyList();

when(daoManager.getSmsMessagesDao()).thenReturn(smsMessagesDao);
when(smsMessagesDao.getSmsMessageBySmppMessageId(dlrPayload.getId())).thenReturn(null);
when(smsMessagesDao.getSmsMessages(any(SmsMessageFilter.class))).thenReturn(messages);

final ActorRef messageHandler = system.actorOf(Props.apply(new Creator<Actor>() {
@Override
Expand All @@ -203,6 +231,15 @@ public Actor create() throws Exception {
messageHandler.tell(dlrPayload, getRef());

// then
final ArgumentCaptor<SmsMessageFilter> filterCaptor = ArgumentCaptor.forClass(SmsMessageFilter.class);
verify(smsMessagesDao, timeout(50)).getSmsMessages(filterCaptor.capture());

final SmsMessageFilter filter = filterCaptor.getValue();
assertEquals(dlrPayload.getId(), filter.getSmppMessageId());

final Date endDate = SmsMessageFilter.DATE_FORMAT.parse(filter.getEndTime());
assertEquals(3, TimeUnit.DAYS.convert(new Date().getTime() - endDate.getTime(), TimeUnit.MILLISECONDS));

verify(smsMessagesDao, never()).updateSmsMessage(any(SmsMessage.class));
}
};
Expand Down

0 comments on commit 7394f86

Please sign in to comment.