Skip to content

Commit 61af76a

Browse files
committed
Address PR and add UT
1 parent 37d11e0 commit 61af76a

File tree

7 files changed

+53
-14
lines changed

7 files changed

+53
-14
lines changed

src/Microsoft.Identity.Web.TokenAcquisition/IdHelper.cs renamed to src/Microsoft.Identity.Web.Diagnostics/IdHelper.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
using System.Reflection;
77
using System.Text.RegularExpressions;
88

9-
namespace Microsoft.Identity.Web
9+
namespace Microsoft.Identity.Web.Diagnostics
1010
{
1111
internal static class IdHelper
1212
{
@@ -37,13 +37,13 @@ internal static class IdHelper
3737
});
3838

3939
public static string GetIdWebVersion()
40-
{
40+
{
4141
return s_idWebVersion.Value;
4242
}
4343

4444
public static string CreateTelemetryInfo()
4545
{
46-
return string.Format(CultureInfo.InvariantCulture, IDWebSku + s_idWebVersion.Value);
46+
return string.Format(CultureInfo.InvariantCulture, IDWebSku + GetIdWebVersion());
4747
}
4848
}
4949
}

src/Microsoft.Identity.Web.DownstreamApi/DownstreamApi.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using Microsoft.Extensions.Options;
1717
using Microsoft.Identity.Abstractions;
1818
using Microsoft.Identity.Client;
19+
using Microsoft.Identity.Web.Diagnostics;
1920

