84 lines
1.8 KiB
Go
84 lines
1.8 KiB
Go
|
package pubsub
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
compat_pb "github.com/libp2p/go-libp2p-pubsub/compat"
|
||
|
pb "github.com/libp2p/go-libp2p-pubsub/pb"
|
||
|
)
|
||
|
|
||
|
func TestMultitopicMessageCompatibility(t *testing.T) {
|
||
|
topic1 := "topic1"
|
||
|
topic2 := "topic2"
|
||
|
|
||
|
newMessage1 := &pb.Message{
|
||
|
From: []byte("A"),
|
||
|
Data: []byte("blah"),
|
||
|
Seqno: []byte("123"),
|
||
|
Topic: &topic1,
|
||
|
Signature: []byte("a-signature"),
|
||
|
Key: []byte("a-key"),
|
||
|
}
|
||
|
oldMessage1 := &compat_pb.Message{
|
||
|
From: []byte("A"),
|
||
|
Data: []byte("blah"),
|
||
|
Seqno: []byte("123"),
|
||
|
TopicIDs: []string{topic1},
|
||
|
Signature: []byte("a-signature"),
|
||
|
Key: []byte("a-key"),
|
||
|
}
|
||
|
oldMessage2 := &compat_pb.Message{
|
||
|
From: []byte("A"),
|
||
|
Data: []byte("blah"),
|
||
|
Seqno: []byte("123"),
|
||
|
TopicIDs: []string{topic1, topic2},
|
||
|
Signature: []byte("a-signature"),
|
||
|
Key: []byte("a-key"),
|
||
|
}
|
||
|
|
||
|
newMessage1b, err := newMessage1.Marshal()
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
oldMessage1b, err := oldMessage1.Marshal()
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
oldMessage2b, err := oldMessage2.Marshal()
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
newMessage := new(pb.Message)
|
||
|
oldMessage := new(compat_pb.Message)
|
||
|
|
||
|
err = newMessage.Unmarshal(oldMessage1b)
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
if newMessage.GetTopic() != topic1 {
|
||
|
t.Fatalf("bad topic: expected %s, got %s", topic1, newMessage.GetTopic())
|
||
|
}
|
||
|
|
||
|
newMessage.Reset()
|
||
|
err = newMessage.Unmarshal(oldMessage2b)
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
if newMessage.GetTopic() != topic2 {
|
||
|
t.Fatalf("bad topic: expected %s, got %s", topic2, newMessage.GetTopic())
|
||
|
}
|
||
|
|
||
|
err = oldMessage.Unmarshal(newMessage1b)
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
topics := oldMessage.GetTopicIDs()
|
||
|
if len(topics) != 1 {
|
||
|
t.Fatalf("expected 1 topic, got %d", len(topics))
|
||
|
}
|
||
|
if topics[0] != topic1 {
|
||
|
t.Fatalf("bad topic: expected %s, got %s", topic1, topics[0])
|
||
|
}
|
||
|
}
|