github.com/chanxuehong/wechat@v0.0.0-20230222024006-36f0325263cd/mp/message/callback/request/event_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 TestUnsubscribeEvent(t *testing.T) {
    12  	msg := []byte(`<xml><ToUserName><![CDATA[gh_21ee2dc92d7d]]></ToUserName>
    13  <FromUserName><![CDATA[os-IKuHd9pJ6xsn4mS7GyL4HxqI4]]></FromUserName>
    14  <CreateTime>1457752129</CreateTime>
    15  <MsgType><![CDATA[event]]></MsgType>
    16  <Event><![CDATA[unsubscribe]]></Event>
    17  <EventKey><![CDATA[]]></EventKey>
    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 = GetUnsubscribeEvent(mixedMsg)
    26  
    27  	var wantObject = &UnsubscribeEvent{
    28  		MsgHeader: core.MsgHeader{
    29  			ToUserName:   "gh_21ee2dc92d7d",
    30  			FromUserName: "os-IKuHd9pJ6xsn4mS7GyL4HxqI4",
    31  			CreateTime:   1457752129,
    32  			MsgType:      "event",
    33  		},
    34  		EventType: EventTypeUnsubscribe,
    35  		EventKey:  "",
    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 TestSubscribeEvent(t *testing.T) {
    44  	msg := []byte(`<xml><ToUserName><![CDATA[gh_21ee2dc92d7d]]></ToUserName>
    45  <FromUserName><![CDATA[os-IKuHd9pJ6xsn4mS7GyL4HxqI4]]></FromUserName>
    46  <CreateTime>1457752147</CreateTime>
    47  <MsgType><![CDATA[event]]></MsgType>
    48  <Event><![CDATA[subscribe]]></Event>
    49  <EventKey><![CDATA[]]></EventKey>
    50  </xml>`)
    51  
    52  	var mixedMsg = &core.MixedMsg{}
    53  	if err := xml.Unmarshal(msg, mixedMsg); err != nil {
    54  		t.Errorf("unmarshal failed: %s\n", err.Error())
    55  		return
    56  	}
    57  	var haveObject = GetSubscribeEvent(mixedMsg)
    58  
    59  	var wantObject = &SubscribeEvent{
    60  		MsgHeader: core.MsgHeader{
    61  			ToUserName:   "gh_21ee2dc92d7d",
    62  			FromUserName: "os-IKuHd9pJ6xsn4mS7GyL4HxqI4",
    63  			CreateTime:   1457752147,
    64  			MsgType:      "event",
    65  		},
    66  		EventType: EventTypeSubscribe,
    67  		EventKey:  "",
    68  		Ticket:    "",
    69  	}
    70  	if !reflect.DeepEqual(haveObject, wantObject) {
    71  		t.Errorf("compare failed,\nhave:\n%+v\nwant:\n%+v\n", haveObject, wantObject)
    72  		return
    73  	}
    74  
    75  	msg = []byte(`<xml><ToUserName><![CDATA[gh_21ee2dc92d7d]]></ToUserName>
    76  <FromUserName><![CDATA[os-IKuHd9pJ6xsn4mS7GyL4HxqI4]]></FromUserName>
    77  <CreateTime>1457752430</CreateTime>
    78  <MsgType><![CDATA[event]]></MsgType>
    79  <Event><![CDATA[subscribe]]></Event>
    80  <EventKey><![CDATA[qrscene_1000000]]></EventKey>
    81  <Ticket><![CDATA[gQHr8ToAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xLzMwT19GN2ZsSkkxZFBGTkpkMjEzAAIEIYnjVgMECAcAAA==]]></Ticket>
    82  </xml>`)
    83  
    84  	mixedMsg = &core.MixedMsg{}
    85  	if err := xml.Unmarshal(msg, mixedMsg); err != nil {
    86  		t.Errorf("unmarshal failed: %s\n", err.Error())
    87  		return
    88  	}
    89  	haveObject = GetSubscribeEvent(mixedMsg)
    90  
    91  	wantObject = &SubscribeEvent{
    92  		MsgHeader: core.MsgHeader{
    93  			ToUserName:   "gh_21ee2dc92d7d",
    94  			FromUserName: "os-IKuHd9pJ6xsn4mS7GyL4HxqI4",
    95  			CreateTime:   1457752430,
    96  			MsgType:      "event",
    97  		},
    98  		EventType: EventTypeSubscribe,
    99  		EventKey:  "qrscene_1000000",
   100  		Ticket:    "gQHr8ToAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xLzMwT19GN2ZsSkkxZFBGTkpkMjEzAAIEIYnjVgMECAcAAA==",
   101  	}
   102  	if !reflect.DeepEqual(haveObject, wantObject) {
   103  		t.Errorf("compare failed,\nhave:\n%+v\nwant:\n%+v\n", haveObject, wantObject)
   104  		return
   105  	}
   106  }
   107  
   108  func TestScanEvent(t *testing.T) {
   109  	msg := []byte(`<xml><ToUserName><![CDATA[gh_21ee2dc92d7d]]></ToUserName>
   110  <FromUserName><![CDATA[os-IKuHd9pJ6xsn4mS7GyL4HxqI4]]></FromUserName>
   111  <CreateTime>1457752395</CreateTime>
   112  <MsgType><![CDATA[event]]></MsgType>
   113  <Event><![CDATA[SCAN]]></Event>
   114  <EventKey><![CDATA[1000000]]></EventKey>
   115  <Ticket><![CDATA[gQHr8ToAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xLzMwT19GN2ZsSkkxZFBGTkpkMjEzAAIEIYnjVgMECAcAAA==]]></Ticket>
   116  </xml>`)
   117  
   118  	var mixedMsg = &core.MixedMsg{}
   119  	if err := xml.Unmarshal(msg, mixedMsg); err != nil {
   120  		t.Errorf("unmarshal failed: %s\n", err.Error())
   121  		return
   122  	}
   123  	var haveObject = GetScanEvent(mixedMsg)
   124  
   125  	var wantObject = &ScanEvent{
   126  		MsgHeader: core.MsgHeader{
   127  			ToUserName:   "gh_21ee2dc92d7d",
   128  			FromUserName: "os-IKuHd9pJ6xsn4mS7GyL4HxqI4",
   129  			CreateTime:   1457752395,
   130  			MsgType:      "event",
   131  		},
   132  		EventType: EventTypeScan,
   133  		EventKey:  "1000000",
   134  		Ticket:    "gQHr8ToAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xLzMwT19GN2ZsSkkxZFBGTkpkMjEzAAIEIYnjVgMECAcAAA==",
   135  	}
   136  	if !reflect.DeepEqual(haveObject, wantObject) {
   137  		t.Errorf("compare failed,\nhave:\n%+v\nwant:\n%+v\n", haveObject, wantObject)
   138  		return
   139  	}
   140  }
   141  
   142  func TestLocationEvent(t *testing.T) {
   143  	msg := []byte(`<xml><ToUserName><![CDATA[gh_21ee2dc92d7d]]></ToUserName>
   144  <FromUserName><![CDATA[os-IKuHd9pJ6xsn4mS7GyL4HxqI4]]></FromUserName>
   145  <CreateTime>1457752531</CreateTime>
   146  <MsgType><![CDATA[event]]></MsgType>
   147  <Event><![CDATA[LOCATION]]></Event>
   148  <Latitude>30.443105</Latitude>
   149  <Longitude>116.654735</Longitude>
   150  <Precision>2703.000000</Precision>
   151  </xml>`)
   152  
   153  	var mixedMsg = &core.MixedMsg{}
   154  	if err := xml.Unmarshal(msg, mixedMsg); err != nil {
   155  		t.Errorf("unmarshal failed: %s\n", err.Error())
   156  		return
   157  	}
   158  	var haveObject = GetLocationEvent(mixedMsg)
   159  
   160  	var wantObject = &LocationEvent{
   161  		MsgHeader: core.MsgHeader{
   162  			ToUserName:   "gh_21ee2dc92d7d",
   163  			FromUserName: "os-IKuHd9pJ6xsn4mS7GyL4HxqI4",
   164  			CreateTime:   1457752531,
   165  			MsgType:      "event",
   166  		},
   167  		EventType: EventTypeLocation,
   168  		Latitude:  30.443105,
   169  		Longitude: 116.654735,
   170  		Precision: 2703.000000,
   171  	}
   172  	if !reflect.DeepEqual(haveObject, wantObject) {
   173  		t.Errorf("compare failed,\nhave:\n%+v\nwant:\n%+v\n", haveObject, wantObject)
   174  		return
   175  	}
   176  }