public void CanUseBaseRoute() { var balancer = new RoundRobinBalancer <Uri>(); balancer.Resources.Add(new Uri("https://127.0.0.1/api/round-robin")); balancer.Resources.Add(new Uri("http://[::1]/round-robin")); balancer.Resources.Add(new Uri("https://www.google.com/api/foo/bar/baz")); var bindingMap = new BindingMap { { "round-robin", balancer } }; var startUri = new Uri("http://round-robin/more-complex/query?foo=bar&baz=1"); bindingMap.TryRebindUri(startUri, out var newUri).Should().BeTrue(); newUri.Should() .BeEquivalentTo(new Uri("https://127.0.0.1/api/round-robin/more-complex/query?foo=bar&baz=1")); bindingMap.TryRebindUri(startUri, out newUri).Should().BeTrue(); newUri.Should().BeEquivalentTo(new Uri("http://[::1]/round-robin/more-complex/query?foo=bar&baz=1")); bindingMap.TryRebindUri(startUri, out newUri).Should().BeTrue(); newUri.Should() .BeEquivalentTo(new Uri("https://www.google.com/api/foo/bar/baz/more-complex/query?foo=bar&baz=1")); bindingMap.TryRebindUri(startUri, out newUri).Should().BeTrue(); newUri.Should() .BeEquivalentTo(new Uri("https://127.0.0.1/api/round-robin/more-complex/query?foo=bar&baz=1")); }
public void WillIgnoreUrisNotConfigured() { var bindingMap = new BindingMap(); var startUri = new Uri("http://test/resource"); bindingMap.TryRebindUri(startUri, out var newUri).Should().BeFalse(); newUri.Should().BeEquivalentTo(startUri); }
public void UriIsRequired() { var bindingMap = new BindingMap(); Action action = () => bindingMap.TryRebindUri(null, out _); action.Should() .Throw <ArgumentNullException>() .WithMessage("Value cannot be null.\nParameter name: *"); }
public void WillUseLoadBalancerRulesAndRespectQueries() { var balancer = new RoundRobinBalancer <Uri>(); balancer.Resources.Add(new Uri("https://127.0.0.1")); balancer.Resources.Add(new Uri("http://[::1]")); balancer.Resources.Add(new Uri("https://www.google.com")); var bindingMap = new BindingMap { { "round-robin", balancer } }; var startUri = new Uri("http://round-robin/more-complex/query?foo=bar&baz=1"); bindingMap.TryRebindUri(startUri, out var newUri).Should().BeTrue(); newUri.Should().BeEquivalentTo(new Uri("https://127.0.0.1/more-complex/query?foo=bar&baz=1")); bindingMap.TryRebindUri(startUri, out newUri).Should().BeTrue(); newUri.Should().BeEquivalentTo(new Uri("http://[::1]/more-complex/query?foo=bar&baz=1")); bindingMap.TryRebindUri(startUri, out newUri).Should().BeTrue(); newUri.Should().BeEquivalentTo(new Uri("https://www.google.com/more-complex/query?foo=bar&baz=1")); bindingMap.TryRebindUri(startUri, out newUri).Should().BeTrue(); newUri.Should().BeEquivalentTo(new Uri("https://127.0.0.1/more-complex/query?foo=bar&baz=1")); }
public void WillReplaceHostNameWhenConfigured() { var balancer = new RandomLoadBalancer <Uri>(); balancer.Resources.Add(new Uri("https://127.0.0.1")); var bindingMap = new BindingMap { { "test", balancer } }; var startUri = new Uri("http://test/resource"); bindingMap.TryRebindUri(startUri, out var newUri).Should().BeTrue(); newUri.Should().BeEquivalentTo(new Uri("https://127.0.0.1/resource")); }