Skip to content

Commit 9918786

Browse files
committed
Fix FxCop violations
1 parent 8cafaa5 commit 9918786

File tree

13 files changed

+272
-228
lines changed

13 files changed

+272
-228
lines changed

CoderPatros.AuthenticatedHttpClient.AuthorizationHeader.Tests/AuthorizationHeaderAuthenticatedHttpClientTests.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,21 @@ public class AuthorizationHeaderAuthenticatedHttpClientTests
1515
[Fact]
1616
public async Task TestRequestAddsAuthenticationHeader()
1717
{
18-
var mockHttp = new MockHttpMessageHandler();
19-
mockHttp
20-
.Expect("https://www.example.com")
21-
.WithHeaders("Authorization", "test-value")
22-
.Respond(HttpStatusCode.OK);
23-
var client = AuthorizationHeaderAuthenticatedHttpClient.GetClient(new AuthorizationHeaderAuthenticatedHttpClientOptions
18+
using (var mockHttp = new MockHttpMessageHandler())
2419
{
25-
Value = "test-value"
26-
}, mockHttp);
20+
mockHttp
21+
.Expect("https://www.example.com")
22+
.WithHeaders("Authorization", "test-value")
23+
.Respond(HttpStatusCode.OK);
24+
var client = AuthorizationHeaderAuthenticatedHttpClient.GetClient(new AuthorizationHeaderAuthenticatedHttpClientOptions
25+
{
26+
Value = "test-value"
27+
}, mockHttp);
2728

28-
await client.GetStringAsync("https://www.example.com");
29+
await client.GetStringAsync(new Uri("https://www.example.com")).ConfigureAwait(false);
2930

30-
mockHttp.VerifyNoOutstandingExpectation();
31+
mockHttp.VerifyNoOutstandingExpectation();
32+
}
3133
}
3234
}
3335
}

CoderPatros.AuthenticatedHttpClient.AuthorizationHeader/AuthorizationHeaderAuthenticatedHttpMessageHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public AuthorizationHeaderAuthenticatedHttpMessageHandler(
2424
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
2525
{
2626
request.Headers.Authorization = _authorizationHeader;
27-
return await base.SendAsync(request, cancellationToken);
27+
return await base.SendAsync(request, cancellationToken).ConfigureAwait(false);
2828
}
2929
}
3030
}

CoderPatros.AuthenticatedHttpClient.AzureAd.Tests/AzureAdAuthenticatedHttpClientTests.cs

Lines changed: 71 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -19,80 +19,94 @@ public class AzureAdAuthenticatedHttpClientTests
1919
[Fact]
2020
public async Task TestRequestHasAuthorizationHeader()
2121
{
22-
var mockHttp = new MockHttpMessageHandler();
23-
mockHttp
24-
.Expect("https://www.example.com")
25-
.WithHeaders("Authorization", "Bearer test-access-token")
26-
.Respond(HttpStatusCode.OK);
27-
var mockMsgHandler = new Mock<AzureAdAuthenticatedHttpMessageHandler>(new AzureAdAuthenticatedHttpClientOptions
22+
using (var mockHttp = new MockHttpMessageHandler())
2823
{
29-
Tenant = "test-tenant",
30-
ClientId = "test-client-id",
31-
AppKey = "test-client-app-key",
32-
ResourceId = "test-resource-id"
33-
}, mockHttp);
34-
mockMsgHandler
35-
.Setup(handler => handler.AcquireAccessTokenAsync())
36-
.Returns(Task.FromResult("test-access-token"));
37-
mockMsgHandler.CallBase = true;
38-
var client = new HttpClient(mockMsgHandler.Object);
24+
mockHttp
25+
.Expect("https://www.example.com")
26+
.WithHeaders("Authorization", "Bearer test-access-token")
27+
.Respond(HttpStatusCode.OK);
28+
var mockMsgHandler = new Mock<AzureAdAuthenticatedHttpMessageHandler>(new AzureAdAuthenticatedHttpClientOptions
29+
{
30+
Tenant = "test-tenant",
31+
ClientId = "test-client-id",
32+
AppKey = "test-client-app-key",
33+
ResourceId = "test-resource-id"
34+
}, mockHttp);
35+
mockMsgHandler
36+
.Setup(handler => handler.AcquireAccessTokenAsync())
37+
.Returns(Task.FromResult("test-access-token"));
38+
mockMsgHandler.CallBase = true;
3939

40-
await client.GetStringAsync("https://www.example.com");
40+
using (var client = new HttpClient(mockMsgHandler.Object))
41+
{
42+
await client.GetStringAsync(new Uri("https://www.example.com")).ConfigureAwait(false);
4143

42-
mockHttp.VerifyNoOutstandingExpectation();
44+
mockHttp.VerifyNoOutstandingExpectation();
45+
}
46+
}
4347
}
4448

