codename-sendaround/internal/messages_test.go

64 lines
1.3 KiB
Go
Raw Normal View History

2019-07-11 12:00:45 +00:00
package internal
import (
"bytes"
"encoding/json"
"strings"
"testing"
. "github.com/smartystreets/goconvey/convey"
)
var (
dataTable = []struct {
Message *Message
JSON string
}{
{
Message: &Message{
FileOfferMessage: &FileOfferMessage{
FileName: "hello.exe",
MimeType: "application/octet-stream",
Length: 1000,
},
},
JSON: `{"data":{"fileName":"hello.exe","length":1000,"mimeType":"application/octet-stream"},"type":"fileOffer"}`,
},
{
Message: &Message{
FileTransferRequestMessage: &FileTransferRequestMessage{
FileName: "hello.exe",
},
},
JSON: `{"data":{"fileName":"hello.exe"},"type":"fileTransferRequest"}`,
},
}
)
func Test_Message_MarshalJSON(t *testing.T) {
Convey("Message", t, func() {
Convey("MarshalJSON", func() {
for _, data := range dataTable {
buf := new(bytes.Buffer)
err := json.NewEncoder(buf).Encode(data.Message)
So(err, ShouldBeNil)
So(strings.TrimSpace(buf.String()), ShouldEqual, data.JSON)
}
})
})
}
func Test_Message_UnmarshalJSON(t *testing.T) {
Convey("Message", t, func() {
Convey("UnmarshalJSON", func() {
for _, data := range dataTable {
m := new(Message)
buf := strings.NewReader(data.JSON)
err := json.NewDecoder(buf).Decode(m)
So(err, ShouldBeNil)
So(m, ShouldResemble, data.Message)
}
})
})
}