Browse Source

Fix OpenIddictParameter.ToString() to always use JsonElement.ToString()

pull/947/head
Kévin Chalet 6 years ago
parent
commit
528723b9b1
  1. 6
      src/OpenIddict.Abstractions/Primitives/OpenIddictParameter.cs
  2. 23
      test/OpenIddict.Abstractions.Tests/Primitives/OpenIddictParameterTests.cs

6
src/OpenIddict.Abstractions/Primitives/OpenIddictParameter.cs

@ -397,12 +397,6 @@ namespace OpenIddict.Abstractions
string value => value, string value => value,
string[] value => string.Join(", ", value), string[] value => string.Join(", ", value),
JsonElement value when value.ValueKind == JsonValueKind.Undefined => string.Empty,
JsonElement value when value.ValueKind == JsonValueKind.Null => string.Empty,
JsonElement value when value.ValueKind != JsonValueKind.Array &&
value.ValueKind != JsonValueKind.Object => value.GetString(),
JsonElement value => value.ToString(), JsonElement value => value.ToString(),
_ => Value.ToString() _ => Value.ToString()

23
test/OpenIddict.Abstractions.Tests/Primitives/OpenIddictParameterTests.cs

@ -527,14 +527,29 @@ namespace OpenIddict.Abstractions.Tests.Primitives
} }
[Fact] [Fact]
public void ToString_ReturnsUnderlyingJsonValue() public void ToString_ReturnsEmptyStringForUndefinedJsonValues()
{ {
// Arrange // Arrange
var parameter = new OpenIddictParameter( var parameter = new OpenIddictParameter(default(JsonElement));
JsonSerializer.Deserialize<JsonElement>(@"{""field"":""Fabrikam""}").GetProperty("field"));
// Act and assert // Act and assert
Assert.Equal("Fabrikam", parameter.ToString()); Assert.Empty(parameter.ToString());
}
[Fact]
public void ToString_ReturnsUnderlyingJsonValue()
{
// Arrange, act and assert
Assert.Equal(bool.TrueString, new OpenIddictParameter(
JsonSerializer.Deserialize<JsonElement>(@"{""field"":true}").GetProperty("field")).ToString());
Assert.Equal(bool.FalseString, new OpenIddictParameter(
JsonSerializer.Deserialize<JsonElement>(@"{""field"":false}").GetProperty("field")).ToString());
Assert.Equal("Fabrikam", new OpenIddictParameter(
JsonSerializer.Deserialize<JsonElement>(@"{""field"":""Fabrikam""}").GetProperty("field")).ToString());
Assert.Equal(@"[""Fabrikam"",""Contoso""]", new OpenIddictParameter(
JsonSerializer.Deserialize<JsonElement>(@"{""field"":[""Fabrikam"",""Contoso""]}").GetProperty("field")).ToString());
Assert.Equal(@"{""field"":""value""}", new OpenIddictParameter(
JsonSerializer.Deserialize<JsonElement>(@"{""field"":""value""}")).ToString());
} }
[Theory] [Theory]

Loading…
Cancel
Save