Skip to content
Snippets Groups Projects
Unverified Commit a82fdca3 authored by akwizgran's avatar akwizgran
Browse files

Added more private group invitation validation tests.

parent 050111a9
No related branches found
No related tags found
No related merge requests found
......@@ -42,199 +42,276 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
private final MessageEncoder messageEncoder =
context.mock(MessageEncoder.class);
private final String groupName = "Group Name";
private final String creatorName = "Creator Name";
private final String groupName = getRandomString(MAX_GROUP_NAME_LENGTH);
private final String creatorName = getRandomString(MAX_AUTHOR_NAME_LENGTH);
private final byte[] creatorKey = getRandomBytes(MAX_PUBLIC_KEY_LENGTH);
private final Author creator =
new Author(new AuthorId(getRandomId()), creatorName, creatorKey);
private final byte[] salt = getRandomBytes(GROUP_SALT_LENGTH);
private final PrivateGroup privateGroup =
new PrivateGroup(group, groupName, creator, salt);
private final String inviteText = "Invitation Text";
private final String inviteText =
getRandomString(MAX_GROUP_INVITATION_MSG_LENGTH);
private final byte[] signature = getRandomBytes(MAX_SIGNATURE_LENGTH);
private final BdfDictionary meta =
BdfDictionary.of(new BdfEntry("meta", "data"));
private final MessageId previousMessageId = new MessageId(getRandomId());
private GroupInvitationValidator validator =
private final GroupInvitationValidator validator =
new GroupInvitationValidator(clientHelper, metadataEncoder,
clock, authorFactory, privateGroupFactory, messageEncoder);
// INVITE Message
@Test(expected = FormatException.class)
public void testRejectsTooShortInviteMessage() throws Exception {
BdfList list = BdfList.of(INVITE.getValue(), groupName, creatorName,
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, inviteText);
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsTooLongInviteMessage() throws Exception {
BdfList list = BdfList.of(INVITE.getValue(), groupName, creatorName,
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, inviteText, signature, "");
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithTooShortGroupName()
throws Exception {
BdfList body = BdfList.of(INVITE.getValue(), "", creatorName,
creatorKey, salt, inviteText, signature);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithTooLongGroupName()
throws Exception {
BdfList list = BdfList.of(INVITE.getValue(),
BdfList body = BdfList.of(INVITE.getValue(),
getRandomString(MAX_GROUP_NAME_LENGTH + 1), creatorName,
creatorKey, salt, inviteText, signature);
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithEmptyGroupName()
public void testRejectsInviteMessageWithNullGroupName()
throws Exception {
BdfList list = BdfList.of(INVITE.getValue(), "", creatorName,
BdfList body = BdfList.of(INVITE.getValue(), null, creatorName,
creatorKey, salt, inviteText, signature);
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithNonStringGroupName()
throws Exception {
BdfList body = BdfList.of(INVITE.getValue(), getRandomBytes(5),
creatorName, creatorKey, salt, inviteText, signature);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithTooShortCreatorName()
throws Exception {
BdfList body = BdfList.of(INVITE.getValue(), groupName, "", creatorKey,
salt, inviteText, signature);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithTooLongCreatorName()
throws Exception {
BdfList list = BdfList.of(INVITE.getValue(), groupName,
BdfList body = BdfList.of(INVITE.getValue(), groupName,
getRandomString(MAX_AUTHOR_NAME_LENGTH + 1), creatorKey, salt,
inviteText, signature);
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithEmptyCreatorName()
public void testRejectsInviteMessageWithNullCreatorName()
throws Exception {
BdfList list =
BdfList.of(INVITE.getValue(), groupName, "", creatorKey, salt,
inviteText, signature);
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(INVITE.getValue(), groupName, null,
creatorKey, salt, inviteText, signature);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithNonStringCreatorName()
throws Exception {
BdfList body = BdfList.of(INVITE.getValue(), groupName,
getRandomBytes(5), creatorKey, salt, inviteText, signature);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithTooShortCreatorKey()
throws Exception {
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
new byte[0], salt, inviteText, signature);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithTooLongCreatorKey()
throws Exception {
BdfList list = BdfList.of(INVITE.getValue(), groupName, creatorName,
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
getRandomBytes(MAX_PUBLIC_KEY_LENGTH + 1), salt, inviteText,
signature);
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithEmptyCreatorKey()
public void testRejectsInviteMessageWithNullCreatorKey()
throws Exception {
BdfList list = BdfList.of(INVITE.getValue(), groupName, creatorName,
new byte[0], salt, inviteText, signature);
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
null, salt, inviteText, signature);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithTooLongGroupSalt()
public void testRejectsInviteMessageWithNonRawCreatorKey()
throws Exception {
BdfList list = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, getRandomBytes(GROUP_SALT_LENGTH + 1), inviteText,
signature);
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
"not raw", salt, inviteText, signature);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithTooShortGroupSalt()
throws Exception {
BdfList list = BdfList.of(INVITE.getValue(), groupName, creatorName,
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, getRandomBytes(GROUP_SALT_LENGTH - 1), inviteText,
signature);
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithTooLongGroupSalt()
throws Exception {
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, getRandomBytes(GROUP_SALT_LENGTH + 1), inviteText,
signature);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithTooLongMessage()
public void testRejectsInviteMessageWithNullGroupSalt()
throws Exception {
BdfList list = BdfList.of(INVITE.getValue(), groupName, creatorName,
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, null, inviteText, signature);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithNonRawGroupSalt()
throws Exception {
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, "not raw", inviteText, signature);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithTooShortContent() throws Exception {
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, "", signature);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithTooLongContent() throws Exception {
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt,
getRandomString(MAX_GROUP_INVITATION_MSG_LENGTH + 1),
signature);
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
}
@Test
public void testAcceptsInviteMessageWithNullContent() throws Exception {
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, null, signature);
expectInviteMessage(false);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithTooLongSignature()
public void testRejectsInviteMessageWithNonStringContent()
throws Exception {
BdfList list = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, inviteText,
getRandomBytes(MAX_SIGNATURE_LENGTH + 1));
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, getRandomBytes(5), signature);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithEmptySignature()
public void testRejectsInviteMessageWithTooShortSignature()
throws Exception {
BdfList list = BdfList.of(INVITE.getValue(), groupName, creatorName,
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, inviteText, new byte[0]);
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithNullSignature()
public void testRejectsInviteMessageWithTooLongSignature()
throws Exception {
BdfList list = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, inviteText, null);
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, inviteText,
getRandomBytes(MAX_SIGNATURE_LENGTH + 1));
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithNonRawSignature()
public void testRejectsInviteMessageWithNullSignature()
throws Exception {
BdfList list = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, inviteText, "non raw signature");
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, inviteText, null);
validator.validateMessage(message, group, body);
}
@Test
public void testAcceptsInviteMessageWithNullMessage()
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithNonRawSignature()
throws Exception {
expectInviteMessage(false);
BdfList list = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, null, signature);
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, inviteText, "not raw");
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsInviteMessageWithInvalidSignature()
throws Exception {
expectInviteMessage(true);
BdfList list = BdfList.of(INVITE.getValue(), groupName, creatorName,
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, null, signature);
validator.validateMessage(message, group, list);
expectInviteMessage(true);
validator.validateMessage(message, group, body);
}
@Test
public void testAcceptsProperInviteMessage()
throws Exception {
expectInviteMessage(false);
BdfList list = BdfList.of(INVITE.getValue(), groupName, creatorName,
public void testAcceptsValidInviteMessage() throws Exception {
BdfList body = BdfList.of(INVITE.getValue(), groupName, creatorName,
creatorKey, salt, inviteText, signature);
expectInviteMessage(false);
BdfMessageContext messageContext =
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
assertTrue(messageContext.getDependencies().isEmpty());
assertEquals(meta ,messageContext.getDictionary());
assertEquals(meta, messageContext.getDictionary());
}
private void expectInviteMessage(final boolean exception) throws Exception {
final BdfList toSign =
BdfList.of(message.getTimestamp(), message.getGroupId(),
privateGroup.getId());
final BdfList signed = BdfList.of(message.getTimestamp(),
message.getGroupId(), privateGroup.getId());
context.checking(new Expectations() {{
oneOf(authorFactory).createAuthor(creatorName, creatorKey);
will(returnValue(creator));
oneOf(privateGroupFactory)
.createPrivateGroup(groupName, creator, salt);
oneOf(privateGroupFactory).createPrivateGroup(groupName, creator,
salt);
will(returnValue(privateGroup));
oneOf(clientHelper).verifySignature(SIGNING_LABEL_INVITE, signature,
creatorKey, toSign);
if (exception) will(throwException(new GeneralSecurityException()));
else {
oneOf(messageEncoder)
.encodeMetadata(INVITE, message.getGroupId(),
message.getTimestamp(), false, false, false,
false);
creatorKey, signed);
if (exception) {
will(throwException(new GeneralSecurityException()));
} else {
oneOf(messageEncoder).encodeMetadata(INVITE,
message.getGroupId(), message.getTimestamp(), false,
false, false, false);
will(returnValue(meta));
}
}});
......@@ -244,181 +321,262 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
@Test(expected = FormatException.class)
public void testRejectsTooShortJoinMessage() throws Exception {
BdfList list = BdfList.of(JOIN.getValue(), privateGroup.getId());
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(JOIN.getValue(), privateGroup.getId());
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsTooLongJoinMessage() throws Exception {
BdfList list = BdfList.of(JOIN.getValue(), privateGroup.getId(),
BdfList body = BdfList.of(JOIN.getValue(), privateGroup.getId(),
previousMessageId, "");
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsJoinMessageWithTooShortGroupId() throws Exception {
BdfList body = BdfList.of(JOIN.getValue(),
getRandomBytes(GroupId.LENGTH - 1), previousMessageId);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsJoinMessageWithTooLongGroupId() throws Exception {
BdfList list =
BdfList.of(JOIN.getValue(), getRandomBytes(GroupId.LENGTH + 1),
previousMessageId);
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(JOIN.getValue(),
getRandomBytes(GroupId.LENGTH + 1), previousMessageId);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsJoinMessageWithTooShortGroupId() throws Exception {
BdfList list =
BdfList.of(JOIN.getValue(), getRandomBytes(GroupId.LENGTH - 1),
previousMessageId);
validator.validateMessage(message, group, list);
public void testRejectsJoinMessageWithNullGroupId() throws Exception {
BdfList body = BdfList.of(JOIN.getValue(), null, previousMessageId);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsJoinMessageWithNonRawGroupId() throws Exception {
BdfList body = BdfList.of(JOIN.getValue(), "not raw",
previousMessageId);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsJoinMessageWithTooShortPreviousMessageId()
throws Exception {
BdfList body = BdfList.of(JOIN.getValue(), privateGroup.getId(),
getRandomBytes(UniqueId.LENGTH - 1));
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsJoinMessageWithTooLongPreviousMessageId()
throws Exception {
BdfList list = BdfList.of(JOIN.getValue(), privateGroup.getId(),
BdfList body = BdfList.of(JOIN.getValue(), privateGroup.getId(),
getRandomBytes(UniqueId.LENGTH + 1));
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsJoinMessageWithTooShortPreviousMessageId()
public void testRejectsJoinMessageWithNonRawPreviousMessageId()
throws Exception {
BdfList list = BdfList.of(JOIN.getValue(), privateGroup.getId(),
getRandomBytes(UniqueId.LENGTH - 1));
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(JOIN.getValue(), privateGroup.getId(),
"not raw");
validator.validateMessage(message, group, body);
}
@Test
public void testAcceptsProperJoinMessage()
public void testAcceptsJoinMessageWithNullPreviousMessageId()
throws Exception {
BdfList body = BdfList.of(JOIN.getValue(), privateGroup.getId(), null);
context.checking(new Expectations() {{
oneOf(messageEncoder)
.encodeMetadata(JOIN, message.getGroupId(),
message.getTimestamp(), false, false, false,
false);
oneOf(messageEncoder).encodeMetadata(JOIN, message.getGroupId(),
message.getTimestamp(), false, false, false, false);
will(returnValue(meta));
}});
BdfList list = BdfList.of(JOIN.getValue(), privateGroup.getId(),
BdfMessageContext messageContext =
validator.validateMessage(message, group, body);
assertEquals(0, messageContext.getDependencies().size());
assertEquals(meta, messageContext.getDictionary());
}
@Test
public void testAcceptsValidJoinMessage() throws Exception {
BdfList body = BdfList.of(JOIN.getValue(), privateGroup.getId(),
previousMessageId);
context.checking(new Expectations() {{
oneOf(messageEncoder).encodeMetadata(JOIN, message.getGroupId(),
message.getTimestamp(), false, false, false, false);
will(returnValue(meta));
}});
BdfMessageContext messageContext =
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
assertEquals(1, messageContext.getDependencies().size());
assertEquals(previousMessageId,
messageContext.getDependencies().iterator().next());
assertEquals(meta ,messageContext.getDictionary());
assertEquals(meta, messageContext.getDictionary());
}
// LEAVE message
@Test(expected = FormatException.class)
public void testRejectsTooShortLeaveMessage() throws Exception {
BdfList list = BdfList.of(LEAVE.getValue(), privateGroup.getId());
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(LEAVE.getValue(), privateGroup.getId());
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsTooLongLeaveMessage() throws Exception {
BdfList list = BdfList.of(LEAVE.getValue(), privateGroup.getId(),
BdfList body = BdfList.of(LEAVE.getValue(), privateGroup.getId(),
previousMessageId, "");
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsLeaveMessageWithTooShortGroupId() throws Exception {
BdfList body = BdfList.of(LEAVE.getValue(),
getRandomBytes(GroupId.LENGTH - 1), previousMessageId);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsLeaveMessageWithTooLongGroupId() throws Exception {
BdfList list =
BdfList.of(LEAVE.getValue(), getRandomBytes(GroupId.LENGTH + 1),
previousMessageId);
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(LEAVE.getValue(),
getRandomBytes(GroupId.LENGTH + 1), previousMessageId);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsLeaveMessageWithTooShortGroupId() throws Exception {
BdfList list =
BdfList.of(LEAVE.getValue(), getRandomBytes(GroupId.LENGTH - 1),
previousMessageId);
validator.validateMessage(message, group, list);
public void testRejectsLeaveMessageWithNullGroupId() throws Exception {
BdfList body = BdfList.of(LEAVE.getValue(), null, previousMessageId);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsLeaveMessageWithNonRawGroupId() throws Exception {
BdfList body = BdfList.of(LEAVE.getValue(), "not raw",
previousMessageId);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsLeaveMessageWithTooShortPreviousMessageId()
throws Exception {
BdfList body = BdfList.of(LEAVE.getValue(), privateGroup.getId(),
getRandomBytes(UniqueId.LENGTH - 1));
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsLeaveMessageWithTooLongPreviousMessageId()
throws Exception {
BdfList list = BdfList.of(LEAVE.getValue(), privateGroup.getId(),
BdfList body = BdfList.of(LEAVE.getValue(), privateGroup.getId(),
getRandomBytes(UniqueId.LENGTH + 1));
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsLeaveMessageWithTooShortPreviousMessageId()
public void testRejectsLeaveMessageWithNonRawPreviousMessageId()
throws Exception {
BdfList list = BdfList.of(LEAVE.getValue(), privateGroup.getId(),
getRandomBytes(UniqueId.LENGTH - 1));
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(LEAVE.getValue(), privateGroup.getId(),
"not raw");
validator.validateMessage(message, group, body);
}
@Test
public void testAcceptsProperLeaveMessage()
public void testAcceptsLeaveMessageWithNullPreviousMessageId()
throws Exception {
BdfList body = BdfList.of(LEAVE.getValue(), privateGroup.getId(), null);
context.checking(new Expectations() {{
oneOf(messageEncoder).encodeMetadata(LEAVE, message.getGroupId(),
message.getTimestamp(), false, false, false, false);
will(returnValue(meta));
}});
BdfMessageContext messageContext =
validator.validateMessage(message, group, body);
assertEquals(0, messageContext.getDependencies().size());
assertEquals(meta, messageContext.getDictionary());
}
@Test
public void testAcceptsValidLeaveMessage() throws Exception {
context.checking(new Expectations() {{
oneOf(messageEncoder).encodeMetadata(LEAVE, message.getGroupId(),
message.getTimestamp(), false, false, false, false);
will(returnValue(meta));
}});
BdfList list = BdfList.of(LEAVE.getValue(), privateGroup.getId(),
BdfList body = BdfList.of(LEAVE.getValue(), privateGroup.getId(),
previousMessageId);
BdfMessageContext messageContext =
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
assertEquals(1, messageContext.getDependencies().size());
assertEquals(previousMessageId,
messageContext.getDependencies().iterator().next());
assertEquals(meta ,messageContext.getDictionary());
assertEquals(meta, messageContext.getDictionary());
}
// ABORT message
@Test(expected = FormatException.class)
public void testRejectsTooShortAbortMessage() throws Exception {
BdfList list = BdfList.of(ABORT.getValue());
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(ABORT.getValue());
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsTooLongAbortMessage() throws Exception {
BdfList list = BdfList.of(ABORT.getValue(), privateGroup.getId(), "");
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(ABORT.getValue(), privateGroup.getId(), "");
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsAbortMessageWithTooShortGroupId() throws Exception {
BdfList body = BdfList.of(ABORT.getValue(),
getRandomBytes(GroupId.LENGTH - 1));
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsAbortMessageWithTooLongGroupId() throws Exception {
BdfList list = BdfList.of(ABORT.getValue(),
BdfList body = BdfList.of(ABORT.getValue(),
getRandomBytes(GroupId.LENGTH + 1));
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsAbortMessageWithTooShortGroupId() throws Exception {
BdfList list = BdfList.of(ABORT.getValue(),
getRandomBytes(GroupId.LENGTH - 1));
validator.validateMessage(message, group, list);
public void testRejectsAbortMessageWithNullGroupId() throws Exception {
BdfList body = BdfList.of(ABORT.getValue(), null);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsAbortMessageWithNonRawGroupId() throws Exception {
BdfList body = BdfList.of(ABORT.getValue(), "not raw");
validator.validateMessage(message, group, body);
}
@Test
public void testAcceptsProperAbortMessage()
throws Exception {
public void testAcceptsValidAbortMessage() throws Exception {
context.checking(new Expectations() {{
oneOf(messageEncoder).encodeMetadata(ABORT, message.getGroupId(),
message.getTimestamp(), false, false, false, false);
will(returnValue(meta));
}});
BdfList list = BdfList.of(ABORT.getValue(), privateGroup.getId());
BdfList body = BdfList.of(ABORT.getValue(), privateGroup.getId());
BdfMessageContext messageContext =
validator.validateMessage(message, group, list);
validator.validateMessage(message, group, body);
assertEquals(0, messageContext.getDependencies().size());
assertEquals(meta ,messageContext.getDictionary());
assertEquals(meta, messageContext.getDictionary());
}
@Test(expected = FormatException.class)
public void testRejectsMessageWithUnknownType() throws Exception {
BdfList list = BdfList.of(ABORT.getValue() + 1);
validator.validateMessage(message, group, list);
BdfList body = BdfList.of(ABORT.getValue() + 1);
validator.validateMessage(message, group, body);
}
@Test(expected = FormatException.class)
public void testRejectsEmptyMessage() throws Exception {
BdfList body = new BdfList();
validator.validateMessage(message, group, body);
}
}
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