Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
briar
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Julian Dehm
briar
Commits
a82fdca3
Unverified
Commit
a82fdca3
authored
8 years ago
by
akwizgran
Browse files
Options
Downloads
Patches
Plain Diff
Added more private group invitation validation tests.
parent
050111a9
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
briar-tests/src/org/briarproject/privategroup/invitation/GroupInvitationValidatorTest.java
+304
-146
304 additions, 146 deletions
...privategroup/invitation/GroupInvitationValidatorTest.java
with
304 additions
and
146 deletions
briar-tests/src/org/briarproject/privategroup/invitation/GroupInvitationValidatorTest.java
+
304
−
146
View file @
a82fdca3
...
...
@@ -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
testRejectsInviteMessageWith
Empty
GroupName
()
public
void
testRejectsInviteMessageWith
Null
GroupName
()
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
testRejectsInviteMessageWith
Empty
CreatorName
()
public
void
testRejectsInviteMessageWith
Null
CreatorName
()
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
testRejectsInviteMessageWith
Empty
CreatorKey
()
public
void
testRejectsInviteMessageWith
Null
CreatorKey
()
throws
Exception
{
BdfList
list
=
BdfList
.
of
(
INVITE
.
getValue
(),
groupName
,
creatorName
,
n
ew
byte
[
0
]
,
salt
,
inviteText
,
signature
);
validator
.
validateMessage
(
message
,
group
,
list
);
BdfList
body
=
BdfList
.
of
(
INVITE
.
getValue
(),
groupName
,
creatorName
,
n
ull
,
salt
,
inviteText
,
signature
);
validator
.
validateMessage
(
message
,
group
,
body
);
}
@Test
(
expected
=
FormatException
.
class
)
public
void
testRejectsInviteMessageWith
TooLongGroupSalt
()
public
void
testRejectsInviteMessageWith
NonRawCreatorKey
()
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
testRejectsInviteMessageWith
TooLongMessage
()
public
void
testRejectsInviteMessageWith
NullGroupSalt
()
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
testRejectsInviteMessageWith
TooLongSignature
()
public
void
testRejectsInviteMessageWith
NonStringContent
()
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
testRejectsInviteMessageWith
Empty
Signature
()
public
void
testRejectsInviteMessageWith
TooShort
Signature
()
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
testRejectsInviteMessageWith
Null
Signature
()
public
void
testRejectsInviteMessageWith
TooLong
Signature
()
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
testRejectsInviteMessageWithN
onRaw
Signature
()
public
void
testRejectsInviteMessageWithN
ull
Signature
()
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
test
Accep
tsInviteMessageWithN
ullMessag
e
()
@Test
(
expected
=
FormatException
.
class
)
public
void
test
Rejec
tsInviteMessageWithN
onRawSignatur
e
()
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
,
toS
ign
);
if
(
exception
)
will
(
throwException
(
new
GeneralSecurityException
()));
else
{
oneOf
(
messageEncoder
)
.
encodeMetadata
(
INVITE
,
message
.
getGroupId
(),
message
.
getTimestamp
(),
false
,
false
,
false
,
false
);
creatorKey
,
s
ign
ed
);
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
testRejectsJoinMessageWith
TooShort
PreviousMessageId
()
public
void
testRejectsJoinMessageWith
NonRaw
PreviousMessageId
()
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
testAccepts
ProperJoin
Message
()
public
void
testAccepts
JoinMessageWithNullPrevious
Message
Id
()
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
testRejectsLeaveMessageWith
TooShort
PreviousMessageId
()
public
void
testRejectsLeaveMessageWith
NonRaw
PreviousMessageId
()
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
testAccepts
Proper
LeaveMessage
()
public
void
testAcceptsLeaveMessage
WithNullPreviousMessageId
()
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
);
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment