public void CommonPermission_GetOperationPermission_InvlidOperation_Test()
        {
            //初始化
            Role role = new Role();
            AccessObject accessObject = AccessObjectFactory.CreateAcessObject(1, false);
            CommonPermissionConfig config = new CommonPermissionConfig(role, accessObject);

            CommonPermission commonPermission = new CommonPermission(accessObject);

            //操作
            OperationPermission operationPermission = commonPermission.GetOperationPermission(new Operation());
        }
        public void CommonPermission_GetOperationPermission_Test()
        {
            //初始化
            Role role = new Role();
            AccessObject accessObject = AccessObjectFactory.CreateAcessObject(1, false);
            CommonPermissionConfig config = new CommonPermissionConfig(role, accessObject);
            var operation = accessObject.Operations.First();

            CommonPermission commonPermission = new CommonPermission(accessObject);

            //操作
            OperationPermission operationPermission = commonPermission.GetOperationPermission(operation);

            //验证
            Assert.IsNotNull(operationPermission);
            Assert.AreSame(operation, operationPermission.Operation);
        }
        public void CommonPermission_PermissionCalculate_Test()
        {
            //初始化
            Role role = new Role();
            AccessObject accessObject = AccessObjectFactory.CreateAcessObject(1, false);
            CommonPermissionConfig config = new CommonPermissionConfig(role, accessObject);
            var operation = accessObject.Operations.First();
            config.SetOperationPermission(operation, true, false);

            CommonPermission commonPermission = new CommonPermission(accessObject);

            //操作
            commonPermission.PermissionCalculate(config);

            //验证
            Assert.AreSame(config, commonPermission.PermissionConfigs.First());
            Assert.IsTrue(commonPermission.HavePermission(operation));
            Assert.IsFalse(commonPermission.HavePermission(
                accessObject.Operations.First(o => o != operation)));
        }
        public void CommonPermission_Constructor_With_PermissionConfigs_Test()
        {
            //初始化
            Role role = new Role();
            AccessObject accessObject = AccessObjectFactory.CreateAcessObject(1, false);
            CommonPermissionConfig config = new CommonPermissionConfig(role, accessObject);

            var operation = accessObject.Operations.First();
            config.SetOperationPermission(operation, true, false);

            CommonPermission commonPermission = new CommonPermission(
                accessObject,
                new CommonPermissionConfig[] { config });

            //验证
            Assert.AreEqual(accessObject.Operations.Count(), commonPermission.OperationPermissions.Count());
            Assert.AreSame(config, commonPermission.PermissionConfigs.First());
            Assert.IsTrue(commonPermission.HavePermission(operation));
            Assert.IsFalse(commonPermission.HavePermission(
                accessObject.Operations.First(o => o != operation)));
        }
        public void CommonPermission_PermissionCalculate_InvalidConfigAccessObject_Test()
        {
            //初始化
            Role role = new Role();
            AccessObject accessObject = AccessObjectFactory.CreateAcessObject(1, false);
            CommonPermissionConfig config = new CommonPermissionConfig(role, accessObject);
            var operation = accessObject.Operations.First();
            config.SetOperationPermission(operation, true, false);

            CommonPermission commonPermission = new CommonPermission(accessObject);

            //操作
            commonPermission.PermissionCalculate(new CommonPermissionConfig());
        }
 /// <summary>
 /// 根据权限配置进行计算权限
 /// </summary>
 /// <param name="permissionConfig">权限配置</param>
 public void PermissionCalculate(CommonPermissionConfig permissionConfig)
 {
     PermissionCalculate(permissionConfig, true);
 }
        /// <summary>
        /// 根据权限配置进行计算权限
        /// </summary>
        /// <param name="permissionConfig">权限配置</param>
        /// <param name="append">是否添加配置对象到配置对象列表</param>
        private void PermissionCalculate(CommonPermissionConfig permissionConfig, bool append)
        {
            Guidance.ArgumentNotNull(permissionConfig, "permissionConfig");

            if (permissionConfig.AccessObject != AccessObject)
            {
                throw new ArgumentException(
                    Resource.Messages.exception_CommonPermissionPermissionCalculateInvalidAccessObject,
                    "permissionConfig");
            }

            //根据权限配置对象更新操作的权限
            foreach (var operationPermissionConfig in permissionConfig.OperationPermissionConfigs)
            {
                if (_operationPermissions.ContainsKey(operationPermissionConfig.Operation.Id))
                {
                    _operationPermissions[operationPermissionConfig.Operation.Id]
                        .PermissionCalculate(operationPermissionConfig);
                }
                else
                {
                    throw new InvalidOperationException(
                        Resource.Messages.exception_CommonPermissionPermissionCalculateInvalidAccessObject);
                }
            }

            if (append)
            {
                //添加配置对象到配置对象列表
                _permissionConfigs.Add(permissionConfig);
            }
        }