Skip to content

Commit 7f6b4a3

Browse files
committed
add some unit test cases
1 parent 88ef0c7 commit 7f6b4a3

File tree

6 files changed

+324
-167
lines changed

6 files changed

+324
-167
lines changed

src/SocketIOClient/SocketIO.cs

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,9 @@ private Uri ServerUri
102102

103103
public IJsonSerializer JsonSerializer { get; set; }
104104

105-
public HttpClient HttpClient { get; set; }
105+
public Func<IHttpClient> HttpClientProvider { get; set; }
106106

107107
public Func<IClientWebSocket> ClientWebSocketProvider { get; set; }
108-
public Func<IHttpClient> HttpClientAdapterProvider { get; set; }
109108

110109
List<IDisposable> _resources = new List<IDisposable>();
111110

@@ -170,9 +169,8 @@ private void Initialize()
170169

171170
JsonSerializer = new SystemTextJsonSerializer();
172171

173-
HttpClient = new HttpClient();
172+
HttpClientProvider = () => new DefaultHttpClient();
174173
ClientWebSocketProvider = () => new DefaultClientWebSocket();
175-
HttpClientAdapterProvider = () => new DefaultHttpClient();
176174
_expectedExceptions = new List<Type>
177175
{
178176
typeof(TimeoutException),
@@ -183,6 +181,17 @@ private void Initialize()
183181
};
184182
}
185183

184+
private IHttpClient GetHttpClient()
185+
{
186+
var http = HttpClientProvider();
187+
if (http is null)
188+
{
189+
throw new ArgumentNullException(nameof(HttpClientProvider), $"{HttpClientProvider} returns a null");
190+
}
191+
192+
return http;
193+
}
194+
186195
private async Task InitTransportAsync()
187196
{
188197
Options.Transport = await GetProtocolAsync();
@@ -195,13 +204,7 @@ private async Task InitTransportAsync()
195204
};
196205
if (Options.Transport == TransportProtocol.Polling)
197206
{
198-
var adapter = HttpClientAdapterProvider();
199-
if (adapter is null)
200-
{
201-
throw new ArgumentNullException(nameof(HttpClientAdapterProvider), $"{HttpClientAdapterProvider} returns a null");
202-
}
203-
_resources.Add(adapter);
204-
var handler = HttpPollingHandler.CreateHandler(transportOptions.EIO, adapter);
207+
var handler = HttpPollingHandler.CreateHandler(transportOptions.EIO, GetHttpClient());
205208
_transport = new HttpTransport(transportOptions, handler);
206209
}
207210
else
@@ -342,10 +345,13 @@ private async Task<TransportProtocol> GetProtocolAsync()
342345
Uri uri = UriConverter.GetServerUri(false, ServerUri, Options.EIO, Options.Path, Options.Query);
343346
try
344347
{
345-
string text = await HttpClient.GetStringAsync(uri);
346-
if (text.Contains("websocket"))
348+
using (var http = GetHttpClient())
347349
{
348-
return TransportProtocol.WebSocket;
350+
string text = await http.GetStringAsync(uri);
351+
if (text.Contains("websocket"))
352+
{
353+
return TransportProtocol.WebSocket;
354+
}
349355
}
350356
}
351357
catch (Exception e)
@@ -798,7 +804,6 @@ public void AddExpectedException(Type type)
798804

799805
public void Dispose()
800806
{
801-
HttpClient.Dispose();
802807
_transport.TryDispose();
803808
_ackHandlers.Clear();
804809
_onAnyHandlers.Clear();

src/SocketIOClient/Transport/Http/DefaultHttpClient.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
using System.Collections.Generic;
1+
using System;
22
using System.Net;
33
using System.Net.Http;
44
using System.Threading;
55
using System.Threading.Tasks;
6+
using System.Collections.Generic;
67

78
namespace SocketIOClient.Transport.Http
89
{
@@ -16,7 +17,7 @@ public DefaultHttpClient()
1617

1718
readonly HttpClientHandler _handler;
1819
private readonly HttpClient _httpClient;
19-
20+
2021
private static readonly HashSet<string> allowedHeaders = new HashSet<string>
2122
{
2223
"user-agent",
@@ -50,6 +51,11 @@ public Task<HttpResponseMessage> PostAsync(string requestUri, HttpContent conten
5051
return _httpClient.PostAsync(requestUri, content, cancellationToken);
5152
}
5253

54+
public Task<string> GetStringAsync(Uri requestUri)
55+
{
56+
return _httpClient.GetStringAsync(requestUri);
57+
}
58+
5359
public void Dispose()
5460
{
5561
_httpClient.Dispose();

src/SocketIOClient/Transport/Http/IHttpClient.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ public interface IHttpClient : IDisposable
1212
void SetProxy(IWebProxy proxy);
1313
Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken);
1414
Task<HttpResponseMessage> PostAsync(string requestUri, HttpContent content, CancellationToken cancellationToken);
15+
Task<string> GetStringAsync(Uri requestUri);
1516
}
1617
}

0 commit comments

Comments
 (0)