public async Task TlsRptExceptionNotThrownWhenAllowNullResultsSetAndEmptyResult()
        {
            string domain = "abc.com";

            A.CallTo(() => _config.AllowNullResults).Returns(true);

            A.CallTo(() => _tlsRptRecordsParser.Parse(A <TlsRptRecordInfos> ._)).Returns(
                new EvaluationResult <TlsRptRecords>(new TlsRptRecords(domain, new List <TlsRptRecord>(), 0)));

            A.CallTo(() => _evaluator.Evaluate(A <TlsRptRecords> ._)).Returns(
                new EvaluationResult <TlsRptRecords>(new TlsRptRecords(domain, new List <TlsRptRecord>(), 0)));

            TlsRptPollResult result = await _tlsRptProcessor.Process(domain);

            Assert.AreEqual(0, result.TlsRptRecords.Records.Count);
        }
コード例 #2
0
        public async Task <TlsRptPollResult> Process(string domain)
        {
            TlsRptRecordInfos tlsRptRecordInfos = await _dnsClient.GetTlsRptRecords(domain);

            if (!_config.AllowNullResults && (tlsRptRecordInfos.HasError ||
                                              tlsRptRecordInfos.RecordsInfos.TrueForAll(x => string.IsNullOrWhiteSpace(x.Record))))
            {
                throw new TlsRptPollerException($"Unable to retrieve TLS-RPT records for {domain}.");
            }

            if (tlsRptRecordInfos.HasError)
            {
                return(new TlsRptPollResult(domain, tlsRptRecordInfos.Error));
            }

            EvaluationResult <TlsRptRecords> parsingResult = _parser.Parse(tlsRptRecordInfos);

            EvaluationResult <TlsRptRecords> evaluationResult = await _evaluator.Evaluate(parsingResult.Item);

            return(new TlsRptPollResult(evaluationResult.Item, parsingResult.Errors.Concat(evaluationResult.Errors).ToList()));
        }