64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
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)
|
|
}
|
|
})
|
|
})
|
|
}
|