public void AsExtended_WhenJsonIsValid_BuildsExtendedVersionOfRule() { var reader = new PolicyRuleReader(SamplePolicies.MinimalPolicy); var extended = reader.AsExtended(); var expectedThen = JObject.FromObject(new { effect = "deny" }); Assert.IsTrue(extended.Properties().Any(p => p.Name == "id"), "Id property not found"); Assert.IsTrue(extended.Properties().Any(p => p.Name == "if"), "If property not found"); Assert.IsTrue(JObject.DeepEquals(expectedThen, extended["then"])); }
public void AsExtended_WhenJsonIsValid_BuildExtendedVersionOfLogicalNodes() { var reader = new PolicyRuleReader(SamplePolicies.MinimalPolicy); var extended = reader.AsExtended(); var logicalNode = extended["if"] as JObject; Assert.IsTrue(logicalNode.Properties().Any(p => p.Name == "id"), "Id property not found"); Assert.IsTrue(logicalNode.Properties().Any(p => p.Name == "children"), "children property not found"); Assert.AreEqual("logical", logicalNode["nodeType"]); Assert.AreEqual("allof", logicalNode["logicalType"]); }
public void AsExtended_WhenJsonIsValid_BuildExtendedVersionOfConditionNodes() { var reader = new PolicyRuleReader(SamplePolicies.MinimalPolicy); var extended = reader.AsExtended(); var conditionNode = extended["if"]["children"].First() as JObject; Assert.IsTrue(conditionNode.Properties().Any(p => p.Name == "id"), "Id property not found"); Assert.AreEqual("condition", conditionNode["nodeType"]); Assert.AreEqual("equals", conditionNode["conditionType"]); Assert.AreEqual("type", conditionNode["conditionField"]); Assert.AreEqual("Microsoft.Storage/storageAccounts", conditionNode["conditionValue"]); }
private string Parse(string jsonToParse) { if (string.IsNullOrEmpty(jsonToParse)) { throw new InvalidOperationException("No input provided"); } var reader = new PolicyRuleReader(jsonToParse); var rule = reader.AsExtended(); return(rule.ToString()); }