| File: ServiceDiscoveryDnsServiceCollectionExtensionsTests.cs | Web Access |
| Project: src\test\Libraries\Microsoft.Extensions.ServiceDiscovery.Dns.Tests\Microsoft.Extensions.ServiceDiscovery.Dns.Tests.csproj (Microsoft.Extensions.ServiceDiscovery.Dns.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; namespace Microsoft.Extensions.ServiceDiscovery.Dns.Tests; public class ServiceDiscoveryDnsServiceCollectionExtensionsTests { [Fact] public void AddDnsServiceEndpointProviderShouldRegisterDependentServices() { var services = new ServiceCollection(); services.AddDnsServiceEndpointProvider(); using var serviceProvider = services.BuildServiceProvider(true); var exception = Record.Exception(() => serviceProvider.GetServices<IServiceEndpointProviderFactory>()); Assert.Null(exception); } [Fact] public void AddDnsSrvServiceEndpointProviderShouldRegisterDependentServices() { var services = new ServiceCollection(); services.AddDnsSrvServiceEndpointProvider(); using var serviceProvider = services.BuildServiceProvider(true); var exception = Record.Exception(() => serviceProvider.GetServices<IServiceEndpointProviderFactory>()); Assert.Null(exception); } [Fact] public void ConfigureDnsResolverShouldThrowWhenServersIsNull() { var services = new ServiceCollection(); services.ConfigureDnsResolver(options => options.Servers = null!); using var serviceProvider = services.BuildServiceProvider(); var options = serviceProvider.GetRequiredService<IOptions<DnsResolverOptions>>(); var exception = Assert.Throws<OptionsValidationException>(() => options.Value); Assert.Equal("Servers must not be null.", exception.Message); } [Fact] public void ConfigureDnsResolverShouldThrowWhenMaxAttemptsIsZero() { var services = new ServiceCollection(); services.ConfigureDnsResolver(options => options.MaxAttempts = 0); using var serviceProvider = services.BuildServiceProvider(); var options = serviceProvider.GetRequiredService<IOptions<DnsResolverOptions>>(); var exception = Assert.Throws<OptionsValidationException>(() => options.Value); Assert.Equal("MaxAttempts must be one or greater.", exception.Message); } [Fact] public void ConfigureDnsResolverShouldThrowWhenTimeoutIsZero() { var services = new ServiceCollection(); services.ConfigureDnsResolver(options => options.Timeout = TimeSpan.Zero); using var serviceProvider = services.BuildServiceProvider(); var options = serviceProvider.GetRequiredService<IOptions<DnsResolverOptions>>(); var exception = Assert.Throws<OptionsValidationException>(() => options.Value); Assert.Equal("Timeout must not be negative or zero.", exception.Message); } [Fact] public void ConfigureDnsResolverShouldThrowWhenTimeoutExceedsMaximum() { var services = new ServiceCollection(); services.ConfigureDnsResolver(options => options.Timeout = TimeSpan.FromMilliseconds(1L + int.MaxValue)); using var serviceProvider = services.BuildServiceProvider(); var options = serviceProvider.GetRequiredService<IOptions<DnsResolverOptions>>(); var exception = Assert.Throws<OptionsValidationException>(() => options.Value); Assert.Equal("Timeout must not be greater than 2147483647 milliseconds.", exception.Message); } }