public static bool IsEqual(this IList <AccessPolicyEntry> expected, IList <AccessPolicyEntry> actual) { if (expected == null && actual == null) { return(true); } if (expected == null || actual == null) { return(false); } if (expected.Count != actual.Count) { return(false); } AccessPolicyEntry[] expectedCopy = new AccessPolicyEntry[expected.Count]; expected.CopyTo(expectedCopy, 0); foreach (AccessPolicyEntry a in actual) { var match = expectedCopy.Where(e => e.TenantId == a.TenantId && e.ObjectId == a.ObjectId && e.ApplicationId == a.ApplicationId && ((a.Permissions.Secrets == null && e.Permissions.Secrets == null) || Enumerable.SequenceEqual(a.Permissions.Secrets, e.Permissions.Secrets)) && ((a.Permissions.Keys == null && e.Permissions.Keys == null) || Enumerable.SequenceEqual(a.Permissions.Keys, e.Permissions.Keys)) && ((a.Permissions.Certificates == null && e.Permissions.Certificates == null) || Enumerable.SequenceEqual(a.Permissions.Certificates, e.Permissions.Certificates)) && ((a.Permissions.Storage == null && e.Permissions.Storage == null) || Enumerable.SequenceEqual(a.Permissions.Storage, e.Permissions.Storage)) ).FirstOrDefault(); if (match == null) { return(false); } expectedCopy = expectedCopy.Where(e => e != match).ToArray(); } if (expectedCopy.Length > 0) { return(false); } return(true); }
private bool CompareAccessPolicies(AccessPolicyEntry[] expected, AccessPolicyEntry[] actual) { if (expected == null && actual == null) { return(true); } if (expected == null || actual == null) { return(false); } if (expected.Length != actual.Length) { return(false); } AccessPolicyEntry[] expectedCopy = new AccessPolicyEntry[expected.Length]; expected.CopyTo(expectedCopy, 0); foreach (AccessPolicyEntry a in actual) { var match = expectedCopy.Where(e => e.TenantId == a.TenantId && e.ObjectId == a.ObjectId && e.ApplicationId == a.ApplicationId && ((a.Permissions.Secrets == null && e.Permissions.Secrets == null) || Enumerable.SequenceEqual(e.Permissions.Secrets, a.Permissions.Secrets)) && ((a.Permissions.Keys == null && e.Permissions.Keys == null) || Enumerable.SequenceEqual(a.Permissions.Keys, a.Permissions.Keys)) ).FirstOrDefault(); if (match == null) { return(false); } expectedCopy = expectedCopy.Where(e => e != match).ToArray(); } if (expectedCopy.Length > 0) { return(false); } return(true); }