Exemple #1
0
        public void WhenSave_AndMasterListContainsEntries_ThenEntriesAreSaved()
        {
            // Arrange.
            string domainName = "stratis.test.com";

            IList <IResourceRecord> testResourceRecords = new List <IResourceRecord>()
            {
                new IPAddressResourceRecord(new Domain(domainName), IPAddress.Parse("192.168.100.1")),
                new IPAddressResourceRecord(new Domain(domainName), IPAddress.Parse("192.168.100.2")),
                new IPAddressResourceRecord(new Domain(domainName), IPAddress.Parse("192.168.100.3")),
                new IPAddressResourceRecord(new Domain(domainName), IPAddress.Parse("192.168.100.4"))
            };

            var masterFile = new DnsSeedMasterFile(testResourceRecords);

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

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

                IList <IPAddressResourceRecord> ipAddressResourceRecords = resourceRecords.OfType <IPAddressResourceRecord>().ToList();
                ipAddressResourceRecords.Should().HaveSameCount(testResourceRecords);

                foreach (IPAddressResourceRecord testResourceRecord in testResourceRecords)
                {
                    ipAddressResourceRecords.SingleOrDefault(i => i.IPAddress.Equals(testResourceRecord.IPAddress)).Should().NotBeNull();
                }
            }
        }
Exemple #2
0
        public void WhenSave_AndMasterListContainsPointerResourceRecord_ThenEntryIsSaved()
        {
            // Arrange
            var domain   = new Domain("stratis.test.com");
            var nsDomain = new Domain("pointer.stratis.test.com");

            var testResourceRecord = new PointerResourceRecord(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 <PointerResourceRecord> pointerResourceRecord = resourceRecords.OfType <PointerResourceRecord>().ToList();
                pointerResourceRecord.Should().HaveCount(1);
                pointerResourceRecord[0].Name.ToString().Should().Be(domain.ToString());
                pointerResourceRecord[0].PointerDomainName.ToString().Should().Be(testResourceRecord.PointerDomainName.ToString());
            }
        }
Exemple #3
0
        public void WhenSave_AndMasterListContainsMailExchangeResourceRecord_ThenEntryIsSaved()
        {
            // Arrange
            var domain         = new Domain("stratis.test.com");
            var exchangeDomain = new Domain("mail.stratis.test.com");
            int preference     = 10;

            var testResourceRecord = new MailExchangeResourceRecord(domain, preference, exchangeDomain);
            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 <MailExchangeResourceRecord> mailExchangeResourceRecords = resourceRecords.OfType <MailExchangeResourceRecord>().ToList();
                mailExchangeResourceRecords.Should().HaveCount(1);
                mailExchangeResourceRecords[0].Name.ToString().Should().Be(domain.ToString());
                mailExchangeResourceRecords[0].ExchangeDomainName.ToString().Should().Be(testResourceRecord.ExchangeDomainName.ToString());
                mailExchangeResourceRecords[0].Preference.Should().Be(preference);
            }
        }
Exemple #4
0
        public void WhenSave_AndMasterListContainsCanonicalNameResourceRecord_ThenEntryIsSaved()
        {
            // Arrange
            var domain      = new Domain("stratis.test.com");
            var cNameDomain = new Domain("www.stratis.test.com");

            var testResourceRecord = new CanonicalNameResourceRecord(domain, cNameDomain);
            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 <CanonicalNameResourceRecord> canonicalResourceRecords = resourceRecords.OfType <CanonicalNameResourceRecord>().ToList();
                canonicalResourceRecords.Should().HaveCount(1);
                canonicalResourceRecords[0].Name.ToString().Should().Be(domain.ToString());
                canonicalResourceRecords[0].CanonicalDomainName.ToString().Should().Be(testResourceRecord.CanonicalDomainName.ToString());
            }
        }
Exemple #5
0
        public void WhenSave_AndMasterListContainsIPAddressResourceRecord_AndIsIPv6_ThenEntryIsSaved()
        {
            // Arrange
            var domain = new Domain("stratis.test.com");

            var testResourceRecord = new IPAddressResourceRecord(domain, IPAddress.Parse("2001:db8:85a3:0:0:8a2e:370:7334"));
            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 <IPAddressResourceRecord> ipAddressResourceRecords = resourceRecords.OfType <IPAddressResourceRecord>().ToList();
                ipAddressResourceRecords.Should().HaveCount(1);
                ipAddressResourceRecords[0].Name.ToString().Should().Be(domain.ToString());
                ipAddressResourceRecords[0].IPAddress.Equals(testResourceRecord.IPAddress);
            }
        }
