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 => 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(),
_ => Value.ToString()

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

@ -527,14 +527,29 @@ namespace OpenIddict.Abstractions.Tests.Primitives
}
[Fact]
public void ToString_ReturnsUnderlyingJsonValue()
public void ToString_ReturnsEmptyStringForUndefinedJsonValues()
{
// Arrange
var parameter = new OpenIddictParameter(
JsonSerializer.Deserialize<JsonElement>(@"{""field"":""Fabrikam""}").GetProperty("field"));
var parameter = new OpenIddictParameter(default(JsonElement));
// 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]

Loading…
Cancel
Save