4549
[Fact]
4650
public async Task TestRequestRetriesThreeTimesToAcquireAccessToken()
4751
{
48-
var mockHttp = new MockHttpMessageHandler();
49-
mockHttp
50-
.Expect("https://www.example.com")
51-
.WithHeaders("Authorization", "Bearer test-access-token")
52-
.Respond(HttpStatusCode.OK);
53-
var mockMsgHandler = new Mock<AzureAdAuthenticatedHttpMessageHandler>(new AzureAdAuthenticatedHttpClientOptions
52+
using (var mockHttp = new MockHttpMessageHandler())
5453
{
55-
Tenant = "test-tenant",
56-
ClientId = "test-client-id",
57-
AppKey = "test-client-app-key",
58-
ResourceId = "test-resource-id"
59-
}, mockHttp);
60-
mockMsgHandler
61-
.SetupSequence(handler => handler.AcquireAccessTokenAsync())
62-
.Throws(new AdalException("temporarily_unavailable"))
63-
.Throws(new AdalException("temporarily_unavailable"))
64-
.Returns(Task.FromResult("test-access-token"));
65-
mockMsgHandler.CallBase = true;
66-
var client = new HttpClient(mockMsgHandler.Object);
54+
mockHttp
55+
.Expect("https://www.example.com")
56+
.WithHeaders("Authorization", "Bearer test-access-token")
57+
.Respond(HttpStatusCode.OK);
58+
var mockMsgHandler = new Mock<AzureAdAuthenticatedHttpMessageHandler>(new AzureAdAuthenticatedHttpClientOptions
59+
{
60+
Tenant = "test-tenant",
61+
ClientId = "test-client-id",
62+
AppKey = "test-client-app-key",
63+
ResourceId = "test-resource-id"
64+
}, mockHttp);
65+
mockMsgHandler
66+
.SetupSequence(handler => handler.AcquireAccessTokenAsync())
67+
.Throws(new AdalException("temporarily_unavailable"))
68+
.Throws(new AdalException("temporarily_unavailable"))
69+
.Returns(Task.FromResult("test-access-token"));
70+
mockMsgHandler.CallBase = true;
6771

68-
await client.GetStringAsync("https://www.example.com");
72+
using (var client = new HttpClient(mockMsgHandler.Object))
73+
{
74+
await client.GetStringAsync(new Uri("https://www.example.com")).ConfigureAwait(false);
6975

70-
mockHttp.VerifyNoOutstandingExpectation();
71-
}
76+
mockHttp.VerifyNoOutstandingExpectation();
77+
}
78+
}
79+
}
7280

7381
[Fact]
7482
public async Task TestRequestFailsOnRepeatedFailuresToAcquireAccessTokenFailure()
7583
{
76-
var mockHttp = new MockHttpMessageHandler();
77-
mockHttp.Fallback.Respond(req => new HttpResponseMessage(HttpStatusCode.Unauthorized));
78-
var mockMsgHandler = new Mock<AzureAdAuthenticatedHttpMessageHandler>(new AzureAdAuthenticatedHttpClientOptions
84+
using (var mockHttp = new MockHttpMessageHandler())
7985
{
80-
Tenant = "test-tenant",
81-
ClientId = "test-client-id",
82-
AppKey = "test-client-app-key",
83-
ResourceId = "test-resource-id"
84-
}, mockHttp);
85-
mockMsgHandler
86-
.SetupSequence(handler => handler.AcquireAccessTokenAsync())
87-
.Throws(new AdalException("temporarily_unavailable"))
88-
.Throws(new AdalException("temporarily_unavailable"))
89-
.Throws(new AdalException("temporarily_unavailable"));
90-
mockMsgHandler.CallBase = true;
91-
var client = new HttpClient(mockMsgHandler.Object);
86+
mockHttp.Fallback.Respond(req => new HttpResponseMessage(HttpStatusCode.Unauthorized));
87+
var mockMsgHandler = new Mock<AzureAdAuthenticatedHttpMessageHandler>(new AzureAdAuthenticatedHttpClientOptions
88+
{
89+
Tenant = "test-tenant",
90+
ClientId = "test-client-id",
91+
AppKey = "test-client-app-key",
92+
ResourceId = "test-resource-id"
93+
}, mockHttp);
94+
mockMsgHandler
95+
.SetupSequence(handler => handler.AcquireAccessTokenAsync())
96+
.Throws(new AdalException("temporarily_unavailable"))
97+
.Throws(new AdalException("temporarily_unavailable"))
98+
.Throws(new AdalException("temporarily_unavailable"));
99+
mockMsgHandler.CallBase = true;
92100

93-
var exc = await Record.ExceptionAsync(async () => await client.GetStringAsync("https://www.example.com"));
101+
using (var client = new HttpClient(mockMsgHandler.Object))
102+
{
103+
var exc = await Record.ExceptionAsync(
104+
async () => await client.GetStringAsync(new Uri("https://www.example.com")).ConfigureAwait(false)
105+
).ConfigureAwait(false);
94106

95-
Assert.IsType<HttpRequestException>(exc);
96-
}
107+
Assert.IsType<HttpRequestException>(exc);
108+
}
109+
}
110+
}
97111
}
98112
}

