aboutsummaryrefslogtreecommitdiffstats
path: root/whisper/whisperv5/filter_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'whisper/whisperv5/filter_test.go')
-rw-r--r--whisper/whisperv5/filter_test.go107
1 files changed, 97 insertions, 10 deletions
diff --git a/whisper/whisperv5/filter_test.go b/whisper/whisperv5/filter_test.go
index 4ce87eee2..bd35e7f20 100644
--- a/whisper/whisperv5/filter_test.go
+++ b/whisper/whisperv5/filter_test.go
@@ -132,6 +132,103 @@ func TestInstallFilters(t *testing.T) {
}
}
+func TestInstallSymKeyGeneratesHash(t *testing.T) {
+ InitSingleTest()
+
+ w := New(&Config{})
+ filters := NewFilters(w)
+ filter, _ := generateFilter(t, true)
+
+ // save the current SymKeyHash for comparison
+ initialSymKeyHash := filter.SymKeyHash
+
+ // ensure the SymKeyHash is invalid, for Install to recreate it
+ var invalid common.Hash
+ filter.SymKeyHash = invalid
+
+ _, err := filters.Install(filter)
+
+ if err != nil {
+ t.Fatalf("Error installing the filter: %s", err)
+ }
+
+ for i, b := range filter.SymKeyHash {
+ if b != initialSymKeyHash[i] {
+ t.Fatalf("The filter's symmetric key hash was not properly generated by Install")
+ }
+ }
+}
+
+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 with seed %d: %s", seed, err)
+ }
+
+ _, err = filters.Install(filter2)
+
+ if err != nil {
+ t.Fatalf("Error installing the second filter with seed %d: %s", seed, err)
+ }
+
+ params, err := generateMessageParams()
+ if err != nil {
+ t.Fatalf("Error generating message parameters with seed %d: %s", seed, 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.MatchEnvelope(env) {
+ t.Fatalf("failed matching with the first filter")
+ }
+
+ if !filter1.MatchMessage(msg) {
+ t.Fatalf("failed matching with the second filter")
+ }
+
+ if !filter2.MatchMessage(msg) {
+ t.Fatalf("failed matching with the second filter")
+ }
+}
+
func TestComparePubKey(t *testing.T) {
InitSingleTest()
@@ -345,11 +442,6 @@ func TestMatchMessageSym(t *testing.T) {
t.Fatalf("failed Open with seed %d.", seed)
}
- // Src mismatch
- if f.MatchMessage(msg) {
- t.Fatalf("failed MatchMessage(src mismatch) with seed %d.", seed)
- }
-
// Src: match
*f.Src.X = *params.Src.PublicKey.X
*f.Src.Y = *params.Src.PublicKey.Y
@@ -443,11 +535,6 @@ func TestMatchMessageAsym(t *testing.T) {
t.Fatalf("failed to open with seed %d.", seed)
}
- // Src mismatch
- if f.MatchMessage(msg) {
- t.Fatalf("failed MatchMessage(src mismatch) with seed %d.", seed)
- }
-
// Src: match
*f.Src.X = *params.Src.PublicKey.X
*f.Src.Y = *params.Src.PublicKey.Y