mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-30 13:35:18 +00:00
7b589c4300
// FREEBIE
104 lines
3.8 KiB
Java
104 lines
3.8 KiB
Java
package org.thoughtcrime.securesms.jobs;
|
|
|
|
import org.junit.Test;
|
|
import org.mockito.ArgumentCaptor;
|
|
import org.mockito.Mockito;
|
|
import org.thoughtcrime.securesms.BaseUnitTest;
|
|
import org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule.TextSecureMessageSenderFactory;
|
|
import org.whispersystems.signalservice.api.SignalServiceMessageSender;
|
|
import org.whispersystems.signalservice.api.push.SignalServiceAddress;
|
|
import org.whispersystems.signalservice.api.push.exceptions.NotFoundException;
|
|
import org.whispersystems.signalservice.api.push.exceptions.PushNetworkException;
|
|
|
|
import java.io.IOException;
|
|
|
|
import dagger.Module;
|
|
import dagger.ObjectGraph;
|
|
import dagger.Provides;
|
|
|
|
import static junit.framework.Assert.assertFalse;
|
|
import static junit.framework.Assert.assertTrue;
|
|
import static org.mockito.Matchers.any;
|
|
import static org.mockito.Matchers.eq;
|
|
import static org.mockito.Mockito.mock;
|
|
import static org.mockito.Mockito.verify;
|
|
|
|
public class DeliveryReceiptJobTest extends BaseUnitTest {
|
|
@Test
|
|
public void testDelivery() throws IOException {
|
|
SignalServiceMessageSender textSecureMessageSender = mock(SignalServiceMessageSender.class);
|
|
long timestamp = System.currentTimeMillis();
|
|
|
|
DeliveryReceiptJob deliveryReceiptJob = new DeliveryReceiptJob(context,
|
|
"+14152222222",
|
|
timestamp, "foo");
|
|
|
|
ObjectGraph objectGraph = ObjectGraph.create(new TestModule(textSecureMessageSender));
|
|
objectGraph.inject(deliveryReceiptJob);
|
|
|
|
deliveryReceiptJob.onRun();
|
|
|
|
ArgumentCaptor<SignalServiceAddress> captor = ArgumentCaptor.forClass(SignalServiceAddress.class);
|
|
verify(textSecureMessageSender).sendDeliveryReceipt(captor.capture(), eq(timestamp));
|
|
|
|
assertTrue(captor.getValue().getRelay().get().equals("foo"));
|
|
assertTrue(captor.getValue().getNumber().equals("+14152222222"));
|
|
}
|
|
|
|
public void testNetworkError() throws IOException {
|
|
SignalServiceMessageSender textSecureMessageSender = mock(SignalServiceMessageSender.class);
|
|
long timestamp = System.currentTimeMillis();
|
|
|
|
Mockito.doThrow(new PushNetworkException("network error"))
|
|
.when(textSecureMessageSender)
|
|
.sendDeliveryReceipt(any(SignalServiceAddress.class), eq(timestamp));
|
|
|
|
|
|
DeliveryReceiptJob deliveryReceiptJob = new DeliveryReceiptJob(context,
|
|
"+14152222222",
|
|
timestamp, "foo");
|
|
|
|
ObjectGraph objectGraph = ObjectGraph.create(new TestModule(textSecureMessageSender));
|
|
objectGraph.inject(deliveryReceiptJob);
|
|
|
|
try {
|
|
deliveryReceiptJob.onRun();
|
|
throw new AssertionError();
|
|
} catch (IOException e) {
|
|
assertTrue(deliveryReceiptJob.onShouldRetry(e));
|
|
}
|
|
|
|
Mockito.doThrow(new NotFoundException("not found"))
|
|
.when(textSecureMessageSender)
|
|
.sendDeliveryReceipt(any(SignalServiceAddress.class), eq(timestamp));
|
|
|
|
try {
|
|
deliveryReceiptJob.onRun();
|
|
throw new AssertionError();
|
|
} catch (IOException e) {
|
|
assertFalse(deliveryReceiptJob.onShouldRetry(e));
|
|
}
|
|
}
|
|
|
|
@Module(injects = DeliveryReceiptJob.class)
|
|
public static class TestModule {
|
|
|
|
private final SignalServiceMessageSender textSecureMessageSender;
|
|
|
|
public TestModule(SignalServiceMessageSender textSecureMessageSender) {
|
|
this.textSecureMessageSender = textSecureMessageSender;
|
|
}
|
|
|
|
@Provides
|
|
TextSecureMessageSenderFactory provideSignalServiceMessageSenderFactory() {
|
|
return new TextSecureMessageSenderFactory() {
|
|
@Override
|
|
public SignalServiceMessageSender create() {
|
|
return textSecureMessageSender;
|
|
}
|
|
};
|
|
}
|
|
}
|
|
|
|
}
|