178 lines
5.5 KiB
Go
178 lines
5.5 KiB
Go
package wxworkbot
|
||
|
||
import (
|
||
"github.com/stretchr/testify/assert"
|
||
"net/http"
|
||
"os"
|
||
"strings"
|
||
"testing"
|
||
"time"
|
||
)
|
||
|
||
func getBotKey() string {
|
||
return os.Getenv("WXWORK_BOT_KEY")
|
||
}
|
||
|
||
func TestMarshalText(t *testing.T) {
|
||
text := Text{
|
||
Content: "广州今日天气:29度,大部分多云,降雨概率:60%",
|
||
MentionedList: []string{"wangqing", "@all"},
|
||
MentionedMobileList: []string{"13800001111", "@all"},
|
||
}
|
||
msgBytes, err := marshalMessage(text)
|
||
assert.Nil(t, err)
|
||
expected := `{"msgtype":"text","text":{"content":"广州今日天气:29度,大部分多云,降雨概率:60%","mentioned_list":["wangqing","@all"],"mentioned_mobile_list":["13800001111","@all"]}}`
|
||
msg := strings.TrimSuffix(string(msgBytes), "\n")
|
||
assert.Equal(t, expected, msg)
|
||
}
|
||
|
||
func TestMarshalTextMessage(t *testing.T) {
|
||
textMsg := textMessage{
|
||
Text: Text{
|
||
Content: "广州今日天气:29度,大部分多云,降雨概率:60%",
|
||
MentionedList: []string{"wangqing", "@all"},
|
||
MentionedMobileList: []string{"13800001111", "@all"},
|
||
},
|
||
}
|
||
msgBytes, err := marshalMessage(textMsg)
|
||
assert.Nil(t, err)
|
||
expected := `{"msgtype":"text","text":{"content":"广州今日天气:29度,大部分多云,降雨概率:60%","mentioned_list":["wangqing","@all"],"mentioned_mobile_list":["13800001111","@all"]}}`
|
||
msg := strings.TrimSuffix(string(msgBytes), "\n")
|
||
assert.Equal(t, expected, msg)
|
||
}
|
||
|
||
func TestMarshalMarkdown(t *testing.T) {
|
||
markdown := Markdown{
|
||
Content: "<font color=\"warning\">233</font>",
|
||
}
|
||
msgBytes, err := marshalMessage(markdown)
|
||
assert.Nil(t, err)
|
||
expected := `{"msgtype":"markdown","markdown":{"content":"<font color=\"warning\">233</font>"}}`
|
||
msg := strings.TrimSuffix(string(msgBytes), "\n")
|
||
assert.Equal(t, expected, msg)
|
||
}
|
||
|
||
func TestMarshalMarkdownMessage(t *testing.T) {
|
||
markdownMsg := markdownMessage{
|
||
Markdown: Markdown{
|
||
Content: "<font color=\"warning\">233</font>",
|
||
},
|
||
}
|
||
msgBytes, err := marshalMessage(markdownMsg)
|
||
assert.Nil(t, err)
|
||
expected := `{"msgtype":"markdown","markdown":{"content":"<font color=\"warning\">233</font>"}}`
|
||
msg := strings.TrimSuffix(string(msgBytes), "\n")
|
||
assert.Equal(t, expected, msg)
|
||
}
|
||
|
||
func TestMarshalImage(t *testing.T) {
|
||
image := Image{
|
||
Base64: "DATA",
|
||
MD5: "MD5",
|
||
}
|
||
msgBytes, err := marshalMessage(image)
|
||
assert.Nil(t, err)
|
||
expected := `{"msgtype":"image","image":{"base64":"DATA","md5":"MD5"}}`
|
||
msg := strings.TrimSuffix(string(msgBytes), "\n")
|
||
assert.Equal(t, expected, msg)
|
||
}
|
||
|
||
func TestMarshalImageMessage(t *testing.T) {
|
||
imageMsg := imageMessage{
|
||
Image: Image{
|
||
Base64: "DATA",
|
||
MD5: "MD5",
|
||
},
|
||
}
|
||
msgBytes, err := marshalMessage(imageMsg)
|
||
assert.Nil(t, err)
|
||
expected := `{"msgtype":"image","image":{"base64":"DATA","md5":"MD5"}}`
|
||
msg := strings.TrimSuffix(string(msgBytes), "\n")
|
||
assert.Equal(t, expected, msg)
|
||
}
|
||
|
||
func TestMarshalNews(t *testing.T) {
|
||
news := News{
|
||
Articles: []NewsArticle{
|
||
{
|
||
Title: "中秋节礼品领取",
|
||
Description: "今年中秋节公司有豪礼相送",
|
||
URL: "URL",
|
||
PicURL: "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png",
|
||
},
|
||
},
|
||
}
|
||
msgBytes, err := marshalMessage(news)
|
||
assert.Nil(t, err)
|
||
expected := `{"msgtype":"news","news":{"articles":[{"title":"中秋节礼品领取","description":"今年中秋节公司有豪礼相送","url":"URL","picurl":"http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"}]}}`
|
||
msg := strings.TrimSuffix(string(msgBytes), "\n")
|
||
assert.Equal(t, expected, msg)
|
||
}
|
||
|
||
func TestMarshalNewsMessage(t *testing.T) {
|
||
newsMsg := newsMessage{
|
||
News: News{
|
||
Articles: []NewsArticle{
|
||
{
|
||
Title: "中秋节礼品领取",
|
||
Description: "今年中秋节公司有豪礼相送",
|
||
URL: "URL",
|
||
PicURL: "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png",
|
||
},
|
||
}},
|
||
}
|
||
msgBytes, err := marshalMessage(newsMsg)
|
||
assert.Nil(t, err)
|
||
expected := `{"msgtype":"news","news":{"articles":[{"title":"中秋节礼品领取","description":"今年中秋节公司有豪礼相送","url":"URL","picurl":"http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"}]}}`
|
||
msg := strings.TrimSuffix(string(msgBytes), "\n")
|
||
assert.Equal(t, expected, msg)
|
||
}
|
||
|
||
func TestMarshalUnsupportedMessage(t *testing.T) {
|
||
text := struct {
|
||
Foo string
|
||
}{
|
||
Foo: "bar",
|
||
}
|
||
_, err := marshalMessage(text)
|
||
assert.Equal(t, ErrUnsupportedMessage, err)
|
||
}
|
||
|
||
func TestSendText(t *testing.T) {
|
||
bot := New(getBotKey())
|
||
err := bot.Send(Text{
|
||
Content: "测试发送文本消息",
|
||
MentionedList: []string{"wangqing", "@all"},
|
||
MentionedMobileList: []string{"13800001111", "@all"},
|
||
})
|
||
assert.Nil(t, err)
|
||
}
|
||
|
||
func TestSendWithInvalidBotKey(t *testing.T) {
|
||
textMsg := textMessage{
|
||
Text: Text{
|
||
Content: "广州今日天气:29度,大部分多云,降雨概率:60%",
|
||
MentionedList: []string{"wangqing", "@all"},
|
||
MentionedMobileList: []string{"13800001111", "@all"},
|
||
},
|
||
}
|
||
bot := New("这是一个错误的 BOT KEY")
|
||
err := bot.Send(textMsg)
|
||
assert.NotNil(t, err)
|
||
}
|
||
|
||
func TestWithCustomHttpClient(t *testing.T) {
|
||
bot := WxWorkBot{
|
||
Key: getBotKey(),
|
||
Client: &http.Client{
|
||
Timeout: 1 * time.Second,
|
||
},
|
||
}
|
||
err := bot.Send(Text{
|
||
Content: "广州今日天气:29度,大部分多云,降雨概率:60%",
|
||
MentionedList: []string{"wangqing", "@all"},
|
||
MentionedMobileList: []string{"13800001111", "@all"},
|
||
})
|
||
assert.Nil(t, err)
|
||
}
|