CoderPatros.AuthenticatedHttpClient.AzureAd/AzureAdAuthenticatedHttpMessageHandler.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public AzureAdAuthenticatedHttpMessageHandler(
3535

3636
internal virtual async Task<string> AcquireAccessTokenAsync()
3737
{
38-
var result = await _authContext.AcquireTokenAsync(_resourceId, _clientCredential);
38+
var result = await _authContext.AcquireTokenAsync(_resourceId, _clientCredential).ConfigureAwait(false);
3939
return result?.AccessToken;
4040
}
4141

@@ -55,7 +55,7 @@ private async Task<string> AcquireTokenWithRetriesAsync(CancellationToken cancel
5555
try
5656
{
5757
// ADAL includes an in memory cache, so this call will only send a message to the server if the cached token is expired.
58-
token = await AcquireAccessTokenAsync();
58+
token = await AcquireAccessTokenAsync().ConfigureAwait(false);
5959
}
6060
catch (AdalException ex)
6161
{
@@ -80,7 +80,7 @@ private async Task<string> AcquireTokenWithRetriesAsync(CancellationToken cancel
8080

8181
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
8282
{
83-
var accessToken = await AcquireTokenWithRetriesAsync(cancellationToken);
83+
var accessToken = await AcquireTokenWithRetriesAsync(cancellationToken).ConfigureAwait(false);
8484
if (cancellationToken.IsCancellationRequested)
8585
{
8686
return null;
@@ -90,7 +90,7 @@ protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage
9090
"Bearer",
9191
accessToken);
9292

93-
return await base.SendAsync(request, cancellationToken);
93+
return await base.SendAsync(request, cancellationToken).ConfigureAwait(false);
9494
}
9595
}
9696
}

CoderPatros.AuthenticatedHttpClient.AzureAppServiceManagedIdentity.Tests/AzureAppSericeManagedIdentityAuthenticatedHttpClientTests.cs

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,28 @@ public class AzureAppServiceManagedIdentityAuthenticatedHttpClientTests
1818
[Fact]
1919
public async Task TestRequestHasAuthorizationHeader()
2020
{
21-
var mockHttp = new MockHttpMessageHandler();
22-
mockHttp
23-
.Expect("https://www.example.com")
24-
.WithHeaders("Authorization", "Bearer test-access-token")
25-
.Respond(HttpStatusCode.OK);
26-
var mockMsgHandler = new Mock<AzureAppServiceManagedIdentityAuthenticatedHttpMessageHandler>(new AzureAppServiceManagedIdentityAuthenticatedHttpClientOptions
21+
using (var mockHttp = new MockHttpMessageHandler())
2722
{
28-
ResourceId = "test-resource-id"
29-
}, mockHttp);
30-
mockMsgHandler
31-
.Setup(handler => handler.GetAccessTokenAsync())
32-
.Returns(Task.FromResult("test-access-token"));
33-
mockMsgHandler.CallBase = true;
34-
var client = new HttpClient(mockMsgHandler.Object);
23+
mockHttp
24+
.Expect("https://www.example.com")
25+
.WithHeaders("Authorization", "Bearer test-access-token")
26+
.Respond(HttpStatusCode.OK);
27+
var mockMsgHandler = new Mock<AzureAppServiceManagedIdentityAuthenticatedHttpMessageHandler>(new AzureAppServiceManagedIdentityAuthenticatedHttpClientOptions
28+
{
29+
ResourceId = "test-resource-id"
30+
}, mockHttp);
31+
mockMsgHandler
32+
.Setup(handler => handler.GetAccessTokenAsync())
33+
.Returns(Task.FromResult("test-access-token"));
34+
mockMsgHandler.CallBase = true;
3535

36-
await client.GetStringAsync("https://www.example.com");
36+
using (var client = new HttpClient(mockMsgHandler.Object))
37+
{
38+
await client.GetStringAsync(new Uri("https://www.example.com")).ConfigureAwait(false);
3739

38-
mockHttp.VerifyNoOutstandingExpectation();
40+
mockHttp.VerifyNoOutstandingExpectation();
41+
}
42+
}
3943
}
4044
}
4145
}

