nwaku/tests/v2/test_namespacing_utils.nim

48 lines
1.2 KiB
Nim

{.used.}
import
testutils/unittests,
chronos,
stew/results,
../../waku/v2/utils/namespacing
procSuite "Namespacing utils":
asyncTest "Create from string":
# Expected case
let ns = NamespacedTopic.fromString("/waku/2/default-waku/proto").tryGet()
check:
ns.application == "waku"
ns.version == "2"
ns.topicName == "default-waku"
ns.encoding == "proto"
# Invalid cases
expect CatchableError:
# Topic should be namespaced
discard NamespacedTopic.fromString("this-is-not-namespaced").tryGet()
expect CatchableError:
# Topic should start with '/'
discard NamespacedTopic.fromString("waku/2/default-waku/proto").tryGet()
expect CatchableError:
# Topic has too few parts
discard NamespacedTopic.fromString("/waku/2/default-waku").tryGet()
expect CatchableError:
# Topic has too many parts
discard NamespacedTopic.fromString("/waku/2/default-waku/proto/2").tryGet()
asyncTest "Stringify namespaced topic":
var ns = NamespacedTopic()
ns.application = "waku"
ns.version = "2"
ns.topicName = "default-waku"
ns.encoding = "proto"
check:
$ns == "/waku/2/default-waku/proto"