Ejemplo n.º 1
0
        public async Task Resolve_ShouldUse_DnsClients_DnsServers()
        {
            // Arrange
            var nameServers = new[]
            {
                new IPEndPoint(IPAddress.Parse("15.46.251.79"), 53),
                new IPEndPoint(IPAddress.Parse("8.8.8.8"), 53),
                new IPEndPoint(IPAddress.Parse("10.3.15.47"), 66)
            };

            _dnsClients.NameServers().Returns(nameServers.ToList());

            _dnsClients.DnsClient(Arg.Any <IReadOnlyCollection <IPEndPoint> >()).Returns(args =>
            {
                var dnsClient = Substitute.For <IDnsClient>();
                dnsClient.NameServers.Returns(args.ArgAt <IReadOnlyCollection <IPEndPoint> >(0));
                return(dnsClient);
            });

            var client = new Core.OS.Net.Dns.DnsClient(_dnsClients, _networkInterfaces);

            // Act
            await client.Resolve("some.host", CancellationToken.None);

            // Assert
            client.NameServers.Should().BeEquivalentTo(nameServers);
        }
Ejemplo n.º 2
0
        public async Task Resolve_ShouldRefresh_DnsServers_When_NetworkAddressChanged()
        {
            // Arrange
            var nameServers = new[]
            {
                new IPEndPoint(IPAddress.Parse("15.46.251.79"), 53),
                new IPEndPoint(IPAddress.Parse("8.8.8.8"), 53),
                new IPEndPoint(IPAddress.Parse("10.3.15.47"), 66)
            };

            _dnsClients.NameServers().Returns(nameServers.ToList());

            _dnsClients.DnsClient(Arg.Any <IReadOnlyCollection <IPEndPoint> >()).Returns(args =>
            {
                var dnsClient = Substitute.For <IDnsClient>();
                dnsClient.NameServers.Returns(args.ArgAt <IReadOnlyCollection <IPEndPoint> >(0));
                return(dnsClient);
            });

            var client = new Core.OS.Net.Dns.DnsClient(_dnsClients, _networkInterfaces);

            // Call Resolve the DNS client to initialize
            await client.Resolve("some.host", CancellationToken.None);

            client.NameServers.Should().BeEquivalentTo(nameServers);

            // Act

            // Change DNS servers
            var newNameServers = new[]
            {
                new IPEndPoint(IPAddress.Parse("1.2.3.4"), 53),
                new IPEndPoint(IPAddress.Parse("8.8.8.8"), 53)
            };

            _dnsClients.NameServers().Returns(newNameServers.ToList());

            // Raise NetworkAddressChanged
            _networkInterfaces.NetworkAddressChanged += Raise.Event();

            // Call Resolve the DNS client to refresh DNS servers
            await client.Resolve("another.host", CancellationToken.None);

            // Assert
            client.NameServers.Should().BeEquivalentTo(newNameServers);
        }