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 }