Skip to content

Commit bcfe2f0

Browse files
committed
Update OpenIddictParameter to return empty immutable arrays instead of uninitialized instances
1 parent 9638ae4 commit bcfe2f0

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

src/OpenIddict.Abstractions/Primitives/OpenIddictParameter.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -815,7 +815,7 @@ public void WriteTo(Utf8JsonWriter writer)
815815
/// <param name="parameter">The parameter to convert.</param>
816816
/// <returns>The converted value.</returns>
817817
public static explicit operator bool(OpenIddictParameter? parameter)
818-
=> ((bool?) parameter).GetValueOrDefault();
818+
=> ((bool?) parameter) ?? false;
819819

820820
/// <summary>
821821
/// Converts an <see cref="OpenIddictParameter"/> instance to a nullable boolean.
@@ -1015,7 +1015,7 @@ public static explicit operator JsonElement(OpenIddictParameter? parameter)
10151015
/// <param name="parameter">The parameter to convert.</param>
10161016
/// <returns>The converted value.</returns>
10171017
public static explicit operator long(OpenIddictParameter? parameter)
1018-
=> ((long?) parameter).GetValueOrDefault();
1018+
=> ((long?) parameter) ?? 0;
10191019

10201020
/// <summary>
10211021
/// Converts an <see cref="OpenIddictParameter"/> instance to a nullable long integer.
@@ -1150,7 +1150,7 @@ JsonNode value when JsonSerializer.SerializeToElement(value,
11501150
/// <param name="parameter">The parameter to convert.</param>
11511151
/// <returns>The converted value.</returns>
11521152
public static explicit operator StringValues(OpenIddictParameter? parameter)
1153-
=> ((StringValues?) parameter).GetValueOrDefault();
1153+
=> ((StringValues?) parameter) ?? StringValues.Empty;
11541154

11551155
/// <summary>
11561156
/// Converts an <see cref="OpenIddictParameter"/> instance to a <see cref="StringValues"/> instance.
@@ -1269,7 +1269,7 @@ JsonNode value when JsonSerializer.SerializeToElement(value,
12691269
/// <param name="parameter">The parameter to convert.</param>
12701270
/// <returns>The converted value.</returns>
12711271
public static explicit operator ImmutableArray<string?>(OpenIddictParameter? parameter)
1272-
=> ((ImmutableArray<string?>?) parameter).GetValueOrDefault();
1272+
=> ((ImmutableArray<string?>?) parameter) ?? [];
12731273

12741274
/// <summary>
12751275
/// Converts an <see cref="OpenIddictParameter"/> instance to an immutable array of strings.

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2071,15 +2071,26 @@ public void StringArrayConverter_ReturnsSingleElementArrayForStringValue()
20712071
public void StringArrayConverter_ReturnsDefaultValueForUnsupportedJsonValues()
20722072
{
20732073
// Arrange, act and assert
2074+
Assert.Empty((ImmutableArray<string?>) new OpenIddictParameter(new JsonElement()));
20742075
Assert.Null((ImmutableArray<string?>?) new OpenIddictParameter(new JsonElement()));
2076+
2077+
Assert.Empty((ImmutableArray<string?>) new OpenIddictParameter(
2078+
JsonSerializer.Deserialize<JsonElement>(@"[""value"",[]]")));
20752079
Assert.Null((ImmutableArray<string?>?) new OpenIddictParameter(
20762080
JsonSerializer.Deserialize<JsonElement>(@"[""value"",[]]")));
20772081

2082+
Assert.Empty((ImmutableArray<string?>) new OpenIddictParameter(
2083+
JsonSerializer.Deserialize<JsonElement>(@"[""value"",{}]")));
20782084
Assert.Null((ImmutableArray<string?>?) new OpenIddictParameter(
20792085
JsonSerializer.Deserialize<JsonElement>(@"[""value"",{}]")));
20802086

2087+
Assert.Empty((ImmutableArray<string?>) new OpenIddictParameter((JsonNode?) null));
20812088
Assert.Null((ImmutableArray<string?>?) new OpenIddictParameter((JsonNode?) null));
2089+
2090+
Assert.Empty((ImmutableArray<string?>) new OpenIddictParameter(new JsonArray("value", new JsonArray())));
20822091
Assert.Null((ImmutableArray<string?>?) new OpenIddictParameter(new JsonArray("value", new JsonArray())));
2092+
2093+
Assert.Empty((ImmutableArray<string?>) new OpenIddictParameter(new JsonArray("value", new JsonObject())));
20832094
Assert.Null((ImmutableArray<string?>?) new OpenIddictParameter(new JsonArray("value", new JsonObject())));
20842095
}
20852096

0 commit comments

Comments
 (0)