whisper: test to check two identical filters receive identical messages

This commit is contained in:
Guillaume Ballet 2017-09-21 17:33:23 +02:00
parent 4d241a5d75
commit 1de075ed6c

View file

@ -155,11 +155,72 @@ func TestInstallSymKeyGeneratesHash(t *testing.T) {
for i, b := range filter.SymKeyHash { for i, b := range filter.SymKeyHash {
if b != initialSymKeyHash[i] { if b != initialSymKeyHash[i] {
t.Fatalf("The filter's symmetric key hash was not properly generated by Install") t.Fatalf("The filter's symmetric key hash was not properly generated by Install")
break
} }
} }
} }
func TestInstallIdenticalFilters(t *testing.T) {
InitSingleTest()
w := New(&Config{})
filters := NewFilters(w)
filter1, _ := generateFilter(t, true)
// Copy the first filter since some of its fields
// are randomly gnerated.
filter2 := &Filter{
KeySym: filter1.KeySym,
Topics: filter1.Topics,
PoW: filter1.PoW,
AllowP2P: filter1.AllowP2P,
Messages: make(map[common.Hash]*ReceivedMessage),
};
_, err := filters.Install(filter1)
if err != nil {
t.Fatalf("Error installing the first filter: %v", err);
}
_, err = filters.Install(filter2)
if err != nil {
t.Fatalf("Error installing the second filter: %v", err);
}
params, err := generateMessageParams()
if err != nil {
t.Fatal("Error generating message parameters: %v", err);
}
params.KeySym = filter1.KeySym
params.Topic = BytesToTopic(filter1.Topics[0])
filter1.Src = &params.Src.PublicKey;
filter2.Src = &params.Src.PublicKey;
sentMessage, err := NewSentMessage(params)
if err != nil {
t.Fatalf("failed to create new message with seed %d: %s.", seed, err)
}
env, err := sentMessage.Wrap(params)
if err != nil {
t.Fatalf("failed Wrap with seed %d: %s.", seed, err)
}
msg := env.Open(filter1)
if msg == nil {
t.Fatalf("failed to Open with filter1")
}
if ! filter1.MatchEnvelope(env) {
t.Fatalf("failed matching with the first filter")
}
if ! filter2.MatchMessage(msg) {
t.Fatalf("failed matching with the second filter")
}
}
func TestComparePubKey(t *testing.T) { func TestComparePubKey(t *testing.T) {
InitSingleTest() InitSingleTest()