1
1
using System ;
2
+ using System . Collections . Generic ;
2
3
using System . Net ;
3
4
using System . Net . Http ;
4
5
using System . Threading ;
5
6
using System . Threading . Tasks ;
6
7
using Flurl . Http ;
8
+ using Flurl . Http . Configuration ;
7
9
using NUnit . Framework ;
8
10
using WeChatBot . Net . Enums ;
9
11
using WeChatBot . Net . Extensions ;
@@ -13,13 +15,6 @@ namespace WeChatBot.Net.Tests
13
15
[ TestFixture ( ) ]
14
16
public class ClientTests
15
17
{
16
- [ Test ( ) ]
17
- public async Task GetUuidTest_Normal_ShouldReturnTrue ( )
18
- {
19
- var q = await new Client ( ) . GetUuid ( ) ;
20
- Assert . IsTrue ( q . Item1 ) ;
21
- }
22
-
23
18
[ Test ( ) ]
24
19
[ Ignore ( "manual run this for debug" ) ]
25
20
public async Task RunTest_Normal_ShouldOuputQRCode ( )
@@ -34,12 +29,11 @@ public async Task RunTest_Normal_ShouldOuputQRCode()
34
29
Assert . Pass ( ) ;
35
30
}
36
31
37
- [ Test ]
38
- public async Task LoginTest_Https_ShouldReturn400 ( )
32
+ [ Test ( ) ]
33
+ public async Task GetUuidTest_Normal_ShouldReturnTrue ( )
39
34
{
40
- var url = @"https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?tip=1&uuid=YenIkE0Lsw==&_=1474877000" ;
41
- var q = await url . GetAsync ( ) ;
42
- Assert . That ( q . IsSuccessStatusCode ) ;
35
+ var q = await new Client ( ) . GetUuid ( ) ;
36
+ Assert . IsTrue ( q . Item1 ) ;
43
37
}
44
38
45
39
[ Test ]
@@ -50,33 +44,13 @@ public async Task LoginTest_HttpsWithFlurlClient_ShouldReturn400()
50
44
Assert . That ( q . IsSuccessStatusCode ) ;
51
45
}
52
46
53
- /// <summary>
54
- /// AutoDispose = false fix this problem
55
- /// </summary>
56
- /// <returns></returns>
57
- [ Test ]
58
- public async Task LoginTest_HttpsWithFlurlClientTwice_ShouldReturn400 ( )
59
- {
60
- var url = @"https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?tip=1&uuid=YenIkE0Lsw==&_=1474877000" ;
61
- var flurlClient = new FlurlClient ( ) { AutoDispose = false } ;
62
- {
63
- var q = await url . WithClient ( flurlClient ) . GetAsyncSafe ( ) ;
64
- Assert . That ( q . IsSuccessStatusCode ) ;
65
- await q . Content . ReadAsStringAsync ( ) ;
66
- }
67
- {
68
- var q = await url . WithClient ( flurlClient ) . GetAsyncSafe ( ) ;
69
- Assert . That ( q . IsSuccessStatusCode ) ;
70
- }
71
- }
72
-
73
47
[ Category ( "TestHttpClient" ) ]
74
48
[ Test ]
75
49
public async Task LoginTest_HttpsWithHttpClient_ShouldReturn400 ( )
76
50
{
77
51
using ( var cts = new CancellationTokenSource ( ) )
78
52
{
79
- cts . CancelAfter ( TimeSpan . FromSeconds ( 5 ) ) ;
53
+ cts . CancelAfter ( TimeSpan . FromSeconds ( 3 ) ) ;
80
54
81
55
var url = @"https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?tip=1&uuid=YenIkE0Lsw==&_=1474877000" ;
82
56
@@ -90,53 +64,59 @@ public async Task LoginTest_HttpsWithHttpClient_ShouldReturn400()
90
64
91
65
[ Category ( "TestHttpClient" ) ]
92
66
[ Test ]
93
- public async Task LoginTest_HttpsWithHttpClientTwice_ShouldReturn400 ( )
67
+ public void LoginTest_NewFlurlClientTwice_ShouldReturn400 ( )
94
68
{
95
- using ( var cts = new CancellationTokenSource ( ) )
96
- {
97
- cts . CancelAfter ( TimeSpan . FromSeconds ( 5 ) ) ;
98
-
99
- var url = @"https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?tip=1&uuid=YenIkE0Lsw==&_=1474877000" ; //a new httpclient will fail
100
-
101
- //url = @"https://www.baidu.com"; //uncomment to use this url, r1 r2 r3 both success
102
-
103
- var h = new HttpClientHandler ( )
104
- {
105
- AllowAutoRedirect = true ,
106
- Proxy = new WebProxy ( "http://127.0.0.1:8888" ) ,
107
- UseProxy = true
108
- } ;
109
-
110
- using ( var client = new HttpClient ( h ) )
111
- {
112
- client . DefaultRequestHeaders . Add ( "Cache-Control" , "no-cache" ) ;
113
- client . DefaultRequestHeaders . Add ( "Connection" , "keep-alive" ) ;
114
- client . DefaultRequestHeaders . Add ( "User-Agent" , "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5" ) ;
69
+ Assert . ThrowsAsync < TaskCanceledException > ( async ( ) =>
70
+ {
71
+ using ( var cts = new CancellationTokenSource ( ) )
72
+ {
73
+ cts . CancelAfter ( TimeSpan . FromSeconds ( 3 ) ) ;
74
+
75
+ var url = @"https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?tip=1&uuid=YenIkE0Lsw==&_=1474877000" ;
76
+
77
+ using ( var client = new HttpClient ( ) )
78
+ {
79
+ var q = await client . GetAsync ( url , cts . Token ) ;
80
+ Assert . That ( q . IsSuccessStatusCode ) ;
81
+ }
82
+
83
+ var handler = new HttpClientHandler ( )
84
+ {
85
+ } ;
86
+ using ( var client = new HttpClient ( handler ) )
87
+ {
88
+ var q = await client . GetAsync ( url , cts . Token ) ;
89
+ Assert . That ( q . IsSuccessStatusCode ) ;
90
+ }
91
+ }
92
+ } ) ;
93
+ }
115
94
116
- var q = await client . GetAsync ( url , cts . Token ) ; //first request r1 //success
117
- var q2 = await client . GetAsync ( url , cts . Token ) ; //second request r2 //sucess
95
+ [ Category ( "TestHttpClient" ) ]
96
+ [ Test ]
97
+ public async Task LoginTest_NewFlurlClientTwice2_ShouldReturn400 ( )
98
+ {
99
+ var url = @"https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?tip=1&uuid=YenIkE0Lsw==&_=1474877000" ;
100
+ //ServicePointManager.SetTcpKeepAlive(false, 1,1);
101
+ //System.Net.ServicePointManager.Expect100Continue = false;
102
+ //ServicePoint sp = ServicePointManager.FindServicePoint(new Uri(url));
103
+ //sp.MaxIdleTime = 1;
104
+ //await Task.Delay(TimeSpan.FromMilliseconds(2));
118
105
119
- Assert . That ( q . IsSuccessStatusCode ) ;
120
- Assert . That ( q2 . IsSuccessStatusCode ) ;
121
- }
106
+ //ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
107
+ var client = new HttpClient ( ) ;
122
108
123
- Console . WriteLine ( "fuck httpclient" ) ;
109
+ {
110
+ var q = await client . GetAsync ( url ) ;
111
+ Assert . That ( q . IsSuccessStatusCode ) ;
112
+ }
113
+ Console . WriteLine ( $ "fuck httpclient") ;
124
114
125
- var h2 = new HttpClientHandler ( )
126
- {
127
- AllowAutoRedirect = true ,
128
- Proxy = new WebProxy ( "http://127.0.0.1:8888" ) ,
129
- UseProxy = true
130
- } ;
131
- using ( var client = new HttpClient ( h2 ) )
132
- {
133
- client . DefaultRequestHeaders . Add ( "Cache-Control" , "no-cache" ) ;
134
- client . DefaultRequestHeaders . Add ( "Connection" , "keep-alive" ) ;
135
- client . DefaultRequestHeaders . Add ( "User-Agent" , "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5" ) ;
115
+ {
116
+ client = new HttpClient ( ) ;
136
117
137
- var q = await client . GetAsync ( url , cts . Token ) ; //third request r3 //failed
138
- Assert . That ( q . IsSuccessStatusCode ) ;
139
- }
118
+ var q = await client . GetAsync ( url ) ;
119
+ Assert . That ( q . IsSuccessStatusCode ) ;
140
120
}
141
121
}
142
122
}
0 commit comments