/// <summary>
        /// Verification exception on missing KSI signature
        /// </summary>
        public void TestContextMissingSignature(TestVerificationContext context)
        {
            KsiVerificationException ex = Assert.Throws <KsiVerificationException>(delegate
            {
                Rule.Verify(context);
            }, "Exception expected but non thrown. Rule: " + Rule);

            Assert.That(ex.Message, Does.StartWith("Invalid KSI signature in context: null"), "Unexpected exception message. Rule: " + Rule);
        }
        public void VerifyWithoutSignature()
        {
            KsiVerificationException ex = Assert.Throws <KsiVerificationException>(delegate
            {
                new DefaultVerificationPolicy().Verify(new VerificationContext());
            });

            Assert.That(ex.Message, Does.StartWith("Invalid KSI signature in context: null"));
        }
        /// <summary>
        /// Verification exception on missing publications file
        /// </summary>
        public void TestContextMissingUserPublication(IKsiSignature signature = null)
        {
            TestVerificationContext  context = new TestVerificationContext(signature ?? TestUtil.GetSignature());
            KsiVerificationException ex      = Assert.Throws <KsiVerificationException>(delegate
            {
                Rule.Verify(context);
            });

            Assert.That(ex.Message, Does.StartWith("Invalid user publication in context: null"));
        }
        /// <summary>
        /// Verification exception on missing publications file
        /// </summary>
        public void TestContextMissingPublicationsFile(IKsiSignature signature = null)
        {
            TestVerificationContext  context = new TestVerificationContext(signature ?? TestUtil.GetSignature(Resources.KsiSignature_Ok_With_Publication_Record));
            KsiVerificationException ex      = Assert.Throws <KsiVerificationException>(delegate
            {
                Rule.Verify(context);
            });

            Assert.That(ex.Message, Does.StartWith("Invalid publications file in context: null"));
        }
示例#5
0
        private VerificationResult DoVerification(IVerificationContext context, bool writeLog = true)
        {
            VerificationRule          verificationRule    = FirstRule;
            List <VerificationResult> verificationResults = new List <VerificationResult>();

            try
            {
                while (verificationRule != null)
                {
                    VerificationPolicy policy = verificationRule as VerificationPolicy;
                    VerificationResult result = policy != null?policy.DoVerification(context, false) : verificationRule.Verify(context);

                    verificationResults.Add(result);
                    verificationRule = verificationRule.NextRule(result.ResultCode);
                }
            }
            catch (Exception e)
            {
                KsiVerificationException ksiVerificationException = e as KsiVerificationException;
                VerificationResult       resultFromException      = ksiVerificationException?.VerificationResult;

                // if inner policy has thrown an exception and verification result is set within the exception then add this result to result list.
                // otherwise add a new result.
                verificationResults.Add(resultFromException ?? new VerificationResult(verificationRule?.GetRuleName(), VerificationResultCode.Na));
                VerificationResult result = new VerificationResult(GetRuleName(), verificationResults);

                // write log only when topmost policy
                if (writeLog)
                {
                    Logger.Warn("Error occured on rule {0}: {1}{2}{3}", verificationRule?.GetRuleName(), e, Environment.NewLine, result);
                    throw;
                }

                if (resultFromException != null)
                {
                    ksiVerificationException.VerificationResult = result;
                    throw ksiVerificationException;
                }

                throw new KsiVerificationException(e.Message, e)
                      {
                          VerificationResult = result
                      };
            }

            VerificationResult verificationResult = new VerificationResult(GetRuleName(), verificationResults);

            // write log only when topmost policy
            if (writeLog)
            {
                Logger.Debug(Environment.NewLine + verificationResult);
            }

            return(verificationResult);
        }
        public void VerifyWithoutSignatureInContext()
        {
            KsiVerificationException ex = Assert.Throws <KsiVerificationException>(delegate
            {
                // no signature in context
                VerificationContext context = new VerificationContext();
                Policy.Verify(context);
            });

            Assert.That(ex.Message, Does.StartWith("Invalid KSI signature in context: null"));
        }
        public void VerifyWithoutKsiService()
        {
            KsiVerificationException ex = Assert.Throws <KsiVerificationException>(delegate
            {
                new DefaultVerificationPolicy().Verify(new VerificationContext(TestUtil.GetSignature())
                {
                    IsExtendingAllowed = true,
                    PublicationsFile   = GetHttpKsiService().GetPublicationsFile()
                });
            });

            Assert.That(ex.Message, Does.StartWith("Invalid KSI service in context: null"));
        }
        public void VerifyWithoutPublicationsInContext()
        {
            KsiVerificationException ex = Assert.Throws <KsiVerificationException>(delegate
            {
                // no publications file in context
                Policy.Verify(new VerificationContext()
                {
                    Signature = TestUtil.GetSignature(Resources.KsiSignature_Ok_Extended),
                });
            });

            Assert.That(ex.Message, Does.StartWith("Invalid publications file in context: null"));
        }