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  }