2021
namespace Microsoft.Identity.Web
2122
{
@@ -306,7 +307,6 @@ private async Task<HttpResponseMessage> CallApiInternalAsync(
306307
{
307308
// Downstream API URI
308309
string apiUrl = effectiveOptions.GetApiUrl();
309-
AddCallerSDKTelemetry(effectiveOptions);
310310

311311
// Create an HTTP request message
312312
using HttpRequestMessage httpRequestMessage = new(
@@ -340,14 +340,16 @@ private async Task<HttpResponseMessage> CallApiInternalAsync(
340340
return downstreamApiResult;
341341
}
342342

343-
internal async Task UpdateRequestAsync(
343+
internal /* internal for test */ async Task UpdateRequestAsync(
344344
HttpRequestMessage httpRequestMessage,
345345
HttpContent? content,
346346
DownstreamApiOptions effectiveOptions,
347347
bool appToken,
348348
ClaimsPrincipal? user,
349349
CancellationToken cancellationToken)
350350
{
351+
AddCallerSDKTelemetry(effectiveOptions);
352+
351353
if (content != null)
352354
{
353355
httpRequestMessage.Content = content;
@@ -379,8 +381,7 @@ internal async Task UpdateRequestAsync(
379381
effectiveOptions.CustomizeHttpRequestMessage?.Invoke(httpRequestMessage);
380382
}
381383

382-
383-
private static readonly Dictionary<string, string> s_callerSDKDetails = new()
384+
internal /* for test */ static Dictionary<string, string> CallerSDKDetails { get; } = new()
384385
{
385386
{ "caller-sdk-id", "1" }, // 1 = Downstream API SDK ID
386387
{ "caller-sdk-ver", IdHelper.GetIdWebVersion() }
@@ -390,14 +391,14 @@ private static void AddCallerSDKTelemetry(DownstreamApiOptions effectiveOptions)
390391
{
391392
if (effectiveOptions.AcquireTokenOptions.ExtraQueryParameters == null)
392393
{
393-
effectiveOptions.AcquireTokenOptions.ExtraQueryParameters = s_callerSDKDetails;
394+
effectiveOptions.AcquireTokenOptions.ExtraQueryParameters = CallerSDKDetails;
394395
}
395396
else
396397
{
397398
effectiveOptions.AcquireTokenOptions.ExtraQueryParameters["caller-sdk-id"] =
398-
s_callerSDKDetails["caller-sdk-id"];
399+
CallerSDKDetails["caller-sdk-id"];
399400
effectiveOptions.AcquireTokenOptions.ExtraQueryParameters["caller-sdk-ver"] =
400-
s_callerSDKDetails["caller-sdk-ver"];
401+
CallerSDKDetails["caller-sdk-ver"];
401402
}
402403
}
403404
}

src/Microsoft.Identity.Web.DownstreamApi/Microsoft.Identity.Web.DownstreamApi.csproj

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@
77
<EnableConfigurationBindingGenerator>true</EnableConfigurationBindingGenerator>
88
<PackageReadmeFile>README.md</PackageReadmeFile>
99
</PropertyGroup>
10-
<ItemGroup>
11-
<Compile Include="..\Microsoft.Identity.Web.TokenAcquisition\IdHelper.cs" Link="IdHelper.cs" />
12-
</ItemGroup>
1310
<ItemGroup>
1411
<None Include="..\..\README.md">
1512
<Pack>True</Pack>

src/Microsoft.Identity.Web.OWIN/AppBuilderExtension.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
using Microsoft.Owin.Security.Jwt;
1818
using Microsoft.Owin.Security.OAuth;
1919
using Microsoft.Owin.Security.OpenIdConnect;
20+
using Microsoft.Identity.Web.Diagnostics;
2021
using Owin;
2122

2223
namespace Microsoft.Identity.Web

src/Microsoft.Identity.Web.TokenAcquisition/MsalAspNetCoreHttpClientFactory.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System.Net.Http;
55
using Microsoft.Identity.Client;
6+
using Microsoft.Identity.Web.Diagnostics;
67

78
namespace Microsoft.Identity.Web
89
{

src/Microsoft.Identity.Web/WebAppExtensions/MicrosoftIdentityWebAppAuthenticationBuilderExtensions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
1717
using System.Linq;
1818
using System.Diagnostics.CodeAnalysis;
19+
using Microsoft.Identity.Web.Diagnostics;
1920

2021
namespace Microsoft.Identity.Web
2122
{

tests/Microsoft.Identity.Web.Test/DownstreamWebApiSupport/DownstreamApiTests.cs

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,51 @@ public async Task UpdateRequestAsync_WithContent_AddsContentToRequest()
4848
// Arrange
4949
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "https://example.com");
5050
var content = new StringContent("test content");
51+
var options = new DownstreamApiOptions();
5152

5253
// Act
53-
await _input.UpdateRequestAsync(httpRequestMessage, content, new DownstreamApiOptions(), false, null, CancellationToken.None);
54+
await _input.UpdateRequestAsync(httpRequestMessage, content, options, false, null, CancellationToken.None);
5455

5556
// Assert
5657
Assert.Equal(content, httpRequestMessage.Content);
5758
Assert.Equal("application/json", httpRequestMessage.Headers.Accept.Single().MediaType);
5859
Assert.Equal("text/plain", httpRequestMessage.Content?.Headers.ContentType?.MediaType);
60+
Assert.Equal(options.AcquireTokenOptions.ExtraQueryParameters, DownstreamApi.CallerSDKDetails);
61+
}
62+
63+
64+
[Fact]
65+
public async Task UpdateRequestAsync_AddsToExtraQP()
66+
{
67+
// Arrange
68+
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "https://example.com");
69+
var content = new StringContent("test content");
70+
var options = new DownstreamApiOptions() {
71+
AcquireTokenOptions = new AcquireTokenOptions() {
72+
ExtraQueryParameters = new Dictionary<string, string>()
73+
{
74+
{ "n1", "v1" },
75+
{ "n2", "v2" },
76+
{ "caller-sdk-id", "bogus" } // value will be overwritten by the SDK
77+
}
78+
} };
79+
80+
// Act
81+
await _input.UpdateRequestAsync(httpRequestMessage, content, options, false, null, CancellationToken.None);
82+
83+
// Assert
84+
Assert.Equal(content, httpRequestMessage.Content);
85+
Assert.Equal("application/json", httpRequestMessage.Headers.Accept.Single().MediaType);
86+
Assert.Equal("text/plain", httpRequestMessage.Content?.Headers.ContentType?.MediaType);
87+
Assert.Equal("v1", options.AcquireTokenOptions.ExtraQueryParameters["n1"]);
88+
Assert.Equal("v2", options.AcquireTokenOptions.ExtraQueryParameters["n2"]);
89+
Assert.Equal(
90+
DownstreamApi.CallerSDKDetails["caller-sdk-id"],
91+
options.AcquireTokenOptions.ExtraQueryParameters["caller-sdk-id"] );
92+
Assert.Equal(
93+
DownstreamApi.CallerSDKDetails["caller-sdk-ver"],
94+
options.AcquireTokenOptions.ExtraQueryParameters["caller-sdk-ver"]);
95+
5996
}
6097

6198
[Theory]
@@ -82,6 +119,7 @@ public async Task UpdateRequestAsync_WithScopes_AddsAuthorizationHeaderToRequest
82119
Assert.Equal("ey", httpRequestMessage.Headers.Authorization?.Parameter);
83120
Assert.Equal("Bearer", httpRequestMessage.Headers.Authorization?.Scheme);
84121
Assert.Equal("application/json", httpRequestMessage.Headers.Accept.Single().MediaType);
122+
Assert.Equal(options.AcquireTokenOptions.ExtraQueryParameters, DownstreamApi.CallerSDKDetails);
85123
}
86124

87125
[Fact]

0 commit comments

Comments
 (0)