diff options
author | Guillaume Ballet <gballet@gmail.com> | 2017-10-06 22:04:21 +0800 |
---|---|---|
committer | Felix Lange <fjl@users.noreply.github.com> | 2017-10-06 22:04:21 +0800 |
commit | 7a045af05b93c323f63c7af41423ded701ce3890 (patch) | |
tree | fcdfe96a65717fd18f3813cd5100d4790a582c1d /whisper/whisperv5/filter_test.go | |
parent | 36243c7ed8c53e9de92d21bbcf0378d7e1c7a07e (diff) | |
download | go-tangerine-7a045af05b93c323f63c7af41423ded701ce3890.tar go-tangerine-7a045af05b93c323f63c7af41423ded701ce3890.tar.gz go-tangerine-7a045af05b93c323f63c7af41423ded701ce3890.tar.bz2 go-tangerine-7a045af05b93c323f63c7af41423ded701ce3890.tar.lz go-tangerine-7a045af05b93c323f63c7af41423ded701ce3890.tar.xz go-tangerine-7a045af05b93c323f63c7af41423ded701ce3890.tar.zst go-tangerine-7a045af05b93c323f63c7af41423ded701ce3890.zip |
whisper/whisperv5: set filter SymKeyHash on creation (#15165)
Diffstat (limited to 'whisper/whisperv5/filter_test.go')
-rw-r--r-- | whisper/whisperv5/filter_test.go | 107 |
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 = ¶ms.Src.PublicKey + filter2.Src = ¶ms.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 |