go-waku/waku/v2/protocol/topic_test.go

72 lines
2.0 KiB
Go

package protocol
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestContentTopic(t *testing.T) {
ct := NewContentTopic("waku", 2, "test", "proto")
require.Equal(t, ct.String(), "/waku/2/test/proto")
_, err := StringToContentTopic("/waku/-1/a/b")
require.Error(t, ErrInvalidFormat, err)
_, err = StringToContentTopic("waku/1/a/b")
require.Error(t, ErrInvalidFormat, err)
_, err = StringToContentTopic("////")
require.Error(t, ErrInvalidFormat, err)
_, err = StringToContentTopic("/waku/1/a")
require.Error(t, ErrInvalidFormat, err)
ct2, err := StringToContentTopic("/waku/2/test/proto")
require.NoError(t, err)
require.Equal(t, ct.String(), ct2.String())
require.True(t, ct.Equal(ct2))
ct3 := NewContentTopic("waku", 2, "test2", "proto")
require.False(t, ct.Equal(ct3))
}
func TestNsPubsubTopic(t *testing.T) {
ns1 := NewNamedShardingPubsubTopic("waku-dev")
require.Equal(t, "/waku/2/waku-dev", ns1.String())
ns2 := NewStaticShardingPubsubTopic(0, 2)
require.Equal(t, "/waku/2/rs/0/2", ns2.String())
require.True(t, ns1.Equal(ns1))
require.False(t, ns1.Equal(ns2))
topic := "/waku/2/waku-dev"
ns, err := ToShardedPubsubTopic(topic)
require.NoError(t, err)
require.Equal(t, NamedSharding, ns.Kind())
require.Equal(t, "waku-dev", ns.(NamedShardingPubsubTopic).Name())
topic = "/waku/2/rs/16/42"
ns, err = ToShardedPubsubTopic(topic)
require.NoError(t, err)
require.Equal(t, StaticSharding, ns.Kind())
require.Equal(t, uint16(16), ns.(StaticShardingPubsubTopic).Cluster())
require.Equal(t, uint16(42), ns.(StaticShardingPubsubTopic).Shard())
topic = "/waku/1/rs/16/42"
_, err = ToShardedPubsubTopic(topic)
require.Error(t, err)
require.ErrorIs(t, err, ErrInvalidTopicPrefix)
topic = "/waku/2/rs//02"
_, err = ToShardedPubsubTopic(topic)
require.Error(t, err)
require.ErrorIs(t, err, ErrMissingClusterIndex)
topic = "/waku/2/rs/xx/77"
_, err = ToShardedPubsubTopic(topic)
require.Error(t, err)
require.ErrorIs(t, err, ErrInvalidNumberFormat)
}