public virtual void testRevokeAuthPermissions()
        {
            AuthorizationEntity authorization = new AuthorizationEntity(AuthorizationFields.AuthTypeRevoke);

            Assert.IsFalse(authorization.IsPermissionRevoked(Permissions.All));
            IList <Permissions> perms = (authorization.GetPermissions(new Permissions[] { }));

            Assert.AreEqual(0, perms.Count);

            authorization.RemovePermission(Permissions.Read);
            perms = (authorization.GetPermissions(new Permissions[] { }));
            Assert.True(perms.Contains(Permissions.Read));
            Assert.True(perms.Contains(Permissions.All));
            Assert.AreEqual(2, perms.Count);

            try
            {
                authorization.IsPermissionGranted(Permissions.Read);
                Assert.Fail("Exception expected");
            }
            catch (System.InvalidOperationException e)
            {
                AssertTextPresent("ENGINE-03026 Method 'isPermissionGranted' cannot be used for authorization with type 'REVOKE'.", e.Message);
            }
        }
        public virtual void testGlobalAuthPermissions()
        {
            AuthorizationEntity authorization = new AuthorizationEntity(AuthorizationFields.AuthTypeGrant);

            Assert.IsFalse(authorization.IsPermissionGranted(Permissions.All));
            Assert.True(authorization.IsPermissionGranted(Permissions.None));
            IList <Permissions> perms = (authorization.GetPermissions(new Permissions[] { }));

            Assert.True(perms.Contains(Permissions.None));
            Assert.AreEqual(1, perms.Count);

            authorization.AddPermission(Permissions.Read);
            perms = (authorization.GetPermissions(new Permissions[] { }));
            Assert.True(perms.Contains(Permissions.None));
            Assert.True(perms.Contains(Permissions.Read));
            Assert.AreEqual(2, perms.Count);
            Assert.True(authorization.IsPermissionGranted(Permissions.Read));
            Assert.True(authorization.IsPermissionGranted(Permissions.None));     // (none is always granted => you are always authorized to do nothing)

            try
            {
                authorization.IsPermissionRevoked(Permissions.Read);
                Assert.Fail("Exception expected");
            }
            catch (System.InvalidOperationException e)
            {
                AssertTextPresent("ENGINE-03026 Method 'isPermissionRevoked' cannot be used for authorization with type 'GRANT'.", e.Message);
            }
        }