public async Task <List <ScanResult> > ScanDns(WorkerInformation workerInformation) { var baseWorker = new BaseWorker(); var mxWorker = new MxWorker(baseWorker, this.LookupClient); var dkimWorker = new DkimWorker(mxWorker, this.LookupClient, this.Settings); var caaWorker = new CaaWorker(dkimWorker, this.LookupClient); var spfWorker = new SpfWorker(caaWorker, this.LookupClient); var dnssecWorker = new DnssecWorker(spfWorker, this.LookupClient); var dmarcWorker = new DmarcWorker(dnssecWorker, this.LookupClient); var scanResults = await dmarcWorker.Scan(workerInformation); return(scanResults); }
public void Test_CaaWorker_Scan_Records() { // Arrange var workerInformation = new WorkerInformation() { Hostname = "http://www.google.com" }; var resourceRecord = new ResourceRecordInfo(DnsString.FromResponseQueryString(workerInformation.Hostname), ResourceRecordType.CAA, QueryClass.IN, 0, 0); var dnsRecords = new List <DnsResourceRecord>() { new CaaRecord(resourceRecord, 0, "issuewild", "pki.googl"), new CaaRecord(resourceRecord, 0, "issue", "letsencrypt.org"), new CaaRecord(resourceRecord, 0, "issuewild", "sslcerts.com"), new CaaRecord(resourceRecord, 0, "issue", "freecerts.com"), }; var dnsResponse = new Mock <IDnsQueryResponse>(); dnsResponse.Setup(x => x.Answers).Returns(dnsRecords); var lookupClientMock = new Mock <ILookupClient>(MockBehavior.Strict); lookupClientMock.Setup(x => x.QueryAsync(workerInformation.Hostname, QueryType.CAA, QueryClass.IN, null, default)).Returns(Task.FromResult(dnsResponse.Object)); var previousWorkerMock = new Mock <IAsyncWorker>(MockBehavior.Strict); previousWorkerMock.Setup(x => x.Scan(workerInformation)).Returns(Task.FromResult(new List <ScanResult>())); var service = new CaaWorker(previousWorkerMock.Object, lookupClientMock.Object); // Act var rawCaaRecords = service.Scan(workerInformation); rawCaaRecords.Wait(); // Assert var records = rawCaaRecords.Result; Assert.IsInstanceOfType(records.Single(), typeof(ParsedCaaResponse)); var caaRecord = records.Single() as ParsedCaaResponse; Assert.IsTrue(caaRecord.HasCaaRecords); Assert.AreEqual(2, caaRecord.IssueCas.Count); Assert.AreEqual("letsencrypt.org", caaRecord.IssueCas[0]); Assert.AreEqual("freecerts.com", caaRecord.IssueCas[1]); Assert.AreEqual(2, caaRecord.IssueWildCas.Count); Assert.AreEqual("pki.googl", caaRecord.IssueWildCas[0]); Assert.AreEqual("sslcerts.com", caaRecord.IssueWildCas[1]); }
public void Test_CaaWorker_Scan_NoRecords() { // Arrange var workerInformation = new WorkerInformation() { Hostname = "http://www.google.com" }; var dnsResponse = new Mock <IDnsQueryResponse>(); dnsResponse.Setup(x => x.Answers).Returns(new List <DnsResourceRecord>()); var lookupClientMock = new Mock <ILookupClient>(MockBehavior.Strict); lookupClientMock.Setup(x => x.QueryAsync(workerInformation.Hostname, QueryType.CAA, QueryClass.IN, null, default)).Returns(Task.FromResult(dnsResponse.Object)); var previousWorkerMock = new Mock <IAsyncWorker>(MockBehavior.Strict); previousWorkerMock.Setup(x => x.Scan(workerInformation)).Returns(Task.FromResult(new List <ScanResult>())); var service = new CaaWorker(previousWorkerMock.Object, lookupClientMock.Object); // Act var rawCaaRecords = service.Scan(workerInformation); rawCaaRecords.Wait(); // Assert var records = rawCaaRecords.Result; Assert.IsInstanceOfType(records.Single(), typeof(ParsedCaaResponse)); var caaRecord = records.Single() as ParsedCaaResponse; Assert.IsFalse(caaRecord.HasCaaRecords); Assert.AreEqual(0, caaRecord.IssueCas.Count); Assert.AreEqual(0, caaRecord.IssueWildCas.Count); }