mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 07:06:42 +00:00
whisper: tests added
This commit is contained in:
parent
51cfbba9e0
commit
44fc7bb634
3 changed files with 87 additions and 1 deletions
|
|
@ -233,7 +233,12 @@ func (api *PublicWhisperAPI) Subscribe(args WhisperFilterArgs) (string, error) {
|
|||
AllowP2P: args.AllowP2P,
|
||||
}
|
||||
|
||||
for _, bt := range args.Topics {
|
||||
for i, bt := range args.Topics {
|
||||
if len(bt) == 0 || len(bt) > 4 {
|
||||
info := fmt.Sprintf("Subscribe: topic %d has wrong size: %d", i, len(bt))
|
||||
log.Error(info)
|
||||
return "", errors.New(info)
|
||||
}
|
||||
filter.Topics = append(filter.Topics, bt)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -635,3 +635,47 @@ func TestKey(t *testing.T) {
|
|||
t.Fatalf("wrong key")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSubscribe(t *testing.T) {
|
||||
var err error
|
||||
var s string
|
||||
|
||||
w := New()
|
||||
api := NewPublicWhisperAPI(w)
|
||||
if api == nil {
|
||||
t.Fatalf("failed to create API.")
|
||||
}
|
||||
|
||||
symKeyID, err := api.GenerateSymmetricKey()
|
||||
if err != nil {
|
||||
t.Fatalf("failed to GenerateSymKey: %s.", err)
|
||||
}
|
||||
|
||||
var f WhisperFilterArgs
|
||||
f.Symmetric = true
|
||||
f.Key = symKeyID
|
||||
f.Topics = make([][]byte, 5)
|
||||
f.Topics[0] = []byte{0x21}
|
||||
f.Topics[1] = []byte{0xd2, 0xe3}
|
||||
f.Topics[2] = []byte{0x64, 0x75, 0x76}
|
||||
f.Topics[3] = []byte{0xf8, 0xe9, 0xa0, 0xba}
|
||||
f.Topics[4] = []byte{0xcb, 0x3c, 0xdd, 0xee, 0xff}
|
||||
|
||||
s, err = api.Subscribe(f)
|
||||
if err == nil {
|
||||
t.Fatalf("Subscribe: false positive.")
|
||||
}
|
||||
|
||||
f.Topics[4] = []byte{}
|
||||
if err == nil {
|
||||
t.Fatalf("Subscribe: false positive again.")
|
||||
}
|
||||
|
||||
f.Topics[4] = []byte{0x00}
|
||||
s, err = api.Subscribe(f)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to subscribe: %s.", err)
|
||||
} else {
|
||||
api.Unsubscribe(s)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -669,3 +669,40 @@ func TestWatchers(t *testing.T) {
|
|||
t.Fatalf("failed with seed %d: total: got %d, want 1.", seed, total)
|
||||
}
|
||||
}
|
||||
|
||||
func TestVariableTopics(t *testing.T) {
|
||||
InitSingleTest()
|
||||
|
||||
var match bool
|
||||
params, err := generateMessageParams()
|
||||
if err != nil {
|
||||
t.Fatalf("failed generateMessageParams with seed %d: %s.", seed, err)
|
||||
}
|
||||
msg := NewSentMessage(params)
|
||||
env, err := msg.Wrap(params)
|
||||
if err != nil {
|
||||
t.Fatalf("failed Wrap with seed %d: %s.", seed, err)
|
||||
}
|
||||
|
||||
f, err := generateFilter(t, true)
|
||||
if err != nil {
|
||||
t.Fatalf("failed generateFilter with seed %d: %s.", seed, err)
|
||||
}
|
||||
|
||||
for i := 0; i < 4; i++ {
|
||||
arr := make([]byte, i+1, 4)
|
||||
copy(arr, env.Topic[0:i+1])
|
||||
|
||||
f.Topics[4] = arr
|
||||
match = f.MatchEnvelope(env)
|
||||
if !match {
|
||||
t.Fatalf("failed MatchEnvelope symmetric with seed %d, step %d.", seed, i)
|
||||
}
|
||||
|
||||
f.Topics[4][i]++
|
||||
match = f.MatchEnvelope(env)
|
||||
if match {
|
||||
t.Fatalf("MatchEnvelope symmetric with seed %d, step %d: false positive.", seed, i)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue