public async Task DoesntReturnErrorForServerFailureResponse() { const string error = "Server Failure"; IDnsQueryResponse response = CreateError(error); A.CallTo(() => _lookupClient.QueryAsync(A <string> ._, QueryType.TXT, QueryClass.IN, CancellationToken.None)).Returns(response); TlsRptRecordInfos tlsRptRecordInfos = await _dnsClient.GetTlsRptRecords(string.Empty); Assert.That(tlsRptRecordInfos.RecordsInfos.Count, Is.EqualTo(0)); Assert.That(tlsRptRecordInfos.Error, Is.Null); }
public async Task ReturnsErrorIfDnsQueryErrored() { const string error = "Dns call borked"; IDnsQueryResponse response = CreateError(error); A.CallTo(() => _lookupClient.QueryAsync(A <string> ._, QueryType.TXT, QueryClass.IN, CancellationToken.None)).Returns(response); TlsRptRecordInfos tlsRptRecordInfos = await _dnsClient.GetTlsRptRecords(string.Empty); Assert.That(tlsRptRecordInfos.RecordsInfos.Count, Is.EqualTo(0)); Assert.That(tlsRptRecordInfos.Error.Message, Is.EqualTo(error)); }
public async Task CorrecltlyObtainsTlsRptRecord() { IDnsQueryResponse response = CreateResponse(new List <string> { TlsRptRecord }); A.CallTo(() => _lookupClient.QueryAsync(A <string> ._, QueryType.TXT, QueryClass.IN, CancellationToken.None)).Returns(response); TlsRptRecordInfos tlsRptRecordInfos = await _dnsClient.GetTlsRptRecords(string.Empty); Assert.That(tlsRptRecordInfos.RecordsInfos.Count, Is.EqualTo(1)); Assert.That(tlsRptRecordInfos.RecordsInfos[0].Record, Is.EqualTo(TlsRptRecord)); }
public EvaluationResult <TlsRptRecords> Parse(TlsRptRecordInfos tlsRptRecordInfos) { List <TlsRptRecord> records = new List <TlsRptRecord>(); List <Error> errors = new List <Error>(); foreach (TlsRptRecordInfo tlsRptRecordInfo in tlsRptRecordInfos.RecordsInfos) { EvaluationResult <TlsRptRecord> tlsRptRecord = _parser.Parse(tlsRptRecordInfo); records.Add(tlsRptRecord.Item); errors.AddRange(tlsRptRecord.Errors); } TlsRptRecords tlsRptRecords = new TlsRptRecords(tlsRptRecordInfos.Domain, records, tlsRptRecordInfos.MessageSize); return(new EvaluationResult <TlsRptRecords>(tlsRptRecords, errors)); }
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())); }