Skip to content

Commit 2dfa30e

Browse files
authored
Add $ to to OData query parameters (#1993)
1 parent 968fbf3 commit 2dfa30e

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

src/Authentication/Authentication.Test/Handlers/ODataQueryOptionsHandlerTests.cs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ namespace Microsoft.Graph.Authentication.Test
1010
{
1111
public class ODataQueryOptionsHandlerTests : IDisposable
1212
{
13-
private HttpMessageInvoker _invoker;
14-
private FakeSuccessHandler _fakeSuccessHandler;
15-
private ODataQueryOptionsHandler _graphODataHandler;
13+
private readonly HttpMessageInvoker _invoker;
14+
private readonly FakeSuccessHandler _fakeSuccessHandler;
15+
private readonly ODataQueryOptionsHandler _graphODataHandler;
1616

1717
public ODataQueryOptionsHandlerTests()
1818
{
@@ -64,7 +64,7 @@ public async Task ShouldAddDollarSignToStandardODataQueryOptionsToV1Endpoint()
6464
}
6565

6666
[Fact]
67-
public async Task ShouldSkipWhenGraphVersionIsBeta()
67+
public async Task ShouldAddDollarSignWhenGraphVersionIsBeta()
6868
{
6969
// Arrange
7070
string topParam = "$top=5";
@@ -78,9 +78,15 @@ public async Task ShouldSkipWhenGraphVersionIsBeta()
7878

7979
// Act
8080
var response = await this._invoker.SendAsync(httpRequestMessage, new CancellationToken());
81+
var sentRequestQuery = response.RequestMessage.RequestUri.Query;
8182

8283
// Assert
83-
Assert.Equal(requestUrl.ToString(), response.RequestMessage.RequestUri.ToString());
84+
Assert.NotEqual(requestUrl.Query, sentRequestQuery);
85+
Assert.Contains(topParam, sentRequestQuery);
86+
Assert.Contains(orderbyParam, sentRequestQuery);
87+
Assert.Contains($"${selectParam}", sentRequestQuery);
88+
Assert.Contains($"${filterParam}", sentRequestQuery);
89+
Assert.Contains($"${expandParam}", sentRequestQuery);
8490
Assert.Equal(5, response.RequestMessage.RequestUri.Query.Split('&').Length);
8591
}
8692

src/Authentication/Authentication/Handlers/ODataQueryOptionsHandler.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace Microsoft.Graph.PowerShell.Authentication.Handlers
1616
/// </summary>
1717
internal class ODataQueryOptionsHandler : DelegatingHandler
1818
{
19-
private List<string> _standardODataQueryOptions = new List<string>
19+
private readonly List<string> _standardODataQueryOptions = new List<string>
2020
{
2121
"count",
2222
"expand",
@@ -59,13 +59,14 @@ protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage reques
5959
}
6060

6161
/// <summary>
62-
/// Add `$` to all standard OData query options. v1.0 endpoint requires $ to be prefixed to all OData query options.
62+
/// Add `$` to all standard OData query options. v1.0 and China cloud endpoint require $ to be prefixed to all OData query options.
63+
/// See https://github.com/microsoftgraph/msgraph-sdk-powershell/issues/1893
6364
/// </summary>
6465
/// <param name="request"></param>
6566
/// <returns></returns>
6667
private HttpRequestMessage AddDollarSignToQueryParameters(HttpRequestMessage request)
6768
{
68-
if (request.RequestUri.Segments[1].ToLower().Contains("v1.0") && request.RequestUri.Query != null)
69+
if (request.RequestUri.Query != null)
6970
{
7071
string newRequestQuery = request.RequestUri.Query;
7172
string[] querySegments = newRequestQuery.Split(new char[] { '&', '?' }, StringSplitOptions.RemoveEmptyEntries);

0 commit comments

Comments
 (0)