Browse Source

Update OpenIddictParameter to return empty immutable arrays instead of uninitialized instances

pull/2313/head
Kévin Chalet 9 months ago
parent
commit
bcfe2f05d3
  1. 8
      src/OpenIddict.Abstractions/Primitives/OpenIddictParameter.cs
  2. 11
      test/OpenIddict.Abstractions.Tests/Primitives/OpenIddictParameterTests.cs

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

@ -815,7 +815,7 @@ public readonly struct OpenIddictParameter : IEquatable<OpenIddictParameter>
/// <param name="parameter">The parameter to convert.</param>
/// <returns>The converted value.</returns>
public static explicit operator bool(OpenIddictParameter? parameter)
=> ((bool?) parameter).GetValueOrDefault();
=> ((bool?) parameter) ?? false;
/// <summary>
/// Converts an <see cref="OpenIddictParameter"/> instance to a nullable boolean.
@ -1015,7 +1015,7 @@ public readonly struct OpenIddictParameter : IEquatable<OpenIddictParameter>
/// <param name="parameter">The parameter to convert.</param>
/// <returns>The converted value.</returns>
public static explicit operator long(OpenIddictParameter? parameter)
=> ((long?) parameter).GetValueOrDefault();
=> ((long?) parameter) ?? 0;
/// <summary>
/// Converts an <see cref="OpenIddictParameter"/> instance to a nullable long integer.
@ -1150,7 +1150,7 @@ public readonly struct OpenIddictParameter : IEquatable<OpenIddictParameter>
/// <param name="parameter">The parameter to convert.</param>
/// <returns>The converted value.</returns>
public static explicit operator StringValues(OpenIddictParameter? parameter)
=> ((StringValues?) parameter).GetValueOrDefault();
=> ((StringValues?) parameter) ?? StringValues.Empty;
/// <summary>
/// Converts an <see cref="OpenIddictParameter"/> instance to a <see cref="StringValues"/> instance.
@ -1269,7 +1269,7 @@ public readonly struct OpenIddictParameter : IEquatable<OpenIddictParameter>
/// <param name="parameter">The parameter to convert.</param>
/// <returns>The converted value.</returns>
public static explicit operator ImmutableArray<string?>(OpenIddictParameter? parameter)
=> ((ImmutableArray<string?>?) parameter).GetValueOrDefault();
=> ((ImmutableArray<string?>?) parameter) ?? [];
/// <summary>
/// Converts an <see cref="OpenIddictParameter"/> instance to an immutable array of strings.

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

@ -2071,15 +2071,26 @@ public class OpenIddictParameterTests
public void StringArrayConverter_ReturnsDefaultValueForUnsupportedJsonValues()
{
// Arrange, act and assert
Assert.Empty((ImmutableArray<string?>) new OpenIddictParameter(new JsonElement()));
Assert.Null((ImmutableArray<string?>?) new OpenIddictParameter(new JsonElement()));
Assert.Empty((ImmutableArray<string?>) new OpenIddictParameter(
JsonSerializer.Deserialize<JsonElement>(@"[""value"",[]]")));
Assert.Null((ImmutableArray<string?>?) new OpenIddictParameter(
JsonSerializer.Deserialize<JsonElement>(@"[""value"",[]]")));
Assert.Empty((ImmutableArray<string?>) new OpenIddictParameter(
JsonSerializer.Deserialize<JsonElement>(@"[""value"",{}]")));
Assert.Null((ImmutableArray<string?>?) new OpenIddictParameter(
JsonSerializer.Deserialize<JsonElement>(@"[""value"",{}]")));
Assert.Empty((ImmutableArray<string?>) new OpenIddictParameter((JsonNode?) null));
Assert.Null((ImmutableArray<string?>?) new OpenIddictParameter((JsonNode?) null));
Assert.Empty((ImmutableArray<string?>) new OpenIddictParameter(new JsonArray("value", new JsonArray())));
Assert.Null((ImmutableArray<string?>?) new OpenIddictParameter(new JsonArray("value", new JsonArray())));
Assert.Empty((ImmutableArray<string?>) new OpenIddictParameter(new JsonArray("value", new JsonObject())));
Assert.Null((ImmutableArray<string?>?) new OpenIddictParameter(new JsonArray("value", new JsonObject())));
}

Loading…
Cancel
Save