No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

224 líneas
8.8KB

  1. package main
  2. import (
  3. "testing"
  4. )
  5. func TestReadCommonHeader(t *testing.T) {
  6. SetupConfig()
  7. var msg = `<xml><ToUserName><![CDATA[gh_f09231355c68]]></ToUserName>
  8. <FromUserName><![CDATA[oUN420bxqFqlx0ZQHciUOesZO3PE]]></FromUserName>
  9. <CreateTime>1492972518</CreateTime>
  10. <MsgType><![CDATA[event]]></MsgType>
  11. <Event><![CDATA[CLICK]]></Event>
  12. <EventKey><![CDATA[V1001_TODAY_MUSIC]]></EventKey>
  13. </xml>`
  14. h := ReadCommonHeader(msg)
  15. AssertEqual(t, h.ToUserName, "gh_f09231355c68", "ToUserName failed")
  16. AssertEqual(t, h.FromUserName, "oUN420bxqFqlx0ZQHciUOesZO3PE", "FromUserName failed")
  17. AssertEqual(t, h.CreateTime, int64(1492972518), "CreateTime Failed")
  18. AssertEqual(t, h.MsgType, "event", "MsgType failed")
  19. }
  20. func TestTxtMsg(t *testing.T) {
  21. msg := `<xml>
  22. <ToUserName><![CDATA[toUser]]></ToUserName>
  23. <FromUserName><![CDATA[fromUser]]></FromUserName>
  24. <CreateTime>1348831860</CreateTime>
  25. <MsgType><![CDATA[text]]></MsgType>
  26. <Content><![CDATA[this is a test]]></Content>
  27. <MsgId>1234567890123456</MsgId>
  28. </xml>`
  29. h := ReadCommonHeader(msg)
  30. AssertEqual(t, h.MsgType, "text", "Expect text type")
  31. m := ReadTextMsg(msg)
  32. AssertEqual(t, m.Content, "this is a test", "Content failed")
  33. AssertEqual(t, m.MsgId, int64(1234567890123456), "MsgId not match")
  34. }
  35. func TestPicMsg(t *testing.T) {
  36. msg := `<xml>
  37. <ToUserName><![CDATA[toUser]]></ToUserName>
  38. <FromUserName><![CDATA[fromUser]]></FromUserName>
  39. <CreateTime>1348831860</CreateTime>
  40. <MsgType><![CDATA[image]]></MsgType>
  41. <PicUrl><![CDATA[this is a url]]></PicUrl>
  42. <MediaId><![CDATA[media_id]]></MediaId>
  43. <MsgId>1234567890123456</MsgId>
  44. </xml>`
  45. h := ReadCommonHeader(msg)
  46. AssertEqual(t, h.MsgType, "image", "")
  47. m := ReadPicMsg(msg)
  48. AssertEqual(t, m.MediaId, "media_id", "Media id failed")
  49. AssertEqual(t, m.PicUrl, "this is a url", "PicUrl failed")
  50. AssertEqual(t, m.MsgId, int64(1234567890123456), "MsgId not match")
  51. }
  52. func TestVoiceMsg(t *testing.T) {
  53. msg := `<xml>
  54. <ToUserName><![CDATA[toUser]]></ToUserName>
  55. <FromUserName><![CDATA[fromUser]]></FromUserName>
  56. <CreateTime>1357290913</CreateTime>
  57. <MsgType><![CDATA[voice]]></MsgType>
  58. <MediaId><![CDATA[media_id]]></MediaId>
  59. <Format><![CDATA[Format]]></Format>
  60. <Recognition><![CDATA[some result]]></Recognition>
  61. <MsgId>1234567890123456</MsgId>
  62. </xml>`
  63. h := ReadCommonHeader(msg)
  64. AssertEqual(t, h.MsgType, "voice", "Message type should be voice")
  65. m := ReadVoiceMsg(msg)
  66. AssertEqual(t, m.MediaId, "media_id", "Media id failed")
  67. AssertEqual(t, m.Format, "Format", "Format failed")
  68. AssertEqual(t, m.Recognition, "some result", "Recognition failed")
  69. AssertEqual(t, m.MsgId, int64(1234567890123456), "MsgId not match")
  70. }
  71. func TestVideoMsg(t *testing.T) {
  72. msg := `<xml>
  73. <ToUserName><![CDATA[toUser]]></ToUserName>
  74. <FromUserName><![CDATA[fromUser]]></FromUserName>
  75. <CreateTime>1357290913</CreateTime>
  76. <MsgType><![CDATA[video]]></MsgType>
  77. <MediaId><![CDATA[media_id]]></MediaId>
  78. <ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
  79. <MsgId>1234567890123456</MsgId>
  80. </xml>`
  81. h := ReadCommonHeader(msg)
  82. AssertEqual(t, h.MsgType, "video", "Message type should be video")
  83. m := ReadVideoMsg(msg)
  84. AssertEqual(t, m.MediaId, "media_id", "Media id failed")
  85. AssertEqual(t, m.ThumbMediaId, "thumb_media_id", "Format failed")
  86. AssertEqual(t, m.MsgId, int64(1234567890123456), "MsgId not match")
  87. }
  88. func TestShortVideoMsg(t *testing.T) {
  89. msg := `<xml>
  90. <ToUserName><![CDATA[toUser]]></ToUserName>
  91. <FromUserName><![CDATA[fromUser]]></FromUserName>
  92. <CreateTime>1357290913</CreateTime>
  93. <MsgType><![CDATA[shortvideo]]></MsgType>
  94. <MediaId><![CDATA[media_id]]></MediaId>
  95. <ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
  96. <MsgId>1234567890123456</MsgId>
  97. </xml>`
  98. h := ReadCommonHeader(msg)
  99. AssertEqual(t, h.MsgType, "shortvideo", "Message type should be video")
  100. m := ReadShortVideoMsg(msg)
  101. AssertEqual(t, m.MediaId, "media_id", "Media id failed")
  102. AssertEqual(t, m.ThumbMediaId, "thumb_media_id", "thumb_media_id failed")
  103. AssertEqual(t, m.MsgId, int64(1234567890123456), "MsgId not match")
  104. }
  105. func TestLocationMsg(t *testing.T) {
  106. msg := `<xml>
  107. <ToUserName><![CDATA[toUser]]></ToUserName>
  108. <FromUserName><![CDATA[fromUser]]></FromUserName>
  109. <CreateTime>1351776360</CreateTime>
  110. <MsgType><![CDATA[location]]></MsgType>
  111. <Location_X>23.134521</Location_X>
  112. <Location_Y>113.358803</Location_Y>
  113. <Scale>20</Scale>
  114. <Label><![CDATA[Location description]]></Label>
  115. <MsgId>1234567890123456</MsgId>
  116. </xml>`
  117. h := ReadCommonHeader(msg)
  118. AssertEqual(t, h.MsgType, "location", "Message type should be video")
  119. m := ReadLocationMsg(msg)
  120. AssertEqual(t, m.Location_X, (float64(23.134521)), "Location_X failed")
  121. AssertEqual(t, m.Location_Y, (float64(113.358803)), "Location_Y failed")
  122. AssertEqual(t, m.Scale, int(20), "Scale failed")
  123. AssertEqual(t, m.Label, "Location description", "Label failed")
  124. AssertEqual(t, m.MsgId, int64(1234567890123456), "MsgId not match")
  125. }
  126. func TestLinkMsg(t *testing.T) {
  127. msg := `<xml>
  128. <ToUserName><![CDATA[toUser]]></ToUserName>
  129. <FromUserName><![CDATA[fromUser]]></FromUserName>
  130. <CreateTime>1351776360</CreateTime>
  131. <MsgType><![CDATA[link]]></MsgType>
  132. <Title><![CDATA[somelinktitle]]></Title>
  133. <Description><![CDATA[somelinktitleDescription]]></Description>
  134. <Url><![CDATA[url]]></Url>
  135. <MsgId>1234567890123456</MsgId>
  136. </xml>`
  137. h := ReadCommonHeader(msg)
  138. AssertEqual(t, h.MsgType, "link", "Message type should be link")
  139. m := ReadLinkMsg(msg)
  140. AssertEqual(t, m.Title, "somelinktitle", "Title failed")
  141. AssertEqual(t, m.Description, "somelinktitleDescription", "Description failed")
  142. AssertEqual(t, m.Url, "url", "Url failed")
  143. AssertEqual(t, m.MsgId, int64(1234567890123456), "MsgId not match")
  144. }
  145. func TestReadEncryptMsg(t *testing.T) {
  146. msg := `<xml>
  147. <ToUserName><![CDATA[gh_f09231355c68]]></ToUserName>
  148. <Encrypt><![CDATA[Dv3epMMhmmGU1o6lg71IfbpRrOYX1S8oZX3nwW0uBAHHMKx62T4KniS4efuf8fNHWf6gsF/YGaDraF6HhGOdKp8vbzluiIEsCnIveKN1pO+IUDOBBxzPAzQSFSYJ3OwVXWmBdBcC1S5guQrOxLysH+6UIWSor9cEef+94UAKTNw/MLB0zPfqK5TVoN1A0yobmP9OU8wtFJP0L1aKySPFGGbqBMfJkStRTrYLjIQfZ7pAIisB/g3c87w26r7LUz9hVh4ey3/T6cjQ8vKvgNKL3j8y4IwUdmnmTPrrdOsyA1pz69977xKHFtIptZYHKGD9dTW6PyPcKKTP6iOod6Agb8TI+is80auqHkjvUyvT/xPG8fxak/wI9BKzKndAnwxlcDG/8WElkHVl0TwxpsCb48ZxLEf4GFKaYaliC9xBVweKLNnqdbBmzwfe7GBNWC61h7KQYqwtZqMkZs3BBsStcQ==]]></Encrypt>
  149. </xml>`
  150. m := ReadEncryptedMsg(msg)
  151. AssertEqual(t, m.ToUserName, "gh_f09231355c68", "ToUserName failed")
  152. AssertEqual(t, m.Encrypt, "Dv3epMMhmmGU1o6lg71IfbpRrOYX1S8oZX3nwW0uBAHHMKx62T4KniS4efuf8fNHWf6gsF/YGaDraF6HhGOdKp8vbzluiIEsCnIveKN1pO+IUDOBBxzPAzQSFSYJ3OwVXWmBdBcC1S5guQrOxLysH+6UIWSor9cEef+94UAKTNw/MLB0zPfqK5TVoN1A0yobmP9OU8wtFJP0L1aKySPFGGbqBMfJkStRTrYLjIQfZ7pAIisB/g3c87w26r7LUz9hVh4ey3/T6cjQ8vKvgNKL3j8y4IwUdmnmTPrrdOsyA1pz69977xKHFtIptZYHKGD9dTW6PyPcKKTP6iOod6Agb8TI+is80auqHkjvUyvT/xPG8fxak/wI9BKzKndAnwxlcDG/8WElkHVl0TwxpsCb48ZxLEf4GFKaYaliC9xBVweKLNnqdbBmzwfe7GBNWC61h7KQYqwtZqMkZs3BBsStcQ==", "ToUserName failed")
  153. }
  154. func TestReadEventMsg(t *testing.T) {
  155. msg := `<xml><ToUserName><![CDATA[gh_f09231355c68]]></ToUserName>
  156. <FromUserName><![CDATA[oUN420bxqFqlx0ZQHciUOesZO3PE]]></FromUserName>
  157. <CreateTime>1493903506</CreateTime>
  158. <MsgType><![CDATA[event]]></MsgType>
  159. <Event><![CDATA[CLICK]]></Event>
  160. <EventKey><![CDATA[MEMBER_SEARCH]]></EventKey>
  161. </xml>`
  162. m := ReadEventMsg(msg)
  163. AssertEqual(t, m.Event, "CLICK", "Expect Click event")
  164. AssertEqual(t, m.EventKey, "MEMBER_SEARCH", "Expect MEMBER_SEARCH")
  165. }
  166. func TestAcceptLocationInfo(t *testing.T) {
  167. // POST /api?signature=1a9991fc0d1916495e26e07dca7d2c305c529b0d&timestamp=1493303819&nonce=1367712073&openid=oUN420bxqFqlx0ZQHciUOesZO3PE&encrypt_type=aes&msg_signature=46331890d4c95a017a014a009ccc7f37228665db HTTP/1.1
  168. // Host: wechat.hitxy.org.au
  169. // Accept: */*
  170. // Cache-Control: no-cache
  171. // Connection: Keep-Alive
  172. // Content-Length: 618
  173. // Content-Type: text/xml
  174. // Pragma: no-cache
  175. // User-Agent: Mozilla/4.0
  176. // X-Forwarded-For: 103.7.30.105
  177. // X-Forwarded-Host: wechat.hitxy.org.au
  178. // X-Forwarded-Server: wechat.hitxy.org.au
  179. // <xml>
  180. // <ToUserName><![CDATA[gh_f09231355c68]]></ToUserName>
  181. // <Encrypt><![CDATA[OyVaYtbrg9fVyLiNJlL18YFP7C36y9kGL3SZDz5ZpWcelnIfUQwUhXXfl2yvbRlaCRW9q9hqPZ0W9ha2p4KzmWikw/vcorrTagz5vGpr980dEqDb0whsybk5R7jZ7hj7+QfZCEyDxYy/O/QsYFYesq6SsDjUQ7JWoxmOZz6g2Sv2WEJ6cXo2iL1fGswc0jYlSynsp3lnVFeVcT4M0a2IEXAxEEuQ7vB9EMAkRQtl5spMDrrH/xXya6O0N9ux3jw+CTl7Oy4TCnJNRxOCq+6SJR4P3PWgWMKcvvgWcTeVGCvduPHDpYbJ+dpfqlxa3WNASrXpSYgQu8edpuIBIXx0b51jBQF1tcekA+z5nCUS53/9CHVo1a1YXLco5bzdMMh7QnafQOtxBbhz1YASj3XpJpyW+qfXc/QoEsZAhVdZVKBNVRz7yJKarkcQopJhevMzFGP0agjkYA/wQ8MAXD7JJ3r8ecOEhebOhfpt+fQ21yYS7YyFyQeUxEhhsSG8O9Ve]]></Encrypt>
  182. // </xml>
  183. // Decript as:
  184. // <xml><ToUserName><![CDATA[gh_f09231355c68]]></ToUserName>
  185. // <FromUserName><![CDATA[oUN420bxqFqlx0ZQHciUOesZO3PE]]></FromUserName>
  186. // <CreateTime>1493304047</CreateTime>
  187. // <MsgType><![CDATA[event]]></MsgType>
  188. // <Event><![CDATA[LOCATION]]></Event>
  189. // <Latitude>-33.764935</Latitude>
  190. // <Longitude>150.960327</Longitude>
  191. // <Precision>110.000000</Precision>
  192. // </xml>
  193. }