github.com/chanxuehong/wechat@v0.0.0-20230222024006-36f0325263cd/mp/message/callback/request/msg_test.go (about) 1 package request 2 3 import ( 4 "encoding/xml" 5 "reflect" 6 "testing" 7 8 "github.com/chanxuehong/wechat/mp/core" 9 ) 10 11 func TestTextMessage(t *testing.T) { 12 msg := []byte(`<xml><ToUserName><![CDATA[gh_21ee2dc92d7d]]></ToUserName> 13 <FromUserName><![CDATA[os-IKuHd9pJ6xsn4mS7GyL4HxqI4]]></FromUserName> 14 <CreateTime>1457742803</CreateTime> 15 <MsgType><![CDATA[text]]></MsgType> 16 <Content><![CDATA[hhhhhjjjjjjjjj]]></Content> 17 <MsgId>6260957665266699303</MsgId> 18 </xml>`) 19 20 var mixedMsg = &core.MixedMsg{} 21 if err := xml.Unmarshal(msg, mixedMsg); err != nil { 22 t.Errorf("unmarshal failed: %s\n", err.Error()) 23 return 24 } 25 var haveObject = GetText(mixedMsg) 26 27 var wantObject = &Text{ 28 MsgHeader: core.MsgHeader{ 29 ToUserName: "gh_21ee2dc92d7d", 30 FromUserName: "os-IKuHd9pJ6xsn4mS7GyL4HxqI4", 31 CreateTime: 1457742803, 32 MsgType: MsgTypeText, 33 }, 34 MsgId: 6260957665266699303, 35 Content: "hhhhhjjjjjjjjj", 36 } 37 if !reflect.DeepEqual(haveObject, wantObject) { 38 t.Errorf("compare failed,\nhave:\n%+v\nwant:\n%+v\n", haveObject, wantObject) 39 return 40 } 41 } 42 43 func TestImageMessage(t *testing.T) { 44 msg := []byte(`<xml><ToUserName><![CDATA[gh_21ee2dc92d7d]]></ToUserName> 45 <FromUserName><![CDATA[os-IKuHd9pJ6xsn4mS7GyL4HxqI4]]></FromUserName> 46 <CreateTime>1457742821</CreateTime> 47 <MsgType><![CDATA[image]]></MsgType> 48 <PicUrl><![CDATA[http://mmbiz.qpic.cn/mmbiz/eUIjD3Aun1G3tmxfVLgNsNI5UVrf5fFZXC9bkNmibssibA4aluCxmqp6ibyyxT4iaXmQaMR72hncyp65Yt2ZRIsH9g/0]]></PicUrl> 49 <MsgId>6260957742576110634</MsgId> 50 <MediaId><![CDATA[XbQZ2aq1i7G6ZPZzP8DoySg25X5iDcjefx_cbO3kFzww5I9Y_NgNVSsDqte1ZNOR]]></MediaId> 51 </xml>`) 52 53 var mixedMsg = &core.MixedMsg{} 54 if err := xml.Unmarshal(msg, mixedMsg); err != nil { 55 t.Errorf("unmarshal failed: %s\n", err.Error()) 56 return 57 } 58 var haveObject = GetImage(mixedMsg) 59 60 var wantObject = &Image{ 61 MsgHeader: core.MsgHeader{ 62 ToUserName: "gh_21ee2dc92d7d", 63 FromUserName: "os-IKuHd9pJ6xsn4mS7GyL4HxqI4", 64 CreateTime: 1457742821, 65 MsgType: MsgTypeImage, 66 }, 67 MsgId: 6260957742576110634, 68 MediaId: "XbQZ2aq1i7G6ZPZzP8DoySg25X5iDcjefx_cbO3kFzww5I9Y_NgNVSsDqte1ZNOR", 69 PicURL: "http://mmbiz.qpic.cn/mmbiz/eUIjD3Aun1G3tmxfVLgNsNI5UVrf5fFZXC9bkNmibssibA4aluCxmqp6ibyyxT4iaXmQaMR72hncyp65Yt2ZRIsH9g/0", 70 } 71 if !reflect.DeepEqual(haveObject, wantObject) { 72 t.Errorf("compare failed,\nhave:\n%+v\nwant:\n%+v\n", haveObject, wantObject) 73 return 74 } 75 } 76 77 func TestVoiceMessage(t *testing.T) { 78 msg := []byte(`<xml><ToUserName><![CDATA[gh_21ee2dc92d7d]]></ToUserName> 79 <FromUserName><![CDATA[os-IKuHd9pJ6xsn4mS7GyL4HxqI4]]></FromUserName> 80 <CreateTime>1457742830</CreateTime> 81 <MsgType><![CDATA[voice]]></MsgType> 82 <MediaId><![CDATA[NUjTR19l2n7kxNmmol1K3unuUrk-b2LRMri_SkEoFADjnVYeV8tFjx8EQB7trHJk]]></MediaId> 83 <Format><![CDATA[amr]]></Format> 84 <MsgId>6260957780828487680</MsgId> 85 <Recognition><![CDATA[傻逼!]]></Recognition> 86 </xml>`) 87 88 var mixedMsg = &core.MixedMsg{} 89 if err := xml.Unmarshal(msg, mixedMsg); err != nil { 90 t.Errorf("unmarshal failed: %s\n", err.Error()) 91 return 92 } 93 var haveObject = GetVoice(mixedMsg) 94 95 var wantObject = &Voice{ 96 MsgHeader: core.MsgHeader{ 97 ToUserName: "gh_21ee2dc92d7d", 98 FromUserName: "os-IKuHd9pJ6xsn4mS7GyL4HxqI4", 99 CreateTime: 1457742830, 100 MsgType: MsgTypeVoice, 101 }, 102 MsgId: 6260957780828487680, 103 MediaId: "NUjTR19l2n7kxNmmol1K3unuUrk-b2LRMri_SkEoFADjnVYeV8tFjx8EQB7trHJk", 104 Format: "amr", 105 Recognition: "傻逼!", 106 } 107 if !reflect.DeepEqual(haveObject, wantObject) { 108 t.Errorf("compare failed,\nhave:\n%+v\nwant:\n%+v\n", haveObject, wantObject) 109 return 110 } 111 } 112 113 func TestVideoMessage(t *testing.T) { 114 msg := []byte(`<xml><ToUserName><![CDATA[toUser]]></ToUserName> 115 <FromUserName><![CDATA[fromUser]]></FromUserName> 116 <CreateTime>1357290913</CreateTime> 117 <MsgType><![CDATA[video]]></MsgType> 118 <MediaId><![CDATA[media_id]]></MediaId> 119 <ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId> 120 <MsgId>1234567890123456</MsgId> 121 </xml>`) 122 123 var mixedMsg = &core.MixedMsg{} 124 if err := xml.Unmarshal(msg, mixedMsg); err != nil { 125 t.Errorf("unmarshal failed: %s\n", err.Error()) 126 return 127 } 128 var haveObject = GetVideo(mixedMsg) 129 130 var wantObject = &Video{ 131 MsgHeader: core.MsgHeader{ 132 ToUserName: "toUser", 133 FromUserName: "fromUser", 134 CreateTime: 1357290913, 135 MsgType: MsgTypeVideo, 136 }, 137 MsgId: 1234567890123456, 138 MediaId: "media_id", 139 ThumbMediaId: "thumb_media_id", 140 } 141 if !reflect.DeepEqual(haveObject, wantObject) { 142 t.Errorf("compare failed,\nhave:\n%+v\nwant:\n%+v\n", haveObject, wantObject) 143 return 144 } 145 } 146 147 func TestShortVideoMessage(t *testing.T) { 148 msg := []byte(`<xml><ToUserName><![CDATA[gh_21ee2dc92d7d]]></ToUserName> 149 <FromUserName><![CDATA[os-IKuHd9pJ6xsn4mS7GyL4HxqI4]]></FromUserName> 150 <CreateTime>1457742856</CreateTime> 151 <MsgType><![CDATA[shortvideo]]></MsgType> 152 <MediaId><![CDATA[hcik2O_g6Pa6d2RjvZze-BgLjocAiBfsNqXd_JBkw570RUb0qh8ayO12TaC5TPhc]]></MediaId> 153 <ThumbMediaId><![CDATA[5Sykx9I2TiVMmU0EAYTiSVZ7rdU0q7zHw8NEBL_COo_hedMcd9RFuz0-zv_Hqplk]]></ThumbMediaId> 154 <MsgId>6260957892899965999</MsgId> 155 </xml>`) 156 157 var mixedMsg = &core.MixedMsg{} 158 if err := xml.Unmarshal(msg, mixedMsg); err != nil { 159 t.Errorf("unmarshal failed: %s\n", err.Error()) 160 return 161 } 162 var haveObject = GetShortVideo(mixedMsg) 163 164 var wantObject = &ShortVideo{ 165 MsgHeader: core.MsgHeader{ 166 ToUserName: "gh_21ee2dc92d7d", 167 FromUserName: "os-IKuHd9pJ6xsn4mS7GyL4HxqI4", 168 CreateTime: 1457742856, 169 MsgType: MsgTypeShortVideo, 170 }, 171 MsgId: 6260957892899965999, 172 MediaId: "hcik2O_g6Pa6d2RjvZze-BgLjocAiBfsNqXd_JBkw570RUb0qh8ayO12TaC5TPhc", 173 ThumbMediaId: "5Sykx9I2TiVMmU0EAYTiSVZ7rdU0q7zHw8NEBL_COo_hedMcd9RFuz0-zv_Hqplk", 174 } 175 if !reflect.DeepEqual(haveObject, wantObject) { 176 t.Errorf("compare failed,\nhave:\n%+v\nwant:\n%+v\n", haveObject, wantObject) 177 return 178 } 179 } 180 181 func TestLocationMessage(t *testing.T) { 182 msg := []byte(`<xml><ToUserName><![CDATA[gh_21ee2dc92d7d]]></ToUserName> 183 <FromUserName><![CDATA[os-IKuHd9pJ6xsn4mS7GyL4HxqI4]]></FromUserName> 184 <CreateTime>1457742894</CreateTime> 185 <MsgType><![CDATA[location]]></MsgType> 186 <Location_X>30.195360</Location_X> 187 <Location_Y>109.32305</Location_Y> 188 <Scale>10</Scale> 189 <Label><![CDATA[湖北省恩施土家族苗族自治州恩施市]]></Label> 190 <MsgId>6260958056108723257</MsgId> 191 </xml>`) 192 193 var mixedMsg = &core.MixedMsg{} 194 if err := xml.Unmarshal(msg, mixedMsg); err != nil { 195 t.Errorf("unmarshal failed: %s\n", err.Error()) 196 return 197 } 198 var haveObject = GetLocation(mixedMsg) 199 200 var wantObject = &Location{ 201 MsgHeader: core.MsgHeader{ 202 ToUserName: "gh_21ee2dc92d7d", 203 FromUserName: "os-IKuHd9pJ6xsn4mS7GyL4HxqI4", 204 CreateTime: 1457742894, 205 MsgType: MsgTypeLocation, 206 }, 207 MsgId: 6260958056108723257, 208 LocationX: 30.195360, 209 LocationY: 109.32305, 210 Scale: 10, 211 Label: "湖北省恩施土家族苗族自治州恩施市", 212 } 213 if !reflect.DeepEqual(haveObject, wantObject) { 214 t.Errorf("compare failed,\nhave:\n%+v\nwant:\n%+v\n", haveObject, wantObject) 215 return 216 } 217 } 218 219 func TestLinkMessage(t *testing.T) { 220 msg := []byte(`<xml><ToUserName><![CDATA[gh_21ee2dc92d7d]]></ToUserName> 221 <FromUserName><![CDATA[os-IKuHd9pJ6xsn4mS7GyL4HxqI4]]></FromUserName> 222 <CreateTime>1457742914</CreateTime> 223 <MsgType><![CDATA[link]]></MsgType> 224 <Title><![CDATA[当日本的“变态”遇上德国的严谨,结果房子疯了!]]></Title> 225 <Description><![CDATA[http://mp.weixin.qq.com/s?__biz=MjM5OTI1NzMwMQ==&mid=401506474&idx=2&sn=2a58169e0c6cf9a1d0b364d3415ef9f2&scene=2&srcid=1213NSFj35aDx3AQxygUNmJK#rd]]></Description> 226 <Url><![CDATA[http://mp.weixin.qq.com/s?__biz=MjM5OTI1NzMwMQ==&mid=401506474&idx=2&sn=2a58169e0c6cf9a1d0b364d3415ef9f2&scene=2&srcid=1213NSFj35aDx3AQxygUNmJK&from=timeline&isappinstalled=0#rd]]></Url> 227 <MsgId>6260958142008069179</MsgId> 228 </xml>`) 229 230 var mixedMsg = &core.MixedMsg{} 231 if err := xml.Unmarshal(msg, mixedMsg); err != nil { 232 t.Errorf("unmarshal failed: %s\n", err.Error()) 233 return 234 } 235 var haveObject = GetLink(mixedMsg) 236 237 var wantObject = &Link{ 238 MsgHeader: core.MsgHeader{ 239 ToUserName: "gh_21ee2dc92d7d", 240 FromUserName: "os-IKuHd9pJ6xsn4mS7GyL4HxqI4", 241 CreateTime: 1457742914, 242 MsgType: MsgTypeLink, 243 }, 244 MsgId: 6260958142008069179, 245 Title: "当日本的“变态”遇上德国的严谨,结果房子疯了!", 246 Description: "http://mp.weixin.qq.com/s?__biz=MjM5OTI1NzMwMQ==&mid=401506474&idx=2&sn=2a58169e0c6cf9a1d0b364d3415ef9f2&scene=2&srcid=1213NSFj35aDx3AQxygUNmJK#rd", 247 URL: "http://mp.weixin.qq.com/s?__biz=MjM5OTI1NzMwMQ==&mid=401506474&idx=2&sn=2a58169e0c6cf9a1d0b364d3415ef9f2&scene=2&srcid=1213NSFj35aDx3AQxygUNmJK&from=timeline&isappinstalled=0#rd", 248 } 249 if !reflect.DeepEqual(haveObject, wantObject) { 250 t.Errorf("compare failed,\nhave:\n%+v\nwant:\n%+v\n", haveObject, wantObject) 251 return 252 } 253 }