Beispiel #1
0
        public void WhenSave_AndMasterListContainsNameServerResourceRecord_ThenEntryIsSaved()
        {
            // Arrange
            var domain   = new Domain("stratis.test.com");
            var nsDomain = new Domain("ns");

            var testResourceRecord = new NameServerResourceRecord(domain, nsDomain);
            var masterFile         = new DnsSeedMasterFile(new List <IResourceRecord> {
                testResourceRecord
            });

            using (var stream = new MemoryStream())
            {
                // Act.
                masterFile.Save(stream);

                // Assert.
                stream.Should().NotBeNull();
                IList <IResourceRecord> resourceRecords = this.ReadResourceRecords(stream);

                resourceRecords.Should().NotBeNull();
                resourceRecords.Should().NotBeNullOrEmpty();

                IList <NameServerResourceRecord> nameServerResourceRecord = resourceRecords.OfType <NameServerResourceRecord>().ToList();
                nameServerResourceRecord.Should().HaveCount(1);
                nameServerResourceRecord[0].Name.ToString().Should().Be(domain.ToString());
                nameServerResourceRecord[0].NSDomainName.ToString().Should().Be(testResourceRecord.NSDomainName.ToString());
            }
        }
Beispiel #2
0
 /// <summary>
 /// Writes a <see cref="NameServerResourceRecord"/> to JSON.
 /// </summary>
 /// <param name="resourceRecord">The <see cref="NameServerResourceRecord"/> to write.</param>
 /// <returns>The written JSON.</returns>
 private JObject WriteNameServerResourceRecordJson(NameServerResourceRecord resourceRecord)
 {
     return(new JObject
     {
         { TypeFieldName, resourceRecord.GetType().Name },
         { NameFieldName, resourceRecord.Name.ToString() },
         { NSDomainNameFieldName, resourceRecord.NSDomainName.ToString() }
     });
 }
Beispiel #3
0
        private void LogResponse(IResponse response)
        {
            _logger.LogInformation($"Response: Id:{response.Id}, Query: {response.Questions.Count()}, Answers: {response.AnswerRecords.Count()}, Authority: {response.AuthorityRecords.Count()}, Additional: {response.AdditionalRecords.Count()}.");

            foreach (var question in response.Questions)
            {
                _logger.LogInformation($"  Question: {question.Name}\t{question.Type}");
            }

            foreach (var auth in response.AuthorityRecords)
            {
                if (auth is StartOfAuthorityResourceRecord record)
                {
                    _logger.LogInformation($"  SOA: {record.Name}\t{record.Type}\t{record.MasterDomainName}\t{record.ResponsibleDomainName}");
                }
            }

            foreach (var record in response.AnswerRecords)
            {
                switch (record.Type)
                {
                case RecordType.A:
                case RecordType.AAAA:
                    IPAddressResourceRecord rec = (IPAddressResourceRecord)record;
                    _logger.LogInformation($"  Answer: {record.Name}\t{record.Type}\t{rec.IPAddress}");
                    break;

                case RecordType.NS:
                    NameServerResourceRecord nsrec = (NameServerResourceRecord)record;
                    _logger.LogInformation($"  Answer: {record.Name}\t{record.Type}\t{nsrec.NSDomainName}");
                    break;

                default:
                    _logger.LogInformation($"  Answer: {record.Name}\t{record.Type}\t{Encoding.UTF8.GetString(record.Data)}");
                    break;
                }
            }

            foreach (var record in response.AdditionalRecords)
            {
                _logger.LogInformation($"  Additional: {record.Name}\t{record.Type}\t{Encoding.UTF8.GetString(record.Data)}");
            }
        }
Beispiel #4
0
        public void WhenLoad_AndStreamContainsNameServerResourceRecord_ThenEntryIsPopulated()
        {
            // Arrange
            var domain   = new Domain("stratis.test.com");
            var nsDomain = new Domain("ns");

            var testResourceRecord = new NameServerResourceRecord(domain, nsDomain);

            var question = new Question(domain, RecordType.NS);

            // Act.
            IList <IResourceRecord> resourceRecords = this.WhenLoad_AndStreamContainsEntry_ThenEntryIsPopulated(testResourceRecord, question);

            // Assert.
            resourceRecords.Should().NotBeNull();
            resourceRecords.Should().NotBeNullOrEmpty();

            IList <NameServerResourceRecord> nameServerResourceRecord = resourceRecords.OfType <NameServerResourceRecord>().ToList();

            nameServerResourceRecord.Should().HaveCount(1);
            nameServerResourceRecord[0].Name.ToString().Should().Be(domain.ToString());
            nameServerResourceRecord[0].NSDomainName.ToString().Should().Be(testResourceRecord.NSDomainName.ToString());
        }