mirror of https://github.com/waku-org/nwaku.git
65 lines
2.2 KiB
Nim
65 lines
2.2 KiB
Nim
|
#
|
||
|
# Waku
|
||
|
# (c) Copyright 2020
|
||
|
# Status Research & Development GmbH
|
||
|
#
|
||
|
# Licensed under either of
|
||
|
# Apache License, version 2.0, (LICENSE-APACHEv2)
|
||
|
# MIT license (LICENSE-MIT)
|
||
|
|
||
|
import
|
||
|
sequtils, options, unittest, times,
|
||
|
../waku/protocol/v1/waku_protocol
|
||
|
|
||
|
suite "Waku envelope validation":
|
||
|
test "should validate and allow envelope according to config":
|
||
|
let ttl = 1'u32
|
||
|
let topic = [byte 1, 2, 3, 4]
|
||
|
let config = WakuConfig(powRequirement: 0, bloom: some(topic.topicBloom()),
|
||
|
isLightNode: false, maxMsgSize: defaultMaxMsgSize)
|
||
|
|
||
|
let env = Envelope(expiry:epochTime().uint32 + ttl, ttl: ttl, topic: topic,
|
||
|
data: repeat(byte 9, 256), nonce: 0)
|
||
|
check env.valid()
|
||
|
|
||
|
let msg = initMessage(env)
|
||
|
check msg.allowed(config)
|
||
|
|
||
|
test "should invalidate envelope due to ttl 0":
|
||
|
let ttl = 0'u32
|
||
|
let topic = [byte 1, 2, 3, 4]
|
||
|
|
||
|
let env = Envelope(expiry:epochTime().uint32 + ttl, ttl: ttl, topic: topic,
|
||
|
data: repeat(byte 9, 256), nonce: 0)
|
||
|
check env.valid() == false
|
||
|
|
||
|
test "should invalidate envelope due to expired":
|
||
|
let ttl = 1'u32
|
||
|
let topic = [byte 1, 2, 3, 4]
|
||
|
|
||
|
let env = Envelope(expiry:epochTime().uint32, ttl: ttl, topic: topic,
|
||
|
data: repeat(byte 9, 256), nonce: 0)
|
||
|
check env.valid() == false
|
||
|
|
||
|
test "should invalidate envelope due to in the future":
|
||
|
let ttl = 1'u32
|
||
|
let topic = [byte 1, 2, 3, 4]
|
||
|
|
||
|
# there is currently a 2 second tolerance, hence the + 3
|
||
|
let env = Envelope(expiry:epochTime().uint32 + ttl + 3, ttl: ttl,
|
||
|
topic: topic, data: repeat(byte 9, 256), nonce: 0)
|
||
|
check env.valid() == false
|
||
|
|
||
|
test "should not allow envelope due to bloom filter":
|
||
|
let topic = [byte 1, 2, 3, 4]
|
||
|
let wrongTopic = [byte 9, 8, 7, 6]
|
||
|
let config = WakuConfig(powRequirement: 0,
|
||
|
bloom: some(wrongTopic.topicBloom()),
|
||
|
isLightNode: false, maxMsgSize: defaultMaxMsgSize)
|
||
|
|
||
|
let env = Envelope(expiry:100000 , ttl: 30, topic: topic,
|
||
|
data: repeat(byte 9, 256), nonce: 0)
|
||
|
|
||
|
let msg = initMessage(env)
|
||
|
check msg.allowed(config) == false
|