Skip to content

Commit 6a28ed3

Browse files
committed
Removed unecessary nullable annotation from DCR document's Extensions property
1 parent 23e61a2 commit 6a28ed3

File tree

3 files changed

+31
-4
lines changed

3 files changed

+31
-4
lines changed

identity-model/src/IdentityModel/Client/Messages/DynamicClientRegistrationDocument.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public class DynamicClientRegistrationDocument
115115
/// URL using the https scheme to be used in calculating Pseudonymous Identifiers by the OpenID provider.
116116
/// </summary>
117117
/// <remarks>
118-
/// The URL references a file with a single JSON array of <c>redirect_uri</c> values.
118+
/// The URL references a file with a single JSON array of <c>redirect_uri</c> values.
119119
/// </remarks>
120120
[JsonPropertyName(OidcConstants.ClientMetadata.SectorIdentifierUri)]
121121
public Uri? SectorIdentifierUri { get; set; }
@@ -277,7 +277,7 @@ public class DynamicClientRegistrationDocument
277277
/// Custom client metadata fields to include in the serialization.
278278
/// </summary>
279279
[JsonExtensionData]
280-
public IDictionary<string, JsonElement>? Extensions { get; set; } = new Dictionary<string, JsonElement>(StringComparer.Ordinal);
280+
public IDictionary<string, JsonElement> Extensions { get; set; } = new Dictionary<string, JsonElement>(StringComparer.Ordinal);
281281

282282
[JsonPropertyName(OidcConstants.ClientMetadata.IntrospectionSignedResponseAlgorithm)]
283283
public string? IntrospectionSignedResponseAlgorithm { get; set; }

identity-model/test/IdentityModel.Tests/HttpClientExtensions/DynamicClientRegistrationTests.cs

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ public async Task Extensions_should_be_serializable()
166166
{
167167
Address = Endpoint,
168168
Document = JsonSerializer.Deserialize<DynamicClientRegistrationDocument>(
169-
"{\"extension\":\"data\"}")
169+
"{\"custom_field\":\"data\"}")
170170
};
171171
request.Document.Extensions.ShouldNotBeEmpty();
172172

@@ -178,5 +178,32 @@ public async Task Extensions_should_be_serializable()
178178

179179
// Mostly we just want to make sure that serialization didn't throw
180180
response.ShouldNotBeNull();
181+
182+
//ensure the extension made it into the request
183+
var requestContent = await handler.Request?.Content?.ReadAsStringAsync()!;
184+
var requestContentJson = JsonSerializer.Deserialize<JsonElement>(requestContent);
185+
requestContentJson.GetProperty("custom_field").GetString().ShouldBe("data");
186+
}
187+
188+
[Fact]
189+
public void Extensions_should_not_be_null_after_deserializing_json_without_custom_client_metadata()
190+
{
191+
var json = "{}";
192+
193+
var doc = JsonSerializer.Deserialize<DynamicClientRegistrationDocument>(json);
194+
195+
doc.Extensions.ShouldNotBeNull();
196+
}
197+
198+
[Fact]
199+
public void Extensions_should_contain_data_after_deserialization()
200+
{
201+
var json = "{\"custom_field\":\"123\"}";
202+
203+
var doc = JsonSerializer.Deserialize<DynamicClientRegistrationDocument>(json);
204+
205+
doc.Extensions.ShouldNotBeEmpty();
206+
doc.Extensions.Count.ShouldBe(1);
207+
doc.Extensions["custom_field"].GetString().ShouldBe("123");
181208
}
182209
}

identity-model/test/IdentityModel.Tests/Verifications/PublicApiVerificationTests.VerifyPublicApi.verified.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -933,7 +933,7 @@ namespace Duende.IdentityModel.Client
933933
[System.Text.Json.Serialization.JsonPropertyName("default_max_age")]
934934
public int? DefaultMaxAge { get; set; }
935935
[System.Text.Json.Serialization.JsonExtensionData]
936-
public System.Collections.Generic.IDictionary<string, System.Text.Json.JsonElement>? Extensions { get; set; }
936+
public System.Collections.Generic.IDictionary<string, System.Text.Json.JsonElement> Extensions { get; set; }
937937
[System.Text.Json.Serialization.JsonPropertyName("frontchannel_logout_session_required")]
938938
public bool? FrontChannelLogoutSessionRequired { get; set; }
939939
[System.Text.Json.Serialization.JsonPropertyName("frontchannel_logout_uri")]

0 commit comments

Comments
 (0)