Skip to content

Commit f06216c

Browse files
authored
chore: Remove redundant null check covered by JsonRequestContent (#40)
1 parent a65e25f commit f06216c

File tree

3 files changed

+36
-8
lines changed

3 files changed

+36
-8
lines changed

src/Docker.DotNet/Endpoints/SwarmOperations.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ async Task<ServiceCreateResponse> ISwarmOperations.CreateServiceAsync(ServiceCre
2222
{
2323
if (parameters == null) throw new ArgumentNullException(nameof(parameters));
2424

25-
var data = new JsonRequestContent<ServiceSpec>(parameters.Service ?? throw new ArgumentNullException(nameof(parameters.Service)), DockerClient.JsonSerializer);
25+
var data = new JsonRequestContent<ServiceSpec>(parameters.Service, DockerClient.JsonSerializer);
2626
return await _client.MakeRequestAsync<ServiceCreateResponse>(new[] { SwarmResponseHandler }, HttpMethod.Post, "services/create", null, data, RegistryAuthHeaders(parameters.RegistryAuth), cancellationToken).ConfigureAwait(false);
2727
}
2828

@@ -33,7 +33,7 @@ async Task<SwarmUnlockResponse> ISwarmOperations.GetSwarmUnlockKeyAsync(Cancella
3333

3434
async Task<string> ISwarmOperations.InitSwarmAsync(SwarmInitParameters parameters, CancellationToken cancellationToken)
3535
{
36-
var data = new JsonRequestContent<SwarmInitParameters>(parameters ?? throw new ArgumentNullException(nameof(parameters)), DockerClient.JsonSerializer);
36+
var data = new JsonRequestContent<SwarmInitParameters>(parameters, DockerClient.JsonSerializer);
3737
return await _client.MakeRequestAsync<string>(
3838
new ApiResponseErrorHandlingDelegate[]
3939
{
@@ -67,7 +67,7 @@ async Task<SwarmInspectResponse> ISwarmOperations.InspectSwarmAsync(Cancellation
6767

6868
async Task ISwarmOperations.JoinSwarmAsync(SwarmJoinParameters parameters, CancellationToken cancellationToken)
6969
{
70-
var data = new JsonRequestContent<SwarmJoinParameters>(parameters ?? throw new ArgumentNullException(nameof(parameters)), DockerClient.JsonSerializer);
70+
var data = new JsonRequestContent<SwarmJoinParameters>(parameters, DockerClient.JsonSerializer);
7171
await _client.MakeRequestAsync(
7272
new ApiResponseErrorHandlingDelegate[]
7373
{
@@ -125,7 +125,7 @@ async Task ISwarmOperations.RemoveServiceAsync(string id, CancellationToken canc
125125

126126
async Task ISwarmOperations.UnlockSwarmAsync(SwarmUnlockParameters parameters, CancellationToken cancellationToken)
127127
{
128-
var body = new JsonRequestContent<SwarmUnlockParameters>(parameters ?? throw new ArgumentNullException(nameof(parameters)), DockerClient.JsonSerializer);
128+
var body = new JsonRequestContent<SwarmUnlockParameters>(parameters, DockerClient.JsonSerializer);
129129
await _client.MakeRequestAsync(new[] { SwarmResponseHandler }, HttpMethod.Post, "swarm/unlock", null, body, cancellationToken).ConfigureAwait(false);
130130
}
131131

@@ -135,7 +135,7 @@ async Task<ServiceUpdateResponse> ISwarmOperations.UpdateServiceAsync(string id,
135135
if (parameters == null) throw new ArgumentNullException(nameof(parameters));
136136

137137
var query = new QueryString<ServiceUpdateParameters>(parameters);
138-
var body = new JsonRequestContent<ServiceSpec>(parameters.Service ?? throw new ArgumentNullException(nameof(parameters.Service)), DockerClient.JsonSerializer);
138+
var body = new JsonRequestContent<ServiceSpec>(parameters.Service, DockerClient.JsonSerializer);
139139
return await _client.MakeRequestAsync<ServiceUpdateResponse>(new[] { SwarmResponseHandler }, HttpMethod.Post, $"services/{id}/update", query, body, RegistryAuthHeaders(parameters.RegistryAuth), cancellationToken).ConfigureAwait(false);
140140
}
141141

@@ -177,7 +177,7 @@ async Task<ServiceUpdateResponse> ISwarmOperations.UpdateServiceAsync(string id,
177177
async Task ISwarmOperations.UpdateSwarmAsync(SwarmUpdateParameters parameters, CancellationToken cancellationToken)
178178
{
179179
var query = new QueryString<SwarmUpdateParameters>(parameters ?? throw new ArgumentNullException(nameof(parameters)));
180-
var body = new JsonRequestContent<Spec>(parameters.Spec ?? throw new ArgumentNullException(nameof(parameters.Spec)), DockerClient.JsonSerializer);
180+
var body = new JsonRequestContent<Spec>(parameters.Spec, DockerClient.JsonSerializer);
181181
await _client.MakeRequestAsync(
182182
new ApiResponseErrorHandlingDelegate[]
183183
{
@@ -236,7 +236,7 @@ async Task ISwarmOperations.UpdateNodeAsync(string id, ulong version, NodeUpdate
236236
{
237237
if (string.IsNullOrEmpty(id)) throw new ArgumentNullException(nameof(id));
238238
var query = new EnumerableQueryString("version", new[] { version.ToString() });
239-
var body = new JsonRequestContent<NodeUpdateParameters>(parameters ?? throw new ArgumentNullException(nameof(parameters)), DockerClient.JsonSerializer);
239+
var body = new JsonRequestContent<NodeUpdateParameters>(parameters, DockerClient.JsonSerializer);
240240
await _client.MakeRequestAsync(new[] { SwarmResponseHandler }, HttpMethod.Post, $"nodes/{id}/update", query, body, cancellationToken);
241241
}
242242
}

src/Docker.DotNet/JsonRequestContent.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
namespace Docker.DotNet;
22

33
internal class JsonRequestContent<T> : IRequestContent
4+
where T : class
45
{
56
private readonly T _value;
67
private readonly JsonSerializer _serializer;
78

89
public JsonRequestContent(T val, JsonSerializer serializer)
910
{
10-
if (EqualityComparer<T>.Default.Equals(val))
11+
if (val == null)
1112
{
1213
throw new ArgumentNullException(nameof(val));
1314
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System.Net.Http;
2+
3+
namespace Docker.DotNet.Tests;
4+
5+
public sealed class JsonRequestContentTests
6+
{
7+
[Fact]
8+
public void Constructor_ThrowsArgumentNullException_WhenValueIsNull()
9+
{
10+
Assert.Throws<ArgumentNullException>(() => new JsonRequestContent<object>(null, JsonSerializer.Instance));
11+
}
12+
13+
[Fact]
14+
public void Constructor_ThrowsArgumentNullException_WhenSerializerIsNull()
15+
{
16+
Assert.Throws<ArgumentNullException>(() => new JsonRequestContent<object>(new(), null));
17+
}
18+
19+
[Fact]
20+
public async Task GetContent_Succeeds_WhenValueAndSerializerAreValid()
21+
{
22+
JsonRequestContent<int[]> content = new([1], JsonSerializer.Instance);
23+
using HttpContent httpContent = content.GetContent();
24+
string jsonString = await httpContent.ReadAsStringAsync();
25+
Assert.Equal("[1]", jsonString);
26+
}
27+
}

0 commit comments

Comments
 (0)