mirror of
				https://github.com/nsnail/Ocelot.git
				synced 2025-11-04 09:55:28 +08:00 
			
		
		
		
	protect code against value not in accurate range
add unit test
This commit is contained in:
		@@ -18,8 +18,11 @@
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var useTracing = _tracer != null && options.UseTracing;
 | 
					            var useTracing = _tracer != null && options.UseTracing;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //be sure that maxConnectionPerServer is in correct range of values
 | 
				
			||||||
 | 
					            int maxConnectionPerServer = (options.MaxConnectionsPerServer > 0) ? maxConnectionPerServer = options.MaxConnectionsPerServer : maxConnectionPerServer = int.MaxValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return new HttpHandlerOptions(options.AllowAutoRedirect,
 | 
					            return new HttpHandlerOptions(options.AllowAutoRedirect,
 | 
				
			||||||
                options.UseCookieContainer, useTracing, options.UseProxy, options.MaxConnectionsPerServer);
 | 
					                options.UseCookieContainer, useTracing, options.UseProxy, maxConnectionPerServer);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -137,6 +137,44 @@ namespace Ocelot.UnitTests.Configuration
 | 
				
			|||||||
                .BDDfy();
 | 
					                .BDDfy();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void should_create_options_with_specified_MaxConnectionsPerServer()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var fileReRoute = new FileReRoute
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                HttpHandlerOptions = new FileHttpHandlerOptions
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    MaxConnectionsPerServer = 10
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var expectedOptions = new HttpHandlerOptions(false, false, false, true, 10);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            this.Given(x => GivenTheFollowing(fileReRoute))
 | 
				
			||||||
 | 
					                .When(x => WhenICreateHttpHandlerOptions())
 | 
				
			||||||
 | 
					                .Then(x => ThenTheFollowingOptionsReturned(expectedOptions))
 | 
				
			||||||
 | 
					                .BDDfy();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Fact]
 | 
				
			||||||
 | 
					        public void should_create_options_fixing_specified_MaxConnectionsPerServer_range()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var fileReRoute = new FileReRoute
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                HttpHandlerOptions = new FileHttpHandlerOptions
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    MaxConnectionsPerServer = -1
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var expectedOptions = new HttpHandlerOptions(false, false, false, true, int.MaxValue);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            this.Given(x => GivenTheFollowing(fileReRoute))
 | 
				
			||||||
 | 
					                .When(x => WhenICreateHttpHandlerOptions())
 | 
				
			||||||
 | 
					                .Then(x => ThenTheFollowingOptionsReturned(expectedOptions))
 | 
				
			||||||
 | 
					                .BDDfy();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void GivenTheFollowing(FileReRoute fileReRoute)
 | 
					        private void GivenTheFollowing(FileReRoute fileReRoute)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _fileReRoute = fileReRoute;
 | 
					            _fileReRoute = fileReRoute;
 | 
				
			||||||
@@ -154,6 +192,7 @@ namespace Ocelot.UnitTests.Configuration
 | 
				
			|||||||
            _httpHandlerOptions.UseCookieContainer.ShouldBe(expected.UseCookieContainer);
 | 
					            _httpHandlerOptions.UseCookieContainer.ShouldBe(expected.UseCookieContainer);
 | 
				
			||||||
            _httpHandlerOptions.UseTracing.ShouldBe(expected.UseTracing);
 | 
					            _httpHandlerOptions.UseTracing.ShouldBe(expected.UseTracing);
 | 
				
			||||||
            _httpHandlerOptions.UseProxy.ShouldBe(expected.UseProxy);
 | 
					            _httpHandlerOptions.UseProxy.ShouldBe(expected.UseProxy);
 | 
				
			||||||
 | 
					            _httpHandlerOptions.MaxConnectionsPerServer.ShouldBe(expected.MaxConnectionsPerServer);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void GivenARealTracer()
 | 
					        private void GivenARealTracer()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user