/// <summary>
        /// Verifies the extension rule.
        /// </summary>
        /// <param name="context">The Interop service context</param>
        /// <param name="info">out parameter to return violation information when rule does not pass</param>
        /// <returns>true if rule passes; false otherwise</returns>
        public override bool?Verify(ServiceContext context, out ExtensionRuleViolationInfo info)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            bool?passed = null;

            info = null;
            HttpStatusCode?statusCode = VerificationHelper.VerifySelect(context, out passed, out info);

            if (info != null)
            {
                info.SetDetailsName(this.Name);
            }

            return(passed);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Verifies the extension rule.
        /// </summary>
        /// <param name="context">The Interop service context</param>
        /// <param name="info">out parameter to return violation information when rule does not pass</param>
        /// <returns>true if rule passes; false otherwise</returns>
        public override bool?Verify(ServiceContext context, out ExtensionRuleViolationInfo info)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            bool?passed = true;

            info = null;
            bool?result;
            List <ExtensionRuleResultDetail> details = new List <ExtensionRuleResultDetail>();

            // call helper method
            ExtensionRuleViolationInfo info1        = null;
            HttpStatusCode?            selectResult = VerificationHelper.VerifySelect(context, out result, out info1);

            if (info1 != null)
            {
                info1.SetDetailsName(this.Name);
                details.AddRange(info1.Details);
            }
            if (false == result || !(selectResult.HasValue && (selectResult.Value == HttpStatusCode.OK || selectResult.Value == HttpStatusCode.NotImplemented)))
            {
                passed = false;
            }

            ExtensionRuleViolationInfo info2        = null;
            HttpStatusCode?            searchResult = VerificationHelper.VerifySearch(context, out result, out info2);

            if (info2 != null)
            {
                info2.SetDetailsName(this.Name);
                details.AddRange(info2.Details);
            }
            if (false == result || !(searchResult.HasValue && (searchResult.Value == HttpStatusCode.OK || searchResult.Value == HttpStatusCode.NotImplemented)))
            {
                passed = false;
            }

            ExtensionRuleViolationInfo info3        = null;
            HttpStatusCode?            filterResult = VerificationHelper.VerifyLambdaOperators(context, LambdaOperatorType.All, out result, out info3);

            if (info3 != null)
            {
                info3.SetDetailsName(this.Name);
                details.AddRange(info3.Details);
            }
            if (false == result || !(filterResult.HasValue && (filterResult.Value == HttpStatusCode.OK || filterResult.Value == HttpStatusCode.NotImplemented)))
            {
                passed = false;
            }

            ExtensionRuleViolationInfo info4       = null;
            HttpStatusCode?            countResult = VerificationHelper.VerifyCount(context, out result, out info4);

            if (info4 != null)
            {
                info4.SetDetailsName(this.Name);
                details.AddRange(info4.Details);
            }
            if (false == result || !(countResult.HasValue && (countResult.Value == HttpStatusCode.OK || countResult.Value == HttpStatusCode.NotImplemented)))
            {
                passed = false;
            }

            ExtensionRuleViolationInfo info5      = null;
            HttpStatusCode?            skipResult = VerificationHelper.VerifySkip(context, out result, out info5);

            if (info5 != null)
            {
                info5.SetDetailsName(this.Name);
                details.AddRange(info5.Details);
            }
            if (false == result || !(skipResult.HasValue && (skipResult.Value == HttpStatusCode.OK || skipResult.Value == HttpStatusCode.NotImplemented)))
            {
                passed = false;
            }

            ExtensionRuleViolationInfo info6     = null;
            HttpStatusCode?            topResult = VerificationHelper.VerifyTop(context, out result, out info6);

            if (info6 != null)
            {
                info6.SetDetailsName(this.Name);
                details.AddRange(info6.Details);
            }
            if (false == result || !(topResult.HasValue && (topResult.Value == HttpStatusCode.OK || topResult.Value == HttpStatusCode.NotImplemented)))
            {
                passed = false;
            }

            ExtensionRuleViolationInfo info7         = null;
            HttpStatusCode?            orderbyResult = VerificationHelper.VerifySortEntities(context, SortedType.ASC, out result, out info7);

            if (info7 != null)
            {
                info7.SetDetailsName(this.Name);
                details.AddRange(info7.Details);
            }
            if (false == result || !(orderbyResult.HasValue && (orderbyResult.Value == HttpStatusCode.OK || orderbyResult.Value == HttpStatusCode.NotImplemented)))
            {
                passed = false;
            }

            if (passed == null)
            {
                passed = true;
            }

            info = new ExtensionRuleViolationInfo(this.ErrorMessage, context.Destination, context.ResponsePayload, details);
            return(passed);
        }