Exemple #6
0
        public void WhenSave_AndMasterListContainsNameServerResourceRecord_ThenEntryIsSaved()
        {
            // Arrange
            Domain domain   = new Domain("xels.test.com");
            Domain nsDomain = new Domain("ns");

            NameServerResourceRecord testResourceRecord = new NameServerResourceRecord(domain, nsDomain);
            DnsSeedMasterFile        masterFile         = new DnsSeedMasterFile();

            masterFile.Add(testResourceRecord);

            using (MemoryStream 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());
            }
        }
Exemple #7
0
        public void WhenSave_AndMasterListContainsIPAddressResourceRecord_AndIsIPv4_ThenEntryIsSaved()
        {
            // Arrange
            Domain domain = new Domain("xels.test.com");

            IPAddressResourceRecord testResourceRecord = new IPAddressResourceRecord(domain, IPAddress.Parse("192.168.0.1"));
            DnsSeedMasterFile       masterFile         = new DnsSeedMasterFile();

            masterFile.Add(testResourceRecord);

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

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

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

                IList <IPAddressResourceRecord> ipAddressResourceRecords = resourceRecords.OfType <IPAddressResourceRecord>().ToList();
                ipAddressResourceRecords.Should().HaveCount(1);
                ipAddressResourceRecords[0].Name.ToString().Should().Be(domain.ToString());
                ipAddressResourceRecords[0].IPAddress.Equals(testResourceRecord.IPAddress);
            }
        }
Exemple #8
0
        public void WhenSave_AndStreamIsNull_ThenArgumentNullExceptionIsThrown()
        {
            // Arrange.
            var    masterFile = new DnsSeedMasterFile();
            Action a          = () => { masterFile.Save(null); };

            // Act and assert.
            a.Should().Throw <ArgumentNullException>().Which.Message.Should().Contain("stream");
        }
Exemple #9
0
        public void WhenSave_AndMasterListContainsStartOfAuthorityResourceRecord_ThenEntryIsSaved()
        {
            // Arrange
            var  domain            = new Domain("stratis.test.com");
            var  masterDomain      = new Domain("master.test.com");
            var  responsibleDomain = new Domain("responsible.test.com");
            long serialNumber      = 12121212;
            var  refreshInterval   = new TimeSpan(1111111111);
            var  retryInterval     = new TimeSpan(2222222222);
            var  expireInterval    = new TimeSpan(3333333333);
            var  minimumTimeToLive = new TimeSpan(4444444444);

            var testResourceRecord =
                new StartOfAuthorityResourceRecord(
                    domain,
                    masterDomain,
                    responsibleDomain,
                    serialNumber,
                    refreshInterval,
                    retryInterval,
                    expireInterval,
                    minimumTimeToLive);

            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 <StartOfAuthorityResourceRecord> startOfAuthorityResourceRecord = resourceRecords.OfType <StartOfAuthorityResourceRecord>().ToList();
                startOfAuthorityResourceRecord.Should().HaveCount(1);
                startOfAuthorityResourceRecord[0].Name.ToString().Should().Be(domain.ToString());
                startOfAuthorityResourceRecord[0].MasterDomainName.ToString().Should().Be(masterDomain.ToString());
                startOfAuthorityResourceRecord[0].ResponsibleDomainName.ToString().Should().Be(responsibleDomain.ToString());
                startOfAuthorityResourceRecord[0].SerialNumber.Should().Be(serialNumber);
                startOfAuthorityResourceRecord[0].RefreshInterval.Should().Be(refreshInterval);
                startOfAuthorityResourceRecord[0].RetryInterval.Should().Be(retryInterval);
                startOfAuthorityResourceRecord[0].ExpireInterval.Should().Be(expireInterval);
                startOfAuthorityResourceRecord[0].MinimumTimeToLive.Should().Be(minimumTimeToLive);
            }
        }