Skip to content
Snippets Groups Projects
Commit 89ca0e5a authored by akwizgran's avatar akwizgran
Browse files

Merge branch 'property-validator-test' into 'master'

TransportPropertyValidatorTest

Tests for the TransportPropertyValidator ValidateMessage call.

See merge request !110
parents e39a74bd 24f733ed
No related branches found
No related tags found
No related merge requests found
......@@ -32,6 +32,12 @@ public class TestUtils {
return b;
}
public static byte[] getRandomBytes(int length) {
byte[] b = new byte[length];
random.nextBytes(b);
return b;
}
public static String createRandomString(int length) {
char[] c = new char[length];
for (int i = 0; i < length; i++)
......
......@@ -4,11 +4,149 @@ import org.briarproject.BriarTestCase;
import org.junit.Test;
import static org.junit.Assert.fail;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.briarproject.api.data.BdfWriter;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.HashMap;
import org.briarproject.properties.TransportPropertyValidator;
import org.briarproject.api.properties.TransportProperties;
import org.briarproject.api.TransportId;
import org.briarproject.api.sync.MessageId;
import org.briarproject.api.UniqueId;
import org.briarproject.api.sync.GroupId;
import org.briarproject.api.sync.ClientId;
import org.briarproject.api.DeviceId;
import org.briarproject.api.data.BdfWriter;
import org.briarproject.api.data.BdfList;
import org.briarproject.api.data.BdfReader;
import org.briarproject.api.clients.ClientHelper;
import org.briarproject.api.data.BdfDictionary;
import org.briarproject.api.data.BdfEntry;
import org.briarproject.api.data.MetadataEncoder;
import org.briarproject.api.system.Clock;
import org.briarproject.api.DeviceId;
import org.briarproject.api.FormatException;
import org.briarproject.api.sync.Group;
import org.briarproject.api.sync.Message;
import org.briarproject.api.properties.TransportPropertyManager;
import org.briarproject.TestUtils;
import org.briarproject.util.StringUtils;
import static org.briarproject.api.TransportId.MAX_TRANSPORT_ID_LENGTH;
import static org.briarproject.api.properties.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
import org.jmock.Expectations;
import org.jmock.Mockery;
public class TransportPropertyValidatorTest extends BriarTestCase {
@Test
public void testUnitTestsExist() {
fail(); // FIXME: Write tests
private TransportId transportId;
private MessageId messageId;
private GroupId groupId;
private ClientId clientId;
private DeviceId deviceId;
private final ClientHelper h;
private final MetadataEncoder e;
private final Clock c;
private final Group g;
private final TransportPropertyValidator tpv;
private final BdfDictionary d;
public TransportPropertyValidatorTest () {
transportId = new TransportId("test");
messageId = new MessageId(TestUtils.getRandomId());
groupId = new GroupId(TestUtils.getRandomId());
clientId = new ClientId(TestUtils.getRandomId());
deviceId = new DeviceId(TestUtils.getRandomId());
Mockery context = new Mockery();
h = context.mock(ClientHelper.class);
e = context.mock(MetadataEncoder.class);
c = context.mock(Clock.class);
g = new Group(groupId, clientId, TestUtils.getRandomBytes(12));
d = new BdfDictionary();
tpv = new TransportPropertyValidator(
h, e, c);
}
@Test
public void testValidateProperMessage() throws IOException {
BdfDictionary result;
final BdfList m = BdfList.of(deviceId, transportId.getString(), 4, d);
result = tpv.validateMessage(m, g, 1L);
assertEquals("test", result.getString("transportId"));
assertEquals(result.getLong("version").longValue(), 4);
}
@Test(expected = FormatException.class)
public void testValidateWrongVersionValue() throws IOException {
/* Will create a negative version number */
BdfList m = BdfList.of(deviceId, transportId.getString(), -1, d);
tpv.validateMessage(m, g, 1L);
}
@Test(expected = FormatException.class)
public void testValidateWrongVersionType() throws IOException {
/* Instead of sending a version number I'm sending a dict */
BdfList m = BdfList.of(deviceId, transportId.getString(), d, d);
tpv.validateMessage(m, g, 1L);
}
@Test(expected = FormatException.class)
public void testValidateShortDeviceId() throws IOException {
/* Will create a Device Id with a short length, getRaw should work */
BdfList m = BdfList.of(new byte[UniqueId.LENGTH-1],
transportId.getString(), 1, d);
tpv.validateMessage(m, g, 1L);
}
@Test(expected = FormatException.class)
public void testValidateLongDeviceId() throws IOException {
BdfList m = BdfList.of(new byte[UniqueId.LENGTH+1],
transportId.getString(), 1, d);
tpv.validateMessage(m, g, 1L);
}
@Test(expected = FormatException.class)
public void testValidateWrongDeviceId() throws IOException {
BdfList m = BdfList.of(d, transportId.getString(), 1, d);
tpv.validateMessage(m, g, 1L);
}
@Test(expected =FormatException.class)
public void testValidateLongTransportId() throws IOException {
/* Generate a string or arbitrary length for the transport id*/
String wrongTransportIdString = TestUtils.createRandomString(MAX_TRANSPORT_ID_LENGTH + 1);
BdfList m = BdfList.of(deviceId, wrongTransportIdString, 4, d);
tpv.validateMessage(m, g, 1L);
}
@Test(expected = FormatException.class)
public void testValidateTooManyProperties() throws IOException {
/* Generate a big map for the BdfDictionary*/
HashMap map = new HashMap();
for (int i = 0; i < MAX_PROPERTIES_PER_TRANSPORT + 1; i++)
map.put("" + i, "" + i);
BdfDictionary d = new BdfDictionary(map);
BdfList m = BdfList.of(deviceId, transportId.getString(), 4, d);
tpv.validateMessage(m, g, 1L);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment