5
5
import me .chanjar .weixin .common .session .WxSessionManager ;
6
6
import me .chanjar .weixin .mp .bean .message .WxMpXmlMessage ;
7
7
import me .chanjar .weixin .mp .bean .message .WxMpXmlOutMessage ;
8
- import org .testng .Assert ;
9
- import org .testng .annotations .DataProvider ;
10
- import org .testng .annotations .Test ;
8
+ import org .testng .*;
9
+ import org .testng .annotations .*;
11
10
12
11
import java .util .Map ;
13
12
14
13
/**
15
14
* 测试消息路由器
16
- * @author chanjarster
17
15
*
16
+ * @author chanjarster
18
17
*/
19
18
@ Test
20
19
public class WxMpMessageRouterTest {
@@ -23,35 +22,35 @@ public class WxMpMessageRouterTest {
23
22
public void prepare (boolean async , StringBuffer sb , WxMpMessageRouter router ) {
24
23
router
25
24
.rule ()
26
- .async (async )
27
- .msgType (WxConsts .XML_MSG_TEXT ).event (WxConsts .EVT_CLICK ).eventKey ("KEY_1" ).content ("CONTENT_1" )
28
- .handler (new WxEchoMpMessageHandler (sb , "COMBINE_4" ))
25
+ .async (async )
26
+ .msgType (WxConsts .XML_MSG_TEXT ).event (WxConsts .EVT_CLICK ).eventKey ("KEY_1" ).content ("CONTENT_1" )
27
+ .handler (new WxEchoMpMessageHandler (sb , "COMBINE_4" ))
29
28
.end ()
30
29
.rule ()
31
- .async (async )
32
- .msgType (WxConsts .XML_MSG_TEXT ).event (WxConsts .EVT_CLICK ).eventKey ("KEY_1" )
33
- .handler (new WxEchoMpMessageHandler (sb , "COMBINE_3" ))
30
+ .async (async )
31
+ .msgType (WxConsts .XML_MSG_TEXT ).event (WxConsts .EVT_CLICK ).eventKey ("KEY_1" )
32
+ .handler (new WxEchoMpMessageHandler (sb , "COMBINE_3" ))
34
33
.end ()
35
34
.rule ()
36
- .async (async )
37
- .msgType (WxConsts .XML_MSG_TEXT ).event (WxConsts .EVT_CLICK )
38
- .handler (new WxEchoMpMessageHandler (sb , "COMBINE_2" ))
35
+ .async (async )
36
+ .msgType (WxConsts .XML_MSG_TEXT ).event (WxConsts .EVT_CLICK )
37
+ .handler (new WxEchoMpMessageHandler (sb , "COMBINE_2" ))
39
38
.end ()
40
39
.rule ().async (async ).msgType (WxConsts .XML_MSG_TEXT ).handler (new WxEchoMpMessageHandler (sb , WxConsts .XML_MSG_TEXT )).end ()
41
40
.rule ().async (async ).event (WxConsts .EVT_CLICK ).handler (new WxEchoMpMessageHandler (sb , WxConsts .EVT_CLICK )).end ()
42
41
.rule ().async (async ).eventKey ("KEY_1" ).handler (new WxEchoMpMessageHandler (sb , "KEY_1" )).end ()
43
42
.rule ().async (async ).content ("CONTENT_1" ).handler (new WxEchoMpMessageHandler (sb , "CONTENT_1" )).end ()
44
43
.rule ().async (async ).rContent (".*bc.*" ).handler (new WxEchoMpMessageHandler (sb , "abcd" )).end ()
45
44
.rule ().async (async ).matcher (new WxMpMessageMatcher () {
46
- @ Override
47
- public boolean match (WxMpXmlMessage message ) {
48
- return "strangeformat" .equals (message .getFormat ());
49
- }
50
- }).handler (new WxEchoMpMessageHandler (sb , "matcher" )).end ()
45
+ @ Override
46
+ public boolean match (WxMpXmlMessage message ) {
47
+ return "strangeformat" .equals (message .getFormat ());
48
+ }
49
+ }).handler (new WxEchoMpMessageHandler (sb , "matcher" )).end ()
51
50
.rule ().async (async ).handler (new WxEchoMpMessageHandler (sb , "ALL" )).end ();
52
51
}
53
52
54
- @ Test (dataProvider = "messages-1" )
53
+ @ Test (dataProvider = "messages-1" )
55
54
public void testSync (WxMpXmlMessage message , String expected ) {
56
55
StringBuffer sb = new StringBuffer ();
57
56
WxMpMessageRouter router = new WxMpMessageRouter (null );
@@ -60,11 +59,11 @@ public void testSync(WxMpXmlMessage message, String expected) {
60
59
Assert .assertEquals (sb .toString (), expected );
61
60
}
62
61
63
- @ Test (dataProvider = "messages-1" )
62
+ @ Test (dataProvider = "messages-1" )
64
63
public void testAsync (WxMpXmlMessage message , String expected ) throws InterruptedException {
65
64
StringBuffer sb = new StringBuffer ();
66
65
WxMpMessageRouter router = new WxMpMessageRouter (null );
67
- prepare (true , sb , router );
66
+ prepare (true , sb , router );
68
67
router .route (message );
69
68
Thread .sleep (500l );
70
69
Assert .assertEquals (sb .toString (), expected );
@@ -75,7 +74,7 @@ public void testConcurrency() throws InterruptedException {
75
74
router .rule ().handler (new WxMpMessageHandler () {
76
75
@ Override
77
76
public WxMpXmlOutMessage handle (WxMpXmlMessage wxMessage , Map <String , Object > context , WxMpService wxMpService ,
78
- WxSessionManager sessionManager ) {
77
+ WxSessionManager sessionManager ) {
79
78
return null ;
80
79
}
81
80
}).end ();
@@ -97,7 +96,8 @@ public void run() {
97
96
98
97
Thread .sleep (1000l * 2 );
99
98
}
100
- @ DataProvider (name ="messages-1" )
99
+
100
+ @ DataProvider (name = "messages-1" )
101
101
public Object [][] messages2 () {
102
102
WxMpXmlMessage message1 = new WxMpXmlMessage ();
103
103
message1 .setMsgType (WxConsts .XML_MSG_TEXT );
@@ -135,40 +135,21 @@ public Object[][] messages2() {
135
135
c4 .setEventKey ("KEY_1" );
136
136
c4 .setContent ("CONTENT_1" );
137
137
138
- return new Object [][] {
139
- new Object [] { message1 , WxConsts .XML_MSG_TEXT + "," },
140
- new Object [] { message2 , WxConsts .EVT_CLICK + "," },
141
- new Object [] { message3 , "KEY_1," },
142
- new Object [] { message4 , "CONTENT_1," },
143
- new Object [] { message5 , "ALL," },
144
- new Object [] { message6 , "abcd," },
145
- new Object [] { message7 , "matcher," },
146
- new Object [] { c2 , "COMBINE_2," },
147
- new Object [] { c3 , "COMBINE_3," },
148
- new Object [] { c4 , "COMBINE_4," }
138
+ return new Object [][]{
139
+ new Object []{ message1 , WxConsts .XML_MSG_TEXT + "," },
140
+ new Object []{ message2 , WxConsts .EVT_CLICK + "," },
141
+ new Object []{ message3 , "KEY_1," },
142
+ new Object []{ message4 , "CONTENT_1," },
143
+ new Object []{ message5 , "ALL," },
144
+ new Object []{ message6 , "abcd," },
145
+ new Object []{ message7 , "matcher," },
146
+ new Object []{ c2 , "COMBINE_2," },
147
+ new Object []{ c3 , "COMBINE_3," },
148
+ new Object []{ c4 , "COMBINE_4," }
149
149
};
150
150
151
151
}
152
152
153
- public static class WxEchoMpMessageHandler implements WxMpMessageHandler {
154
-
155
- private StringBuffer sb ;
156
- private String echoStr ;
157
-
158
- public WxEchoMpMessageHandler (StringBuffer sb , String echoStr ) {
159
- this .sb = sb ;
160
- this .echoStr = echoStr ;
161
- }
162
-
163
- @ Override
164
- public WxMpXmlOutMessage handle (WxMpXmlMessage wxMessage , Map <String , Object > context , WxMpService wxMpService ,
165
- WxSessionManager sessionManager ) {
166
- this .sb .append (this .echoStr ).append (',' );
167
- return null ;
168
- }
169
-
170
- }
171
-
172
153
@ DataProvider
173
154
public Object [][] standardSessionManager () {
174
155
@@ -178,8 +159,8 @@ public Object[][] standardSessionManager() {
178
159
ism .setProcessExpiresFrequency (1 );
179
160
ism .setBackgroundProcessorDelay (1 );
180
161
181
- return new Object [][] {
182
- new Object [] { ism }
162
+ return new Object [][]{
163
+ new Object []{ ism }
183
164
};
184
165
185
166
}
@@ -191,8 +172,8 @@ public void testSessionClean1(StandardSessionManager ism) throws InterruptedExce
191
172
final WxMpMessageRouter router = new WxMpMessageRouter (null );
192
173
router .setSessionManager (ism );
193
174
router
194
- .rule ().async (false ).handler (new WxSessionMessageHandler ()).next ()
195
- .rule ().async (false ).handler (new WxSessionMessageHandler ()).end ();
175
+ .rule ().async (false ).handler (new WxSessionMessageHandler ()).next ()
176
+ .rule ().async (false ).handler (new WxSessionMessageHandler ()).end ();
196
177
197
178
WxMpXmlMessage msg = new WxMpXmlMessage ();
198
179
msg .setFromUser ("abc" );
@@ -211,8 +192,8 @@ public void testSessionClean2(StandardSessionManager ism) throws InterruptedExce
211
192
final WxMpMessageRouter router = new WxMpMessageRouter (null );
212
193
router .setSessionManager (ism );
213
194
router
214
- .rule ().async (false ).handler (new WxSessionMessageHandler ()).next ()
215
- .rule ().async (true ).handler (new WxSessionMessageHandler ()).end ();
195
+ .rule ().async (false ).handler (new WxSessionMessageHandler ()).next ()
196
+ .rule ().async (true ).handler (new WxSessionMessageHandler ()).end ();
216
197
217
198
WxMpXmlMessage msg = new WxMpXmlMessage ();
218
199
msg .setFromUser ("abc" );
@@ -225,8 +206,8 @@ public void testSessionClean2(StandardSessionManager ism) throws InterruptedExce
225
206
final WxMpMessageRouter router = new WxMpMessageRouter (null );
226
207
router .setSessionManager (ism );
227
208
router
228
- .rule ().async (true ).handler (new WxSessionMessageHandler ()).next ()
229
- .rule ().async (false ).handler (new WxSessionMessageHandler ()).end ();
209
+ .rule ().async (true ).handler (new WxSessionMessageHandler ()).next ()
210
+ .rule ().async (false ).handler (new WxSessionMessageHandler ()).end ();
230
211
231
212
WxMpXmlMessage msg = new WxMpXmlMessage ();
232
213
msg .setFromUser ("abc" );
@@ -245,8 +226,8 @@ public void testSessionClean3(StandardSessionManager ism) throws InterruptedExce
245
226
final WxMpMessageRouter router = new WxMpMessageRouter (null );
246
227
router .setSessionManager (ism );
247
228
router
248
- .rule ().async (true ).handler (new WxSessionMessageHandler ()).next ()
249
- .rule ().async (true ).handler (new WxSessionMessageHandler ()).end ();
229
+ .rule ().async (true ).handler (new WxSessionMessageHandler ()).next ()
230
+ .rule ().async (true ).handler (new WxSessionMessageHandler ()).end ();
250
231
251
232
WxMpXmlMessage msg = new WxMpXmlMessage ();
252
233
msg .setFromUser ("abc" );
@@ -265,7 +246,7 @@ public void testSessionClean4(StandardSessionManager ism) throws InterruptedExce
265
246
final WxMpMessageRouter router = new WxMpMessageRouter (null );
266
247
router .setSessionManager (ism );
267
248
router
268
- .rule ().async (false ).handler (new WxSessionMessageHandler ()).end ();
249
+ .rule ().async (false ).handler (new WxSessionMessageHandler ()).end ();
269
250
270
251
WxMpXmlMessage msg = new WxMpXmlMessage ();
271
252
msg .setFromUser ("abc" );
@@ -279,7 +260,7 @@ public void testSessionClean4(StandardSessionManager ism) throws InterruptedExce
279
260
final WxMpMessageRouter router = new WxMpMessageRouter (null );
280
261
router .setSessionManager (ism );
281
262
router
282
- .rule ().async (true ).handler (new WxSessionMessageHandler ()).end ();
263
+ .rule ().async (true ).handler (new WxSessionMessageHandler ()).end ();
283
264
284
265
WxMpXmlMessage msg = new WxMpXmlMessage ();
285
266
msg .setFromUser ("abc" );
@@ -290,11 +271,30 @@ public void testSessionClean4(StandardSessionManager ism) throws InterruptedExce
290
271
}
291
272
}
292
273
293
- public static class WxSessionMessageHandler implements WxMpMessageHandler {
274
+ public static class WxEchoMpMessageHandler implements WxMpMessageHandler {
275
+
276
+ private StringBuffer sb ;
277
+ private String echoStr ;
278
+
279
+ public WxEchoMpMessageHandler (StringBuffer sb , String echoStr ) {
280
+ this .sb = sb ;
281
+ this .echoStr = echoStr ;
282
+ }
283
+
284
+ @ Override
285
+ public WxMpXmlOutMessage handle (WxMpXmlMessage wxMessage , Map <String , Object > context , WxMpService wxMpService ,
286
+ WxSessionManager sessionManager ) {
287
+ this .sb .append (this .echoStr ).append (',' );
288
+ return null ;
289
+ }
290
+
291
+ }
292
+
293
+ public static class WxSessionMessageHandler implements WxMpMessageHandler {
294
294
295
295
@ Override
296
296
public WxMpXmlOutMessage handle (WxMpXmlMessage wxMessage , Map <String , Object > context , WxMpService wxMpService ,
297
- WxSessionManager sessionManager ) {
297
+ WxSessionManager sessionManager ) {
298
298
sessionManager .getSession (wxMessage .getFromUser ());
299
299
return null ;
300
300
}
0 commit comments