Skip to content

Commit

Permalink
fix: issue 128 - Added sanitization for guid
Browse files Browse the repository at this point in the history
  • Loading branch information
timandella committed Sep 23, 2023
1 parent f557db3 commit 2f40d56
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
25 changes: 25 additions & 0 deletions Microsoft.Kiota.Abstractions.Tests/RequestInformationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,28 @@ public void SetsPathParametersOfBooleanType()
// Assert
Assert.Contains("%24count=true", requestInfo.URI.OriginalString);
}
[Fact]
public void SetsPathParametersOfGuidType()
{
// Arrange as the request builders would
var requestInfo = new RequestInformation
{
HttpMethod = Method.GET,
UrlTemplate = "http://localhost/users{?%24requestId}"
};

// Act
var guid = Guid.Parse("6d320a89-2d8f-4204-855d-b98a1bc176d4");
var pathParameters = new Dictionary<string, object>
{
{ "%24requestId", guid }
};

requestInfo.PathParameters = pathParameters;

// Assert
Assert.Contains($"%24requestId=6d320a89-2d8f-4204-855d-b98a1bc176d4", requestInfo.URI.OriginalString);
}

[Fact]
public void ThrowsInvalidOperationExceptionWhenBaseUrlNotSet()
Expand Down Expand Up @@ -369,6 +391,9 @@ internal class GetQueryParameters
/// <summary>Select properties to be returned</summary>\
[QueryParameter("%24select")]
public string[] Select { get; set; }
/// <summary>Unique id of the request</summary>
[QueryParameter("%24requestId")]
public Guid RequestId { get; set; }
/// <summary>Include count of items</summary>
[QueryParameter("%24count")]
public bool? Count { get; set; }
Expand Down
1 change: 1 addition & 0 deletions src/RequestInformation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ public Uri URI
bool boolean => boolean.ToString().ToLower(),// pass in a lowercase string as the final url will be uppercase due to the way ToString() works for booleans
DateTimeOffset dateTimeOffset => dateTimeOffset.ToString("o"),// Default to ISO 8601 for datetimeoffsets in the url.
DateTime dateTime => dateTime.ToString("o"),// Default to ISO 8601 for datetimes in the url.
Guid guid => guid.ToString("D"),// Default of 32 digits separated by hyphens
_ => value,//return object as is as the ToString method is good enough.
};

Expand Down

0 comments on commit 2f40d56

Please sign in to comment.