CoderPatros.AuthenticatedHttpClient.AzureAppServiceManagedIdentity.Tests/CoderPatros.AuthenticatedHttpClient.AzureAppServiceManagedIdentity.Tests.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10+
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.8">
11+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
12+
<PrivateAssets>all</PrivateAssets>
13+
</PackageReference>
1014
<PackageReference Include="coverlet.msbuild" Version="2.8.0">
1115
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1216
<PrivateAssets>all</PrivateAssets>

CoderPatros.AuthenticatedHttpClient.AzureAppServiceManagedIdentity/AzureAppServiceManagedIdentityAuthenticatedHttpMessageHandler.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,18 @@ public AzureAppServiceManagedIdentityAuthenticatedHttpMessageHandler(
2828
[ExcludeFromCodeCoverage]
2929
internal virtual async Task<string> GetAccessTokenAsync()
3030
{
31-
return await _azureServiceTokenProvider.GetAccessTokenAsync(_resourceId);
31+
return await _azureServiceTokenProvider.GetAccessTokenAsync(_resourceId).ConfigureAwait(false);
3232
}
3333

3434
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
3535
{
36-
var accessToken = await GetAccessTokenAsync();
36+
var accessToken = await GetAccessTokenAsync().ConfigureAwait(false);
3737

3838
request.Headers.Authorization = new AuthenticationHeaderValue(
3939
"Bearer",
4040
accessToken);
4141

42-
return await base.SendAsync(request, cancellationToken);
42+
return await base.SendAsync(request, cancellationToken).ConfigureAwait(false);
4343
}
4444
}
4545
}

CoderPatros.AuthenticatedHttpClient.Basic.Tests/BasicAuthenticatedHttpClientTests.cs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,22 @@ public void TestGenerateAuthenticationParameterRFC7617()
2929
[Fact]
3030
public async Task TestRequestHasAuthorizationHeader()
3131
{
32-
var mockHttp = new MockHttpMessageHandler();
33-
mockHttp
34-
.Expect("https://www.example.com")
35-
.WithHeaders("Authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==")
36-
.Respond(HttpStatusCode.OK);
37-
var client = BasicAuthenticatedHttpClient.GetClient(new BasicAuthenticatedHttpClientOptions
32+
using (var mockHttp = new MockHttpMessageHandler())
3833
{
39-
UserId = "Aladdin",
40-
Password = "open sesame"
41-
}, mockHttp);
34+
mockHttp
35+
.Expect("https://www.example.com")
36+
.WithHeaders("Authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==")
37+
.Respond(HttpStatusCode.OK);
38+
var client = BasicAuthenticatedHttpClient.GetClient(new BasicAuthenticatedHttpClientOptions
39+
{
40+
UserId = "Aladdin",
41+
Password = "open sesame"
42+
}, mockHttp);
4243

43-
await client.GetStringAsync("https://www.example.com");
44+
await client.GetStringAsync(new Uri("https://www.example.com")).ConfigureAwait(false);
4445

45-
mockHttp.VerifyNoOutstandingExpectation();
46+
mockHttp.VerifyNoOutstandingExpectation();
47+
}
4648
}
4749
}
4850
}

CoderPatros.AuthenticatedHttpClient.Basic/BasicAuthenticatedHttpMessageHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ internal static string GenerateAuthenticationParameter(string userId, string pas
3636
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
3737
{
3838
request.Headers.Authorization = _authorizationHeader;
39-
return await base.SendAsync(request, cancellationToken);
39+
return await base.SendAsync(request, cancellationToken).ConfigureAwait(false);
4040
}
4141
}
4242
}

0 commit comments

Comments
 (0)