diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/ResourceIdentity.Serialization.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/ResourceIdentity.Serialization.cs
new file mode 100644
index 000000000000..a5620cb3832f
--- /dev/null
+++ b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/ResourceIdentity.Serialization.cs
@@ -0,0 +1,156 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using System;
+using System.Collections.Generic;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+using Azure.Core;
+
+namespace Azure.ResourceManager.Core
+{
+ [JsonConverter(typeof(ResourceIdentityConverter))]
+ public partial class ResourceIdentity : IUtf8JsonSerializable
+ {
+ private const string SystemAssigned = "SystemAssigned";
+ private const string UserAssigned = "UserAssigned";
+ private const string SystemAndUserAssigned = "SystemAssigned, UserAssigned";
+
+ ///
+ /// Converts an object into a .
+ ///
+ /// Utf8JsonWriter object to which the output is going to be written.
+ void IUtf8JsonSerializable.Write(Utf8JsonWriter writer)
+ {
+ if (writer == null)
+ throw new ArgumentNullException(nameof(writer));
+
+ writer.WriteStartObject();
+ writer.WritePropertyName("identity");
+
+ if (!Optional.IsDefined(SystemAssignedIdentity) && UserAssignedIdentities.Count == 0)
+ {
+ writer.WriteStringValue("null");
+ writer.WriteEndObject();
+ writer.Flush();
+ return;
+ }
+
+ writer.WriteStartObject();
+ if (Optional.IsDefined(SystemAssignedIdentity) && Optional.IsCollectionDefined(UserAssignedIdentities) && UserAssignedIdentities.Count != 0)
+ {
+ writer.WriteObjectValue(SystemAssignedIdentity);
+ writer.WritePropertyName("type");
+ writer.WriteStringValue(SystemAndUserAssigned);
+ writer.WritePropertyName("userAssignedIdentities");
+ writer.WriteStartObject();
+ foreach (var keyValuePair in UserAssignedIdentities)
+ {
+ writer.WritePropertyName(keyValuePair.Key);
+ writer.WriteObjectValue(keyValuePair.Value);
+ }
+
+ writer.WriteEndObject();
+ }
+ else if (Optional.IsDefined(SystemAssignedIdentity))
+ {
+ writer.WriteObjectValue(SystemAssignedIdentity);
+ writer.WritePropertyName("type");
+ writer.WriteStringValue(SystemAssigned);
+ }
+ else if (Optional.IsCollectionDefined(UserAssignedIdentities) && UserAssignedIdentities.Count != 0)
+ {
+ writer.WritePropertyName("type");
+ writer.WriteStringValue(UserAssigned);
+ writer.WritePropertyName("userAssignedIdentities");
+ writer.WriteStartObject();
+ foreach (var keyValuePair in UserAssignedIdentities)
+ {
+ writer.WritePropertyName(keyValuePair.Key);
+ writer.WriteObjectValue(keyValuePair.Value);
+ }
+
+ writer.WriteEndObject();
+ }
+
+ writer.WriteEndObject();
+ writer.WriteEndObject();
+ writer.Flush();
+ }
+
+ ///
+ /// Converts a into an object.
+ ///
+ /// A containing an .
+ /// New Identity object with JSON values.
+ internal static ResourceIdentity DeserializeResourceIdentity(JsonElement element)
+ {
+ if (element.ValueKind == JsonValueKind.Undefined)
+ {
+ throw new ArgumentException("JsonElement cannot be undefined ", nameof(element));
+ }
+
+ Optional systemAssignedIdentity = default;
+ IDictionary userAssignedIdentities = new Dictionary();
+ string type = string.Empty;
+ foreach (var property in element.EnumerateObject())
+ {
+ if (property.NameEquals("userAssignedIdentities"))
+ {
+ if (property.Value.ValueKind == JsonValueKind.Null)
+ {
+ userAssignedIdentities = null;
+ continue;
+ }
+
+ string resourceId = string.Empty;
+ foreach (var keyValuePair in property.Value.EnumerateObject())
+ {
+ resourceId = keyValuePair.Name;
+ var userAssignedIdentity = UserAssignedIdentity.DeserializeUserAssignedIdentity(keyValuePair.Value);
+ userAssignedIdentities.Add(new ResourceGroupResourceIdentifier(resourceId), userAssignedIdentity);
+ }
+
+ continue;
+ }
+
+ if (property.NameEquals("type"))
+ {
+ if (property.Value.ValueKind == JsonValueKind.Null)
+ {
+ throw new InvalidOperationException("The type property had a JsonValueKind equal to Null");
+ }
+
+ type = property.Value.GetString();
+ }
+
+ if (type.Equals(SystemAssigned))
+ {
+ systemAssignedIdentity = SystemAssignedIdentity.DeserializeSystemAssignedIdentity(element);
+ continue;
+ }
+
+ if (type.Equals(SystemAndUserAssigned))
+ {
+ systemAssignedIdentity = SystemAssignedIdentity.DeserializeSystemAssignedIdentity(element);
+ continue;
+ }
+ }
+
+ return new ResourceIdentity(systemAssignedIdentity, userAssignedIdentities);
+ }
+
+ internal partial class ResourceIdentityConverter : JsonConverter
+ {
+ public override void Write(Utf8JsonWriter writer, ResourceIdentity resourceIdentity, JsonSerializerOptions options)
+ {
+ writer.WriteObjectValue(resourceIdentity);
+ }
+ public override ResourceIdentity Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+ {
+ using var document = JsonDocument.ParseValue(ref reader);
+ return DeserializeResourceIdentity(document.RootElement);
+ }
+ }
+ }
+}
diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/ResourceIdentity.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/ResourceIdentity.cs
new file mode 100644
index 000000000000..80283d0fdf31
--- /dev/null
+++ b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/ResourceIdentity.cs
@@ -0,0 +1,121 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using System;
+using System.Collections.Generic;
+using Azure.Core;
+
+namespace Azure.ResourceManager.Core
+{
+ ///
+ /// Represents a managed identity
+ ///
+ [PropertyReferenceType(new Type[] { typeof(ResourceIdentityType) })]
+ public partial class ResourceIdentity : IEquatable
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ [InitializationConstructor]
+ public ResourceIdentity()
+ : this(null, false)
+ {
+ } // not system or user
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// Dictionary with a key and a object value.
+ /// Flag for using or not.
+ public ResourceIdentity(Dictionary user, bool useSystemAssigned)
+ {
+ // check for combination of user and system on the impact to type value
+ SystemAssignedIdentity = useSystemAssigned ? new SystemAssignedIdentity() : null;
+ UserAssignedIdentities = new Dictionary();
+ if (user != null)
+ {
+ foreach (KeyValuePair id in user)
+ {
+ UserAssignedIdentities.Add(id.Key, id.Value);
+ }
+ }
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The to use.
+ /// Dictionary with a key and a object value.
+ [SerializationConstructor]
+ internal ResourceIdentity(SystemAssignedIdentity systemAssigned, IDictionary user)
+ {
+ // TODO: remove this constructor later
+ SystemAssignedIdentity = systemAssigned;
+ if (user == null)
+ {
+ UserAssignedIdentities = new Dictionary();
+ }
+ else
+ {
+ UserAssignedIdentities = user;
+ }
+ }
+
+ ///
+ /// Gets the SystemAssignedIdentity.
+ ///
+ public SystemAssignedIdentity SystemAssignedIdentity { get; private set; }
+
+ ///
+ /// Gets a dictionary of the User Assigned Identities.
+ ///
+ public IDictionary UserAssignedIdentities { get; private set; }
+
+ ///
+ /// Detects if this Identity is equals to another Identity instance.
+ ///
+ /// Identity object to compare.
+ /// True if they are equal, otherwise False.
+ public bool Equals(ResourceIdentity other)
+ {
+ if (ReferenceEquals(other, null))
+ return false;
+
+ if (UserAssignedIdentities.Count == other.UserAssignedIdentities.Count)
+ {
+ foreach (var identity in UserAssignedIdentities)
+ {
+ UserAssignedIdentity value;
+ if (other.UserAssignedIdentities.TryGetValue(identity.Key, out value))
+ {
+ if (!UserAssignedIdentity.Equals(identity.Value, value))
+ {
+ return false;
+ }
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+
+ return SystemAssignedIdentity.Equals(SystemAssignedIdentity, other.SystemAssignedIdentity);
+ }
+
+ ///
+ public override bool Equals(object obj)
+ {
+ if (ReferenceEquals(this, obj))
+ return true;
+
+ return Equals(obj as ResourceIdentity);
+ }
+
+ ///
+ public override int GetHashCode()
+ {
+ return HashCodeBuilder.Combine(SystemAssignedIdentity, UserAssignedIdentities);
+ }
+ }
+}
diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/SystemAssignedIdentity.Serialization.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/SystemAssignedIdentity.Serialization.cs
new file mode 100644
index 000000000000..718ee0bc1483
--- /dev/null
+++ b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/SystemAssignedIdentity.Serialization.cs
@@ -0,0 +1,82 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using System;
+using System.Text.Json;
+using Azure.Core;
+
+namespace Azure.ResourceManager.Core
+{
+ public partial class SystemAssignedIdentity : IUtf8JsonSerializable
+ {
+ ///
+ /// Converts an object into a .
+ ///
+ /// Utf8JsonWriter object to which the output is going to be written.
+ void IUtf8JsonSerializable.Write(Utf8JsonWriter writer)
+ {
+ if (writer == null)
+ throw new ArgumentNullException(nameof(writer));
+
+ writer.WritePropertyName("principalId");
+ if (!Optional.IsDefined(PrincipalId))
+ {
+ writer.WriteStringValue("null");
+ }
+ else
+ {
+ writer.WriteStringValue(PrincipalId.ToString());
+ }
+
+ writer.WritePropertyName("tenantId");
+ if (!Optional.IsDefined(TenantId))
+ {
+ writer.WriteStringValue("null");
+ }
+ else
+ {
+ writer.WriteStringValue(TenantId.ToString());
+ }
+
+ writer.Flush();
+ }
+
+ ///
+ /// Converts a into an object.
+ ///
+ /// A containing an identity.
+ /// New object with JSON values.
+ internal static SystemAssignedIdentity DeserializeSystemAssignedIdentity(JsonElement element)
+ {
+ if (element.ValueKind == JsonValueKind.Undefined)
+ {
+ throw new ArgumentException("JsonElement cannot be undefined ", nameof(element));
+ }
+
+ Guid principalId = default;
+ Guid tenantId = default;
+ foreach (var property in element.EnumerateObject())
+ {
+ if (property.NameEquals("principalId"))
+ {
+ if (property.Value.ValueKind != JsonValueKind.Null)
+ principalId = Guid.Parse(property.Value.GetString());
+ }
+
+ if (property.NameEquals("tenantId"))
+ {
+ if (property.Value.ValueKind != JsonValueKind.Null)
+ tenantId = Guid.Parse(property.Value.GetString());
+ }
+ }
+
+ if (principalId == default(Guid) && tenantId == default(Guid))
+ return null;
+
+ if (principalId == default(Guid) || tenantId == default(Guid))
+ throw new InvalidOperationException("Either TenantId or PrincipalId were null");
+
+ return new SystemAssignedIdentity(tenantId, principalId);
+ }
+ }
+}
diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/SystemAssignedIdentity.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/SystemAssignedIdentity.cs
similarity index 52%
rename from sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/SystemAssignedIdentity.cs
rename to sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/SystemAssignedIdentity.cs
index 3225c3034759..0753ad6f099f 100644
--- a/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/SystemAssignedIdentity.cs
+++ b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/SystemAssignedIdentity.cs
@@ -1,16 +1,15 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
+using System;
+using Azure.Core;
+
namespace Azure.ResourceManager.Core
{
- using System;
- using System.Text.Json;
- using Azure.Core;
-
///
/// A class representing an Identity assigned by the system.
///
- public sealed class SystemAssignedIdentity : IEquatable
+ public sealed partial class SystemAssignedIdentity : IEquatable
{
///
/// Initializes a new instance of the class with Null properties.
@@ -40,80 +39,6 @@ public SystemAssignedIdentity(Guid tenantId, Guid principalId)
///
public Guid? PrincipalId { get; private set; }
- ///
- /// Converts a into an object.
- ///
- /// A containing an identity.
- /// New object with JSON values.
- internal static SystemAssignedIdentity Deserialize(JsonElement element)
- {
- if (element.ValueKind == JsonValueKind.Undefined)
- {
- throw new ArgumentException("JsonElement cannot be undefined ", nameof(element));
- }
-
- Guid principalId = default;
- Guid tenantId = default;
- foreach (var property in element.EnumerateObject())
- {
- if (property.NameEquals("principalId"))
- {
- if (property.Value.ValueKind != JsonValueKind.Null)
- principalId = Guid.Parse(property.Value.GetString());
- }
-
- if (property.NameEquals("tenantId"))
- {
- if (property.Value.ValueKind != JsonValueKind.Null)
- tenantId = Guid.Parse(property.Value.GetString());
- }
- }
-
- if (principalId == default(Guid) && tenantId == default(Guid))
- return null;
-
- if (principalId == default(Guid) || tenantId == default(Guid))
- throw new InvalidOperationException("Either TenantId or PrincipalId were null");
-
- return new SystemAssignedIdentity(tenantId, principalId);
- }
-
- ///
- /// Converts an object into a .
- ///
- /// Utf8JsonWriter object to which the output is going to be written.
- /// object to be converted.
- internal static void Serialize(Utf8JsonWriter writer, SystemAssignedIdentity systemAssignedIdentity)
- {
- if (systemAssignedIdentity == null)
- throw new ArgumentNullException(nameof(systemAssignedIdentity));
-
- if (writer == null)
- throw new ArgumentNullException(nameof(writer));
-
- writer.WritePropertyName("principalId");
- if (!Optional.IsDefined(systemAssignedIdentity.PrincipalId))
- {
- writer.WriteStringValue("null");
- }
- else
- {
- writer.WriteStringValue(systemAssignedIdentity.PrincipalId.ToString());
- }
-
- writer.WritePropertyName("tenantId");
- if (!Optional.IsDefined(systemAssignedIdentity.TenantId))
- {
- writer.WriteStringValue("null");
- }
- else
- {
- writer.WriteStringValue(systemAssignedIdentity.TenantId.ToString());
- }
-
- writer.Flush();
- }
-
///
/// Compares two objects to determine if they are equal.
///
diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/UserAssignedIdentity.Serialization.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/UserAssignedIdentity.Serialization.cs
new file mode 100644
index 000000000000..e961fcce0dea
--- /dev/null
+++ b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/UserAssignedIdentity.Serialization.cs
@@ -0,0 +1,74 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using System;
+using System.Text.Json;
+using Azure.Core;
+
+namespace Azure.ResourceManager.Core
+{
+ ///
+ /// A class representing an Identity assigned by the user.
+ ///
+ public partial class UserAssignedIdentity : IUtf8JsonSerializable
+ {
+ ///
+ /// Converts an object into a .
+ ///
+ /// Utf8JsonWriter object to which the output is going to be written.
+ void IUtf8JsonSerializable.Write(Utf8JsonWriter writer)
+ {
+ if (writer == null)
+ throw new ArgumentNullException(nameof(writer));
+
+ writer.WriteStartObject();
+
+ writer.WritePropertyName("clientId");
+ writer.WriteStringValue(ClientId.ToString());
+
+ writer.WritePropertyName("principalId");
+ writer.WriteStringValue(PrincipalId.ToString());
+
+ writer.WriteEndObject();
+ writer.Flush();
+ }
+
+ ///
+ /// Converts a into an object.
+ ///
+ /// A containing an identity.
+ /// New object with JSON values.
+ internal static UserAssignedIdentity DeserializeUserAssignedIdentity(JsonElement element)
+ {
+ if (element.ValueKind == JsonValueKind.Undefined)
+ {
+ throw new ArgumentException("JsonElement is undefined " + nameof(element));
+ }
+
+ Guid principalId = default;
+ Guid clientId = default;
+ foreach (var property in element.EnumerateObject())
+ {
+ if (property.NameEquals("principalId"))
+ {
+ if (property.Value.ValueKind != JsonValueKind.Null)
+ principalId = Guid.Parse(property.Value.GetString());
+ }
+
+ if (property.NameEquals("clientId"))
+ {
+ if (property.Value.ValueKind != JsonValueKind.Null)
+ clientId = Guid.Parse(property.Value.GetString());
+ }
+ }
+
+ if (principalId == default(Guid) && clientId == default(Guid))
+ return null;
+
+ if (principalId == default(Guid) || clientId == default(Guid))
+ throw new InvalidOperationException("Either ClientId or PrincipalId were null");
+
+ return new UserAssignedIdentity(clientId, principalId);
+ }
+ }
+}
diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/UserAssignedIdentity.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/UserAssignedIdentity.cs
similarity index 53%
rename from sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/UserAssignedIdentity.cs
rename to sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/UserAssignedIdentity.cs
index dffee4dae14e..47d224c456c4 100644
--- a/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/UserAssignedIdentity.cs
+++ b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Generated/Models/UserAssignedIdentity.cs
@@ -1,16 +1,15 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
+using System;
+using Azure.Core;
+
namespace Azure.ResourceManager.Core
{
- using System;
- using System.Text.Json;
- using Azure.Core;
-
///
/// A class representing an Identity assigned by the user.
///
- public sealed class UserAssignedIdentity : IEquatable
+ public sealed partial class UserAssignedIdentity : IEquatable
{
///
/// Initializes a new instance of the class.
@@ -33,69 +32,6 @@ public UserAssignedIdentity(Guid clientId, Guid principalId)
///
public Guid PrincipalId { get; }
- ///
- /// Converts a into an object.
- ///
- /// A containing an identity.
- /// New object with JSON values.
- internal static UserAssignedIdentity Deserialize(JsonElement element)
- {
- if (element.ValueKind == JsonValueKind.Undefined)
- {
- throw new ArgumentException("JsonElement is undefined " + nameof(element));
- }
-
- Guid principalId = default;
- Guid clientId = default;
- foreach (var property in element.EnumerateObject())
- {
- if (property.NameEquals("principalId"))
- {
- if (property.Value.ValueKind != JsonValueKind.Null)
- principalId = Guid.Parse(property.Value.GetString());
- }
-
- if (property.NameEquals("clientId"))
- {
- if (property.Value.ValueKind != JsonValueKind.Null)
- clientId = Guid.Parse(property.Value.GetString());
- }
- }
-
- if (principalId == default(Guid) && clientId == default(Guid))
- return null;
-
- if (principalId == default(Guid) || clientId == default(Guid))
- throw new InvalidOperationException("Either ClientId or PrincipalId were null");
-
- return new UserAssignedIdentity(clientId, principalId);
- }
-
- ///
- /// Converts an object into a .
- ///
- /// Utf8JsonWriter object to which the output is going to be written.
- /// object to be converted.
- internal static void Serialize(Utf8JsonWriter writer, UserAssignedIdentity userAssignedIdentity)
- {
- if (userAssignedIdentity == null)
- throw new ArgumentNullException(nameof(userAssignedIdentity));
-
- if (writer == null)
- throw new ArgumentNullException(nameof(writer));
-
- writer.WriteStartObject();
-
- writer.WritePropertyName("clientId");
- writer.WriteStringValue(userAssignedIdentity.ClientId.ToString());
-
- writer.WritePropertyName("principalId");
- writer.WriteStringValue(userAssignedIdentity.PrincipalId.ToString());
-
- writer.WriteEndObject();
- writer.Flush();
- }
-
///
/// Compares two objects to determine if they are equal.
///
diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/ResourceIdentity.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/ResourceIdentity.cs
deleted file mode 100644
index 80e42071c83e..000000000000
--- a/sdk/resourcemanager/Azure.ResourceManager.Core/src/Resources/ResourceIdentity.cs
+++ /dev/null
@@ -1,256 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-using Azure.Core;
-using System;
-using System.Collections.Generic;
-using System.Text.Json;
-
-namespace Azure.ResourceManager.Core
-{
- ///
- /// Represents a managed identity
- ///
- [PropertyReferenceType(new Type[] { typeof(ResourceIdentityType) })]
- public class ResourceIdentity : IEquatable
- {
- private const string SystemAssigned = "SystemAssigned";
- private const string UserAssigned = "UserAssigned";
- private const string SystemAndUserAssigned = "SystemAssigned, UserAssigned";
-
- ///
- /// Initializes a new instance of the class.
- ///
- [InitializationConstructor]
- public ResourceIdentity()
- : this(null, false)
- {
- } // not system or user
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// Dictionary with a key and a object value.
- /// Flag for using or not.
- [SerializationConstructor]
- public ResourceIdentity(Dictionary user, bool useSystemAssigned)
- {
- // check for combination of user and system on the impact to type value
- SystemAssignedIdentity = useSystemAssigned ? new SystemAssignedIdentity() : null;
- UserAssignedIdentities = new Dictionary();
- if (user != null)
- {
- foreach (KeyValuePair id in user)
- {
- UserAssignedIdentities.Add(id.Key, id.Value);
- }
- }
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The to use.
- /// Dictionary with a key and a object value.
- public ResourceIdentity(SystemAssignedIdentity systemAssigned, IDictionary user)
- {
- // TODO: remove this constructor later
- SystemAssignedIdentity = systemAssigned;
- if (user == null)
- {
- UserAssignedIdentities = new Dictionary();
- }
- else
- {
- UserAssignedIdentities = user;
- }
- }
-
- ///
- /// Gets the SystemAssignedIdentity.
- ///
- public SystemAssignedIdentity SystemAssignedIdentity { get; private set; }
-
- ///
- /// Gets a dictionary of the User Assigned Identities.
- ///
- public IDictionary UserAssignedIdentities { get; private set; }
-
- ///
- /// Converts a into an object.
- ///
- /// A containing an .
- /// New Identity object with JSON values.
-#pragma warning disable AZC0014 // Avoid using banned types in public API
- public static ResourceIdentity DeserializeResourceIdentity(JsonElement element)
-#pragma warning restore AZC0014 // Avoid using banned types in public API
- {
- if (element.ValueKind == JsonValueKind.Undefined)
- {
- throw new ArgumentException("JsonElement cannot be undefined ", nameof(element));
- }
-
- Optional systemAssignedIdentity = default;
- IDictionary userAssignedIdentities = new Dictionary();
- string type = string.Empty;
- foreach (var property in element.EnumerateObject())
- {
- if (property.NameEquals("userAssignedIdentities"))
- {
- if (property.Value.ValueKind == JsonValueKind.Null)
- {
- userAssignedIdentities = null;
- continue;
- }
-
- string resourceId = string.Empty;
- foreach (var keyValuePair in property.Value.EnumerateObject())
- {
- resourceId = keyValuePair.Name;
- var userAssignedIdentity = UserAssignedIdentity.Deserialize(keyValuePair.Value);
- userAssignedIdentities.Add(new ResourceGroupResourceIdentifier(resourceId), userAssignedIdentity);
- }
-
- continue;
- }
-
- if (property.NameEquals("type"))
- {
- if (property.Value.ValueKind == JsonValueKind.Null)
- {
- throw new InvalidOperationException("The type property had a JsonValueKind equal to Null");
- }
-
- type = property.Value.GetString();
- }
-
- if (type.Equals(SystemAssigned))
- {
- systemAssignedIdentity = SystemAssignedIdentity.Deserialize(element);
- continue;
- }
-
- if (type.Equals(SystemAndUserAssigned))
- {
- systemAssignedIdentity = SystemAssignedIdentity.Deserialize(element);
- continue;
- }
- }
-
- return new ResourceIdentity(systemAssignedIdentity, userAssignedIdentities);
- }
-
- ///
- /// Converts an object into a .
- ///
- /// Utf8JsonWriter object to which the output is going to be written.
- /// Identity object to be converted.
- internal static void Serialize(Utf8JsonWriter writer, ResourceIdentity identity)
- {
- if (writer == null)
- throw new ArgumentNullException(nameof(writer));
-
- if (identity == null)
- throw new ArgumentNullException(nameof(identity));
-
- writer.WriteStartObject();
- writer.WritePropertyName("identity");
-
- if (identity.SystemAssignedIdentity == null && identity.UserAssignedIdentities.Count == 0)
- {
- writer.WriteStringValue("null");
- writer.WriteEndObject();
- writer.Flush();
- return;
- }
-
- writer.WriteStartObject();
- if (identity.SystemAssignedIdentity != null && identity.UserAssignedIdentities.Count != 0)
- {
- SystemAssignedIdentity.Serialize(writer, identity.SystemAssignedIdentity);
- writer.WritePropertyName("kind");
- writer.WriteStringValue(SystemAndUserAssigned);
- writer.WritePropertyName("userAssignedIdentities");
- writer.WriteStartObject();
- foreach (var keyValuePair in identity.UserAssignedIdentities)
- {
- writer.WritePropertyName(keyValuePair.Key);
- UserAssignedIdentity.Serialize(writer, keyValuePair.Value);
- }
-
- writer.WriteEndObject();
- }
- else if (identity.SystemAssignedIdentity != null)
- {
- SystemAssignedIdentity.Serialize(writer, identity.SystemAssignedIdentity);
- writer.WritePropertyName("kind");
- writer.WriteStringValue(SystemAssigned);
- }
- else if (identity.UserAssignedIdentities.Count != 0)
- {
- writer.WritePropertyName("kind");
- writer.WriteStringValue(UserAssigned);
- writer.WritePropertyName("userAssignedIdentities");
- writer.WriteStartObject();
- foreach (var keyValuePair in identity.UserAssignedIdentities)
- {
- writer.WritePropertyName(keyValuePair.Key);
- UserAssignedIdentity.Serialize(writer, keyValuePair.Value);
- }
-
- writer.WriteEndObject();
- }
-
- writer.WriteEndObject();
- writer.WriteEndObject();
- writer.Flush();
- }
-
- ///
- /// Detects if this Identity is equals to another Identity instance.
- ///
- /// Identity object to compare.
- /// True if they are equal, otherwise False.
- public bool Equals(ResourceIdentity other)
- {
- if (ReferenceEquals(other, null))
- return false;
-
- if (UserAssignedIdentities.Count == other.UserAssignedIdentities.Count)
- {
- foreach (var identity in UserAssignedIdentities)
- {
- UserAssignedIdentity value;
- if (other.UserAssignedIdentities.TryGetValue(identity.Key, out value))
- {
- if (!UserAssignedIdentity.Equals(identity.Value, value))
- {
- return false;
- }
- }
- else
- {
- return false;
- }
- }
- }
-
- return SystemAssignedIdentity.Equals(SystemAssignedIdentity, other.SystemAssignedIdentity);
- }
-
- ///
- public override bool Equals(object obj)
- {
- if (ReferenceEquals(this, obj))
- return true;
-
- return Equals(obj as ResourceIdentity);
- }
-
- ///
- public override int GetHashCode()
- {
- return HashCodeBuilder.Combine(SystemAssignedIdentity, UserAssignedIdentities);
- }
- }
-}
diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/IdentityTests.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/IdentityTests.cs
index 88419932480c..18c8bad29929 100644
--- a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/IdentityTests.cs
+++ b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/IdentityTests.cs
@@ -3,6 +3,7 @@
using System.IO;
using System.Linq;
using System.Text.Json;
+using Azure.Core;
using NUnit.Framework;
namespace Azure.ResourceManager.Core.Tests
@@ -21,10 +22,10 @@ public void CheckNoParamConstructor()
Assert.IsNull(identity.SystemAssignedIdentity);
}
- [TestCase ("/subscriptions/6b085460-5f00-477e-ba44-1035046e9101/resourceGroups/tester/providers/Microsoft.Web/sites/autotest", false)]
- [TestCase ("", true)]
- [TestCase (" ", true)]
- [TestCase (null, true)]
+ [TestCase("/subscriptions/6b085460-5f00-477e-ba44-1035046e9101/resourceGroups/tester/providers/Microsoft.Web/sites/autotest", false)]
+ [TestCase("", true)]
+ [TestCase(" ", true)]
+ [TestCase(null, true)]
public void CheckUserTrueConstructor(string resourceID, bool invalidParameter)
{
var dict1 = new Dictionary();
@@ -49,7 +50,7 @@ public void CheckUserTrueConstructor(string resourceID, bool invalidParameter)
}
}
- [TestCase ("/subscriptions/6b085460-5f00-477e-ba44-1035046e9101/resourceGroups/tester/providers/Microsoft.Web/sites/autotest", false)]
+ [TestCase("/subscriptions/6b085460-5f00-477e-ba44-1035046e9101/resourceGroups/tester/providers/Microsoft.Web/sites/autotest", false)]
[TestCase("", true)]
[TestCase(" ", true)]
[TestCase(null, true)]
@@ -57,7 +58,7 @@ public void CheckUserFalseConstructor(string resourceID, bool invalidParameter)
{
var dict1 = new Dictionary();
- if(invalidParameter)
+ if (invalidParameter)
{
if (resourceID is null)
Assert.Throws(() => { dict1[resourceID] = new UserAssignedIdentity(Guid.Empty, Guid.Empty); });
@@ -75,7 +76,7 @@ public void CheckUserFalseConstructor(string resourceID, bool invalidParameter)
Assert.IsNotNull(identity.SystemAssignedIdentity);
Assert.IsTrue(identity.SystemAssignedIdentity.TenantId.Equals(Guid.Empty));
Assert.IsTrue(identity.SystemAssignedIdentity.PrincipalId.Equals(Guid.Empty));
- }
+ }
}
[TestCase]
@@ -258,7 +259,7 @@ public void TestDeserializerValidSystemAssigned()
ResourceIdentity back = ResourceIdentity.DeserializeResourceIdentity(identityJsonProperty.Value);
Assert.IsTrue("22fddec1-8b9f-49dc-bd72-ddaf8f215577".Equals(back.SystemAssignedIdentity.PrincipalId.ToString()));
Assert.IsTrue("72f988bf-86f1-41af-91ab-2d7cd011db47".Equals(back.SystemAssignedIdentity.TenantId.ToString()));
- Assert.IsTrue(back.UserAssignedIdentities.Count == 0);
+ Assert.IsTrue(back.UserAssignedIdentities.Count == 0);
}
[TestCase]
@@ -285,22 +286,12 @@ public void TestSerializerValidSystemAndUser()
string user = "{\"clientId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\",\"principalId\":\"de29bab1-49e1-4705-819b-4dfddceaaa98\"}";
string expected = "{\"identity\":{" +
system + "," +
- "\"kind\":\"SystemAssigned, UserAssigned\"," +
+ "\"type\":\"SystemAssigned, UserAssigned\"," +
"\"userAssignedIdentities\":" +
"{" + "\"/subscriptions/6b085460-5f21-477e-ba44-1035046e9101/resourceGroups/nbhatia_test/providers/Microsoft.Web/sites/autoreport\":" +
user + "}}}";
- string actual = "";
- using (Stream stream = new MemoryStream())
- {
- using (StreamReader streamReader = new StreamReader(stream))
- {
- var writer = new Utf8JsonWriter(stream);
- ResourceIdentity.Serialize(writer, identity);
- stream.Seek(0, SeekOrigin.Begin);
- actual = streamReader.ReadToEnd();
- }
- }
- Assert.AreEqual(expected, actual);
+
+ JsonAsserts.AssertSerialization(expected, identity);
}
[TestCase]
@@ -318,24 +309,14 @@ public void TestSerializerValidSystemAndMultUser()
string user2 = "{\"clientId\":\"72f988bf-86f1-41af-91ab-2d7cd011cb47\",\"principalId\":\"de29bab1-49e1-4705-819b-4dfddcebaa98\"}";
string expected = "{\"identity\":{" +
system + "," +
- "\"kind\":\"SystemAssigned, UserAssigned\"," +
+ "\"type\":\"SystemAssigned, UserAssigned\"," +
"\"userAssignedIdentities\":" +
"{" + "\"/subscriptions/6b085460-5f21-477e-ba44-1035046e9101/resourceGroups/nbhatia_test/providers/Microsoft.Web/sites/autoreport1\":" +
user + "," +
"\"/subscriptions/6b085460-5f21-477e-ba44-1035046e9101/resourceGroups/nbhatia_test/providers/Microsoft.Web/sites/autoreport2\":" +
user2 + "}}}";
- string actual = "";
- using (Stream stream = new MemoryStream())
- {
- using (StreamReader streamReader = new StreamReader(stream))
- {
- var writer = new Utf8JsonWriter(stream);
- ResourceIdentity.Serialize(writer, identity);
- stream.Seek(0, SeekOrigin.Begin);
- actual = streamReader.ReadToEnd();
- }
- }
- Assert.AreEqual(expected, actual);
+
+ JsonAsserts.AssertSerialization(expected, identity);
}
[TestCase]
@@ -346,19 +327,9 @@ public void TestSerializerValidSystemOnly()
string system = "\"principalId\":\"de29bab1-49e1-4705-819b-4dfddceaaa98\",\"tenantId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\"";
string expected = "{\"identity\":{" +
system + "," +
- "\"kind\":\"SystemAssigned\"}}";
- string actual = "";
- using (Stream stream = new MemoryStream())
- {
- using (StreamReader streamReader = new StreamReader(stream))
- {
- var writer = new Utf8JsonWriter(stream);
- ResourceIdentity.Serialize(writer, identity);
- stream.Seek(0, SeekOrigin.Begin);
- actual = streamReader.ReadToEnd();
- }
- }
- Assert.AreEqual(expected, actual);
+ "\"type\":\"SystemAssigned\"}}";
+
+ JsonAsserts.AssertSerialization(expected, identity);
}
[TestCase]
@@ -372,22 +343,12 @@ public void TestSerializerValidUserEmptySystem()
string user = "{\"clientId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\",\"principalId\":\"de29bab1-49e1-4705-819b-4dfddceaaa98\"}";
string expected = "{\"identity\":{" +
system + "," +
- "\"kind\":\"SystemAssigned, UserAssigned\"," +
+ "\"type\":\"SystemAssigned, UserAssigned\"," +
"\"userAssignedIdentities\":" +
"{" + "\"/subscriptions/6b085460-5f21-477e-ba44-1035046e9101/resourceGroups/nbhatia_test/providers/Microsoft.Web/sites/autoreport\":" +
user + "}}}";
- string actual = "";
- using (Stream stream = new MemoryStream())
- {
- using (StreamReader streamReader = new StreamReader(stream))
- {
- var writer = new Utf8JsonWriter(stream);
- ResourceIdentity.Serialize(writer, identity);
- stream.Seek(0, SeekOrigin.Begin);
- actual = streamReader.ReadToEnd();
- }
- }
- Assert.AreEqual(expected, actual);
+
+ JsonAsserts.AssertSerialization(expected, identity);
}
[TestCase]
@@ -399,22 +360,12 @@ public void TestSerializerValidUserNullSystem()
ResourceIdentity identity = new ResourceIdentity(dict1, false);
string user = "{\"clientId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\",\"principalId\":\"de29bab1-49e1-4705-819b-4dfddceaaa98\"}";
string expected = "{\"identity\":{" +
- "\"kind\":\"UserAssigned\"," +
+ "\"type\":\"UserAssigned\"," +
"\"userAssignedIdentities\":" +
"{" + "\"/subscriptions/6b085460-5f21-477e-ba44-1035046e9101/resourceGroups/nbhatia_test/providers/Microsoft.Web/sites/autoreport\":" +
user + "}}}";
- string actual = "";
- using (Stream stream = new MemoryStream())
- {
- using (StreamReader streamReader = new StreamReader(stream))
- {
- var writer = new Utf8JsonWriter(stream);
- ResourceIdentity.Serialize(writer, identity);
- stream.Seek(0, SeekOrigin.Begin);
- actual = streamReader.ReadToEnd();
- }
- }
- Assert.AreEqual(expected, actual);
+
+ JsonAsserts.AssertSerialization(expected, identity);
}
[TestCase]
@@ -422,39 +373,25 @@ public void TestSerializerValidIdentityNull()
{
ResourceIdentity identity = new ResourceIdentity();
string expected = "{\"identity\":\"null\"}";
- string actual = "";
- using (Stream stream = new MemoryStream())
- {
- using (StreamReader streamReader = new StreamReader(stream))
- {
- var writer = new Utf8JsonWriter(stream);
- ResourceIdentity.Serialize(writer, identity);
- stream.Seek(0, SeekOrigin.Begin);
- actual = streamReader.ReadToEnd();
- }
- }
- Assert.AreEqual(expected, actual);
+ JsonAsserts.AssertSerialization(expected, identity);
}
[TestCase]
public void TestSerializerInvalidNullWriter()
{
ResourceIdentity identity = new ResourceIdentity();
- using (Stream stream = new MemoryStream())
- {
- Assert.Throws(delegate { ResourceIdentity.Serialize(null, identity); });
- }
+ var serializable = identity as IUtf8JsonSerializable;
+ Assert.Throws(delegate
+ { serializable.Write(null); });
}
[TestCase]
public void TestSerializerInvalidNullIdentity()
{
ResourceIdentity identity = null;
- using (Stream stream = new MemoryStream())
- {
- var writer = new Utf8JsonWriter(stream);
- Assert.Throws(delegate { ResourceIdentity.Serialize(writer, identity); });
- }
+ Assert.Throws(delegate
+ { JsonAsserts.AssertSerializes(identity); });
}
+
}
}
diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/JsonAsserts.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/JsonAsserts.cs
new file mode 100644
index 000000000000..82ec2d9ed082
--- /dev/null
+++ b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/JsonAsserts.cs
@@ -0,0 +1,37 @@
+using System.IO;
+using System.Text;
+using System.Text.Json;
+using Azure.Core;
+using NUnit.Framework;
+
+namespace Azure.ResourceManager.Core.Tests
+{
+ internal static class JsonAsserts
+ {
+ public static void AssertSerialization(string expected, IUtf8JsonSerializable serializable)
+ {
+ using var memoryStream = new MemoryStream();
+
+ using (var writer = new Utf8JsonWriter(memoryStream))
+ {
+ serializable.Write(writer);
+ }
+
+ var text = Encoding.UTF8.GetString(memoryStream.ToArray());
+
+ Assert.AreEqual(expected, text);
+ }
+
+ public static JsonElement AssertSerializes(IUtf8JsonSerializable serializable)
+ {
+ using var memoryStream = new MemoryStream();
+
+ using (var writer = new Utf8JsonWriter(memoryStream))
+ {
+ serializable.Write(writer);
+ }
+
+ return JsonDocument.Parse(memoryStream.ToArray()).RootElement;
+ }
+ }
+}
diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/PropertyReferenceTypeTests.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/PropertyReferenceTypeTests.cs
index e78c36d909b7..d098ca8f02de 100644
--- a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/PropertyReferenceTypeTests.cs
+++ b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/PropertyReferenceTypeTests.cs
@@ -32,7 +32,7 @@ public void ValidateSerializationConstructor()
var serializationCtor = refType.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
.Where(c => HasAttribute(c.GetCustomAttributes(false), SerializationConstructor)).FirstOrDefault();
Assert.IsNotNull(serializationCtor);
- Assert.IsTrue(serializationCtor.IsPublic, $"Serialization ctor for {refType.Name} should not be public");
+ Assert.IsFalse(serializationCtor.IsPublic, $"Serialization ctor for {refType.Name} should not be public");
}
}
diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/SystemAssignedIdentityTests.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/SystemAssignedIdentityTests.cs
index 15eac57eb477..5e7df2cf9914 100644
--- a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/SystemAssignedIdentityTests.cs
+++ b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/SystemAssignedIdentityTests.cs
@@ -1,4 +1,5 @@
-using Azure.Core.TestFramework;
+using Azure.Core;
+using Azure.Core.TestFramework;
using NUnit.Framework;
using System;
using System.IO;
@@ -81,7 +82,7 @@ public void EqualsMethodTrue(string tenantId1, string principalId1, string tenan
[TestCase(null, null, "72f988bf-86f1-41af-91ab-2d7cd011db47", "de29bab1-49e1-4705-819b-4dfddceaaa98")]
[TestCase("72f988bf-86f1-41af-91ab-2d7cd011db47", "de29bab1-49e1-4705-819b-4dfddceaaa98", null, null)]
- [TestCase("72f988bf-86f1-41af-91ab-2d7cd011db47", "de29bab1-49e1-4705-819b-4dfddceaaa98", "72f988bf-86f1-41af-91ab-2d7cd011db44", "de29bab1-49e1-4705-819b-4dfddceaaa94")]
+ [TestCase("72f988bf-86f1-41af-91ab-2d7cd011db47", "de29bab1-49e1-4705-819b-4dfddceaaa98", "72f988bf-86f1-41af-91ab-2d7cd011db44", "de29bab1-49e1-4705-819b-4dfddceaaa94")]
[TestCase("72f988bf-86f1-41af-91ab-2d7cd011db47", "de29bab1-49e1-4705-819b-4dfddceaaa93", "72f988bf-86f1-41af-91ab-2d7cd011db47", "de29bab1-49e1-4705-819b-4dfddceaaa91")]
[TestCase("72f988bf-86f1-41af-91ab-2d7cd011db49", "de29bab1-49e1-4705-819b-4dfddceaaa91", "72f988bf-86f1-41af-91ab-2d7cd011db47", "de29bab1-49e1-4705-819b-4dfddceaaa91")]
public void EqualsMethodFalse(string tenantId1, string principalId1, string tenantId2, string principalId2)
@@ -123,7 +124,7 @@ public void EqualsMethodOneIdentityNull()
SystemAssignedIdentity identity1 = new SystemAssignedIdentity();
SystemAssignedIdentity identity2 = null;
Assert.IsFalse(identity1.Equals(identity2));
- }
+ }
[TestCase]
public void CompareToMethodBothIdentitiesEmpty()
@@ -158,14 +159,14 @@ private static string GetFileText(string filename)
public void TestDeserializerDefaultJson()
{
JsonElement invalid = default(JsonElement);
- Assert.Throws(delegate { SystemAssignedIdentity.Deserialize(invalid); });
+ Assert.Throws(delegate { SystemAssignedIdentity.DeserializeSystemAssignedIdentity(invalid); });
}
[TestCase]
public void TestDeserializerValid()
{
var identityJsonProperty = DeserializerHelper("SystemAssignedValid.json");
- SystemAssignedIdentity back = SystemAssignedIdentity.Deserialize(identityJsonProperty.Value);
+ SystemAssignedIdentity back = SystemAssignedIdentity.DeserializeSystemAssignedIdentity(identityJsonProperty.Value);
Assert.IsTrue("de29bab1-49e1-4705-819b-4dfddceaaa98".Equals(back.PrincipalId.ToString()));
Assert.IsTrue("72f988bf-86f1-41af-91ab-2d7cd011db47".Equals(back.TenantId.ToString()));
}
@@ -177,7 +178,7 @@ public void TestDeserializerValidExtraField()
JsonDocument document = JsonDocument.Parse(json);
JsonElement rootElement = document.RootElement;
var identityJsonProperty = rootElement.EnumerateObject().ElementAt(1);
- SystemAssignedIdentity back = SystemAssignedIdentity.Deserialize(identityJsonProperty.Value);
+ SystemAssignedIdentity back = SystemAssignedIdentity.DeserializeSystemAssignedIdentity(identityJsonProperty.Value);
Assert.IsTrue("de29bab1-49e1-4705-819b-4dfddceaaa98".Equals(back.PrincipalId.ToString()));
Assert.IsTrue("72f988bf-86f1-41af-91ab-2d7cd011db47".Equals(back.TenantId.ToString()));
}
@@ -186,7 +187,7 @@ public void TestDeserializerValidExtraField()
public void TestDeserializerBothValuesNull()
{
var identityJsonProperty = DeserializerHelper("SystemAssignedBothValuesNull.json");
- var back = SystemAssignedIdentity.Deserialize(identityJsonProperty.Value);
+ var back = SystemAssignedIdentity.DeserializeSystemAssignedIdentity(identityJsonProperty.Value);
Assert.IsNull(back);
}
@@ -194,35 +195,35 @@ public void TestDeserializerBothValuesNull()
public void TestDeserializerBothEmptyString()
{
var identityJsonProperty = DeserializerHelper("SystemAssignedBothEmptyString.json");
- Assert.Throws(delegate { SystemAssignedIdentity.Deserialize(identityJsonProperty.Value); });
+ Assert.Throws(delegate { SystemAssignedIdentity.DeserializeSystemAssignedIdentity(identityJsonProperty.Value); });
}
[TestCase]
public void TestDeserializerOneEmptyString()
{
var identityJsonProperty = DeserializerHelper("SystemAssignedOneEmptyString.json");
- Assert.Throws(delegate { SystemAssignedIdentity.Deserialize(identityJsonProperty.Value); });
+ Assert.Throws(delegate { SystemAssignedIdentity.DeserializeSystemAssignedIdentity(identityJsonProperty.Value); });
}
[TestCase]
public void TestDeserializerTenantIdValueNull()
{
var identityJsonProperty = DeserializerHelper("SystemAssignedOneValueNull.json");
- Assert.Throws(delegate { SystemAssignedIdentity.Deserialize(identityJsonProperty.Value); });
+ Assert.Throws(delegate { SystemAssignedIdentity.DeserializeSystemAssignedIdentity(identityJsonProperty.Value); });
}
[TestCase]
public void TestDeserializerPrincipalIdValueNull()
{
var identityJsonProperty = DeserializerHelper("SystemAssignedOneOtherValueNull.json");
- Assert.Throws(delegate { SystemAssignedIdentity.Deserialize(identityJsonProperty.Value); });
+ Assert.Throws(delegate { SystemAssignedIdentity.DeserializeSystemAssignedIdentity(identityJsonProperty.Value); });
}
[TestCase]
public void TestDeserializerTenantIdInvalid()
{
var identityJsonProperty = DeserializerHelper("SystemAssignedInvalid.json");
- Assert.Throws(delegate { SystemAssignedIdentity.Deserialize(identityJsonProperty.Value); });
+ Assert.Throws(delegate { SystemAssignedIdentity.DeserializeSystemAssignedIdentity(identityJsonProperty.Value); });
}
[TestCase]
@@ -236,7 +237,8 @@ public void TestSerializerValidIdentity()
{
var writer = new Utf8JsonWriter(stream);
writer.WriteStartObject();
- SystemAssignedIdentity.Serialize(writer, systemAssignedIdentity);
+ var serializable = systemAssignedIdentity as IUtf8JsonSerializable;
+ serializable.Write(writer);
writer.WriteEndObject();
writer.Flush();
stream.Seek(0, SeekOrigin.Begin);
@@ -258,7 +260,8 @@ public void TestSerializerEmptyIdentity()
{
var writer = new Utf8JsonWriter(stream);
writer.WriteStartObject();
- SystemAssignedIdentity.Serialize(writer, systemAssignedIdentity);
+ var serializable = systemAssignedIdentity as IUtf8JsonSerializable;
+ serializable.Write(writer);
writer.WriteEndObject();
writer.Flush();
stream.Seek(0, SeekOrigin.Begin);
@@ -273,22 +276,15 @@ public void TestSerializerEmptyIdentity()
public void TestSerializerNullIdentity()
{
SystemAssignedIdentity systemAssignedIdentity = null;
- using (Stream stream = new MemoryStream())
- {
- var writer = new Utf8JsonWriter(stream);
- writer.WriteStartObject();
- Assert.Throws(delegate { SystemAssignedIdentity.Serialize(writer, systemAssignedIdentity); });
- }
+ Assert.Throws(delegate { JsonAsserts.AssertSerializes(systemAssignedIdentity); });
}
[TestCase]
public void TestSerializerNullWriter()
{
SystemAssignedIdentity systemAssignedIdentity = new SystemAssignedIdentity();
- using (Stream stream = new MemoryStream())
- {
- Assert.Throws(delegate { SystemAssignedIdentity.Serialize(null, systemAssignedIdentity); });
- }
+ var serializable = systemAssignedIdentity as IUtf8JsonSerializable;
+ Assert.Throws(delegate { serializable.Write(null); });
}
[TestCase]
diff --git a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/UserAssignedIdentityTests.cs b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/UserAssignedIdentityTests.cs
index dfe7e5b17503..981269939a90 100644
--- a/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/UserAssignedIdentityTests.cs
+++ b/sdk/resourcemanager/Azure.ResourceManager.Core/tests/Unit/UserAssignedIdentityTests.cs
@@ -1,7 +1,9 @@
-using NUnit.Framework;
+using Azure.Core;
+using NUnit.Framework;
using System;
using System.IO;
using System.Linq;
+using System.Text;
using System.Text.Json;
namespace Azure.ResourceManager.Core.Tests
@@ -24,7 +26,7 @@ public void CompareTo(int answer, string clientId1, string principalId1, string
{
UserAssignedIdentity identity1 = new UserAssignedIdentity(new Guid(clientId1), new Guid(principalId1));
UserAssignedIdentity identity2 = new UserAssignedIdentity(new Guid(clientId2), new Guid(principalId2));
-
+
Assert.AreEqual(answer, identity1.CompareTo(identity2));
Assert.AreEqual(answer * -1, identity2.CompareTo(identity1));
}
@@ -68,7 +70,7 @@ public JsonElement DeserializerHelper(string filename)
var json = GetFileText(filename);
JsonDocument document = JsonDocument.Parse(json);
JsonElement rootElement = document.RootElement;
- var properties = rootElement.EnumerateObject().First().Value;
+ var properties = rootElement.EnumerateObject().First().Value;
foreach (var property in properties.EnumerateObject())
{
if (property.NameEquals("userAssignedIdentities"))
@@ -91,14 +93,15 @@ private static string GetFileText(string filename)
public void TestDeserializerDefaultJson()
{
JsonElement invalid = default(JsonElement);
- Assert.Throws(delegate { UserAssignedIdentity.Deserialize(invalid); });
+ Assert.Throws(delegate
+ { UserAssignedIdentity.DeserializeUserAssignedIdentity(invalid); });
}
[TestCase]
public void TestDeserializerValid()
{
var identityJsonProperty = DeserializerHelper("UserAssignedValid.json");
- UserAssignedIdentity back = UserAssignedIdentity.Deserialize(identityJsonProperty);
+ UserAssignedIdentity back = UserAssignedIdentity.DeserializeUserAssignedIdentity(identityJsonProperty);
Assert.IsTrue("3beb288c-c3f9-4300-896f-02fbf175b6be".Equals(back.ClientId.ToString()));
Assert.IsTrue("d0416856-d6cf-466d-8d64-ddc8d7782096".Equals(back.PrincipalId.ToString()));
}
@@ -107,7 +110,7 @@ public void TestDeserializerValid()
public void TestDeserializerValidExtraField()
{
var identityJsonProperty = DeserializerHelper("UserAssignedExtraField.json");
- UserAssignedIdentity back = UserAssignedIdentity.Deserialize(identityJsonProperty);
+ UserAssignedIdentity back = UserAssignedIdentity.DeserializeUserAssignedIdentity(identityJsonProperty);
Assert.IsTrue("3beb288c-c3f9-4300-896f-02fbf175b6be".Equals(back.ClientId.ToString()));
Assert.IsTrue("d0416856-d6cf-466d-8d64-ddc8d7782096".Equals(back.PrincipalId.ToString()));
}
@@ -116,7 +119,7 @@ public void TestDeserializerValidExtraField()
public void TestDeserializerBothValuesNull()
{
var identityJsonProperty = DeserializerHelper("UserAssignedBothValuesNull.json");
- var back = UserAssignedIdentity.Deserialize(identityJsonProperty);
+ var back = UserAssignedIdentity.DeserializeUserAssignedIdentity(identityJsonProperty);
Assert.IsNull(back);
}
@@ -124,35 +127,40 @@ public void TestDeserializerBothValuesNull()
public void TestDeserializerBothEmptyString()
{
var identityJsonProperty = DeserializerHelper("UserAssignedBothEmptyString.json");
- Assert.Throws(delegate { UserAssignedIdentity.Deserialize(identityJsonProperty); });
+ Assert.Throws(delegate
+ { UserAssignedIdentity.DeserializeUserAssignedIdentity(identityJsonProperty); });
}
[TestCase]
public void TestDeserializerOneEmptyString()
{
var identityJsonProperty = DeserializerHelper("UserAssignedOneEmptyString.json");
- Assert.Throws(delegate { UserAssignedIdentity.Deserialize(identityJsonProperty); });
+ Assert.Throws(delegate
+ { UserAssignedIdentity.DeserializeUserAssignedIdentity(identityJsonProperty); });
}
[TestCase]
public void TestDeserializerClientIdValueNull()
{
var identityJsonProperty = DeserializerHelper("UserAssignedOneValueNull.json");
- Assert.Throws(delegate { UserAssignedIdentity.Deserialize(identityJsonProperty); });
+ Assert.Throws(delegate
+ { UserAssignedIdentity.DeserializeUserAssignedIdentity(identityJsonProperty); });
}
[TestCase]
public void TestDeserializerPrincipalIdValueNull()
{
var identityJsonProperty = DeserializerHelper("UserAssignedOneOtherValueNull.json");
- Assert.Throws(delegate { UserAssignedIdentity.Deserialize(identityJsonProperty); });
+ Assert.Throws(delegate
+ { UserAssignedIdentity.DeserializeUserAssignedIdentity(identityJsonProperty); });
}
[TestCase]
public void TestDeserializerClientIdInvalid()
{
var identityJsonProperty = DeserializerHelper("UserAssignedInvalid.json");
- Assert.Throws(delegate { UserAssignedIdentity.Deserialize(identityJsonProperty); });
+ Assert.Throws(delegate
+ { UserAssignedIdentity.DeserializeUserAssignedIdentity(identityJsonProperty); });
}
[TestCase]
@@ -167,7 +175,8 @@ public void TestDeserializerInvalidMultipleIdentities()
{
foreach (var keyValuePair in property.Value.EnumerateObject())
{
- Assert.Throws(delegate { UserAssignedIdentity.Deserialize(keyValuePair.Value); });
+ Assert.Throws(delegate
+ { UserAssignedIdentity.DeserializeUserAssignedIdentity(keyValuePair.Value); });
}
}
}
@@ -187,7 +196,7 @@ public void TestDeserializerValidMultipleIdentities()
{
foreach (var keyValuePair in property.Value.EnumerateObject())
{
- identities[count] = UserAssignedIdentity.Deserialize(keyValuePair.Value);
+ identities[count] = UserAssignedIdentity.DeserializeUserAssignedIdentity(keyValuePair.Value);
count++;
}
}
@@ -202,40 +211,26 @@ public void TestDeserializerValidMultipleIdentities()
public void TestSerializerValidIdentity()
{
UserAssignedIdentity userAssignedIdentity = new UserAssignedIdentity(new Guid("72f988bf-86f1-41af-91ab-2d7cd011db47"), new Guid("de29bab1-49e1-4705-819b-4dfddceaaa98"));
- string actual = "";
- using (Stream stream = new MemoryStream())
- {
- using (StreamReader streamReader = new StreamReader(stream))
- {
- var writer = new Utf8JsonWriter(stream);
- UserAssignedIdentity.Serialize(writer, userAssignedIdentity);
- stream.Seek(0, SeekOrigin.Begin);
- actual = streamReader.ReadToEnd();
- }
- }
string expected = "{\"clientId\":\"72f988bf-86f1-41af-91ab-2d7cd011db47\",\"principalId\":\"de29bab1-49e1-4705-819b-4dfddceaaa98\"}";
- Assert.AreEqual(expected, actual);
+
+ JsonAsserts.AssertSerialization(expected, userAssignedIdentity);
}
[TestCase]
public void TestSerializerNullIdentity()
{
UserAssignedIdentity userAssignedIdentity = null;
- using (Stream stream = new MemoryStream())
- {
- var writer = new Utf8JsonWriter(stream);
- Assert.Throws(delegate { UserAssignedIdentity.Serialize(writer, userAssignedIdentity); });
- }
+ Assert.Throws(delegate
+ { JsonAsserts.AssertSerializes(userAssignedIdentity); });
}
[TestCase]
public void TestSerializerNullWriter()
{
UserAssignedIdentity userAssignedIdentity = new UserAssignedIdentity(new Guid("72f988bf-86f1-41af-91ab-2d7cd011db47"), new Guid("de29bab1-49e1-4705-819b-4dfddceaaa98"));
- using (Stream stream = new MemoryStream())
- {
- Assert.Throws(delegate { UserAssignedIdentity.Serialize(null, userAssignedIdentity); });
- }
+ var serializable = userAssignedIdentity as IUtf8JsonSerializable;
+ Assert.Throws(delegate
+ { serializable.Write(null); });
}
[TestCase]
@@ -243,25 +238,22 @@ public void TestSerializerArray()
{
UserAssignedIdentity userAssignedIdentity1 = new UserAssignedIdentity(new Guid("3beb288c-c3f9-4300-896f-02fbf175b6be"), new Guid("d0416856-d6cf-466d-8d64-ddc8d7782096"));
UserAssignedIdentity userAssignedIdentity2 = new UserAssignedIdentity(new Guid("fbb39377-ff46-4a82-8c47-42d573180482"), new Guid("6d63ce43-c3ac-4b03-933d-4bc31eae50b2"));
- string actual = "";
UserAssignedIdentity[] identities = { userAssignedIdentity1, userAssignedIdentity2 };
- using (Stream stream = new MemoryStream())
+ using var memoryStream = new MemoryStream();
+ foreach (var identity in identities)
{
- using (StreamReader streamReader = new StreamReader(stream))
+ var serializable = identity as IUtf8JsonSerializable;
+ using (var writer = new Utf8JsonWriter(memoryStream))
{
- foreach (var identity in identities)
- {
- var writer = new Utf8JsonWriter(stream);
- UserAssignedIdentity.Serialize(writer, identity);
- stream.Seek(0, SeekOrigin.Begin);
- actual = streamReader.ReadToEnd();
- }
+ serializable.Write(writer);
}
}
string expected = "{\"clientId\":\"3beb288c-c3f9-4300-896f-02fbf175b6be\"," +
"\"principalId\":\"d0416856-d6cf-466d-8d64-ddc8d7782096\"}" +
"{\"clientId\":\"fbb39377-ff46-4a82-8c47-42d573180482\"," +
"\"principalId\":\"6d63ce43-c3ac-4b03-933d-4bc31eae50b2\"}";
+
+ var actual = Encoding.UTF8.GetString(memoryStream.ToArray());
Assert.AreEqual(expected, actual);
}