Add tests for Device#isEnabled.

This commit is contained in:
Jon Chambers 2020-09-28 17:44:24 -04:00 committed by Jon Chambers
parent 65cdd5fcbe
commit 885fa6beae
1 changed files with 51 additions and 0 deletions

View File

@ -4,12 +4,63 @@ import junitparams.JUnitParamsRunner;
import junitparams.Parameters;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.whispersystems.textsecuregcm.entities.SignedPreKey;
import java.time.Duration;
import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
@RunWith(JUnitParamsRunner.class)
public class DeviceTest {
@Test
@Parameters(method = "argumentsForTestIsEnabled")
public void testIsEnabled(final boolean master, final boolean fetchesMessages, final String apnId, final String gcmId, final SignedPreKey signedPreKey, final Duration timeSinceLastSeen, final boolean expectEnabled) {
final long lastSeen = System.currentTimeMillis() - timeSinceLastSeen.toMillis();
final Device device = new Device(master ? 1 : 2, "test", "auth-token", "salt", "signaling-key", gcmId, apnId, null, fetchesMessages, 1, signedPreKey, lastSeen, lastSeen, "user-agent", 0, null);
assertEquals(expectEnabled, device.isEnabled());
}
private static Object argumentsForTestIsEnabled() {
return new Object[] {
// master fetchesMessages apnId gcmId signedPreKey lastSeen expectEnabled
new Object[] { true, false, null, null, null, Duration.ofDays(60), false },
new Object[] { true, false, null, null, null, Duration.ofDays(1), false },
new Object[] { true, false, null, null, mock(SignedPreKey.class), Duration.ofDays(60), false },
new Object[] { true, false, null, null, mock(SignedPreKey.class), Duration.ofDays(1), false },
new Object[] { true, false, null, "gcm-id", null, Duration.ofDays(60), false },
new Object[] { true, false, null, "gcm-id", null, Duration.ofDays(1), false },
new Object[] { true, false, null, "gcm-id", mock(SignedPreKey.class), Duration.ofDays(60), true },
new Object[] { true, false, null, "gcm-id", mock(SignedPreKey.class), Duration.ofDays(1), true },
new Object[] { true, false, "apn-id", null, null, Duration.ofDays(60), false },
new Object[] { true, false, "apn-id", null, null, Duration.ofDays(1), false },
new Object[] { true, false, "apn-id", null, mock(SignedPreKey.class), Duration.ofDays(60), true },
new Object[] { true, false, "apn-id", null, mock(SignedPreKey.class), Duration.ofDays(1), true },
new Object[] { true, true, null, null, null, Duration.ofDays(60), false },
new Object[] { true, true, null, null, null, Duration.ofDays(1), false },
new Object[] { true, true, null, null, mock(SignedPreKey.class), Duration.ofDays(60), true },
new Object[] { true, true, null, null, mock(SignedPreKey.class), Duration.ofDays(1), true },
new Object[] { false, false, null, null, null, Duration.ofDays(60), false },
new Object[] { false, false, null, null, null, Duration.ofDays(1), false },
new Object[] { false, false, null, null, mock(SignedPreKey.class), Duration.ofDays(60), false },
new Object[] { false, false, null, null, mock(SignedPreKey.class), Duration.ofDays(1), false },
new Object[] { false, false, null, "gcm-id", null, Duration.ofDays(60), false },
new Object[] { false, false, null, "gcm-id", null, Duration.ofDays(1), false },
new Object[] { false, false, null, "gcm-id", mock(SignedPreKey.class), Duration.ofDays(60), false },
new Object[] { false, false, null, "gcm-id", mock(SignedPreKey.class), Duration.ofDays(1), true },
new Object[] { false, false, "apn-id", null, null, Duration.ofDays(60), false },
new Object[] { false, false, "apn-id", null, null, Duration.ofDays(1), false },
new Object[] { false, false, "apn-id", null, mock(SignedPreKey.class), Duration.ofDays(60), false },
new Object[] { false, false, "apn-id", null, mock(SignedPreKey.class), Duration.ofDays(1), true },
new Object[] { false, true, null, null, null, Duration.ofDays(60), false },
new Object[] { false, true, null, null, null, Duration.ofDays(1), false },
new Object[] { false, true, null, null, mock(SignedPreKey.class), Duration.ofDays(60), false },
new Object[] { false, true, null, null, mock(SignedPreKey.class), Duration.ofDays(1), true }
};
}
@Test
@Parameters(method = "argumentsForTestIsGroupsV2Supported")
public void testIsGroupsV2Supported(final boolean master, final String apnId, final boolean gv2Capability, final boolean gv2_2Capability, final boolean gv2_3Capability, final boolean expectGv2Supported) {