public async Task Validate_Inheritance() { TestPermissionsProvider firstValidator = new TestPermissionsProvider( new string[0], new Dictionary <string, PermissionSet>() { ["/"] = PermissionSet.AllowAll, ["/a/"] = PermissionSet.AllowAll }); TestPermissionsProvider secondValidator = new TestPermissionsProvider( new string[0], new Dictionary <string, PermissionSet>() { ["/"] = PermissionSet.DenyAll, ["/a/"] = PermissionSet.Unset }); // Level 1: / // Allow + Deny = Deny // Level 2: /a/ // Allow + Unset = Allow // Result: Allow PermissionBasedValidator validator = new PermissionBasedValidator(new[] { firstValidator, secondValidator }); ParsedMutation mutation = new ParsedMutation( new AccountStatus[0], new[] { new KeyValuePair <RecordKey, ByteString>(new RecordKey(RecordType.Data, LedgerPath.Parse("/a/"), "a"), ByteString.Parse("aabb")) }); await validator.Validate(mutation, new SignatureEvidence[0], new Dictionary <AccountKey, AccountStatus>()); }
private static PermissionBasedValidator CreateValidator(IList<string> identities, Dictionary<string, PermissionSet> getPermissions) { TestPermissionsProvider permissions = new TestPermissionsProvider(identities, getPermissions); return new PermissionBasedValidator(new[] { permissions }); }
public async Task Validate_Inheritance() { TestPermissionsProvider firstValidator = new TestPermissionsProvider( new string[0], new Dictionary<string, PermissionSet>() { ["/"] = PermissionSet.AllowAll, ["/a/"] = PermissionSet.AllowAll }); TestPermissionsProvider secondValidator = new TestPermissionsProvider( new string[0], new Dictionary<string, PermissionSet>() { ["/"] = PermissionSet.DenyAll, ["/a/"] = PermissionSet.Unset }); // Level 1: / // Allow + Deny = Deny // Level 2: /a/ // Allow + Unset = Allow // Result: Allow PermissionBasedValidator validator = new PermissionBasedValidator(new[] { firstValidator, secondValidator }); ParsedMutation mutation = new ParsedMutation( new AccountStatus[0], new[] { new KeyValuePair<RecordKey, ByteString>(new RecordKey(RecordType.Data, LedgerPath.Parse("/a/"), "a"), ByteString.Parse("aabb")) }); await validator.Validate(mutation, new SignatureEvidence[0], new Dictionary<AccountKey, AccountStatus>()); }
private static PermissionBasedValidator CreateValidator(IList <string> identities, Dictionary <string, PermissionSet> getPermissions) { TestPermissionsProvider permissions = new TestPermissionsProvider(identities, getPermissions); return(new PermissionBasedValidator(new[] { permissions })); }