예제 #1
0
        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>());
        }
예제 #4
0
        private static PermissionBasedValidator CreateValidator(IList <string> identities, Dictionary <string, PermissionSet> getPermissions)
        {
            TestPermissionsProvider permissions = new TestPermissionsProvider(identities, getPermissions);

            return(new PermissionBasedValidator(new[] { permissions }));
        }