public EvaluateConnectionFilters ( IHttpRequest args, string connectionId ) : byte[] | ||
args | IHttpRequest | |
connectionId | string | |
return | byte[] |
public void VerifyConnectionFilterSort([Values(true, false)] bool filterEnabled, [Values(true, false)] bool isWhitelisted) { Mock<ICoreSettings> settings = new Mock<ICoreSettings>(); settings.SetupGet(m => m.FilteringEnabled).Returns(filterEnabled); ProxyFilter filter = new ProxyFilter(settings.Object); List<IConnectionFilter> filters = new List<IConnectionFilter>(); Mock<IHttpRequest> requestArgs = new Mock<IHttpRequest>(); requestArgs.SetupAllProperties(); Mock<IWhitelistEvaluator> whiteLister = new Mock<IWhitelistEvaluator>(); whiteLister.Setup(m => m.IsWhitlisted(requestArgs.Object, "whatever")).Returns(isWhitelisted); List<IWhitelistEvaluator> whitelistEvaluators = new List<IWhitelistEvaluator>(); whitelistEvaluators.Add(whiteLister.Object); Mock<IConnectionFilter> mockFilter = new Mock<IConnectionFilter>(); mockFilter.SetupGet( s => s.FilterSpeedType ).Returns( FilterSpeedType.Remote ); Mock<IConnectionFilter> mockFilter2 = new Mock<IConnectionFilter>(); mockFilter2.SetupGet( s => s.FilterSpeedType ).Returns( FilterSpeedType.LocalAndFast ); mockFilter2.Setup( s => s.EvaluateFilter( requestArgs.Object, It.IsAny<string>() ) ).Returns( "Foo" ); filters.Add( mockFilter.Object ); filters.Add( mockFilter2.Object ); filter.ConnectionFilters = filters; filter.WhitelistEvaluators = whitelistEvaluators; byte[] output = filter.EvaluateConnectionFilters( requestArgs.Object, "whatever" ); if (filterEnabled && !isWhitelisted) { Assert.That(output, Is.EqualTo( Encoding.UTF8.GetBytes( "HTTP/ 200 OK\r\nConnection: close\r\nContent length: 93\r\nContent-Type: text/html\r\n\r\n<html><head><title>Gallatin Proxy - Connection Rejected</title></head><body>Foo</body></html>"))); } else { Assert.That( output, Is.Null ); } }
public void VerifyResponseFiltersNoCallback( [Values(true, false)] bool filterEnabled, [Values(true, false)] bool isWhitelisted) { Mock<ICoreSettings> settings = new Mock<ICoreSettings>(); settings.SetupGet( m => m.FilteringEnabled ).Returns( filterEnabled ); ProxyFilter filter = new ProxyFilter(settings.Object); List<IResponseFilter> filters = new List<IResponseFilter>(); Mock<IHttpResponse> response = new Mock<IHttpResponse>(); response.SetupAllProperties(); Mock<IHttpRequest> requestArgs = new Mock<IHttpRequest>(); requestArgs.SetupAllProperties(); // Whitelister Mock<IWhitelistEvaluator> whiteLister = new Mock<IWhitelistEvaluator>(); whiteLister.Setup(m => m.IsWhitlisted(requestArgs.Object, "connectionid")).Returns(isWhitelisted); List<IWhitelistEvaluator> whitelistEvaluators = new List<IWhitelistEvaluator>(); whitelistEvaluators.Add(whiteLister.Object); // Filter under test Mock<IResponseFilter> mockFilter = new Mock<IResponseFilter>(); mockFilter.SetupGet( s => s.FilterSpeedType ).Returns( FilterSpeedType.Remote ); Func<IHttpResponse, string, byte[], byte[]> outParm = null; mockFilter.Setup( s => s.EvaluateFilter( response.Object, "connectionid", out outParm ) ).Returns( "foo" ); filters.Add( mockFilter.Object ); filter.ResponseFilters = filters; filter.WhitelistEvaluators = whitelistEvaluators; // Needed to set the internal whitelist to short-curcuit evaluation on response filter.EvaluateConnectionFilters( requestArgs.Object, "connectionid" ); bool isBodyNeeded; byte[] filterResponse = filter.EvaluateResponseFilters( response.Object, "connectionid", out isBodyNeeded ); Assert.That( isBodyNeeded, Is.False ); if (filterEnabled && !isWhitelisted ) { Assert.That(filterResponse, Is.EqualTo( Encoding.UTF8.GetBytes( "HTTP/ 200 OK\r\nConnection: close\r\nContent length: 91\r\nContent-Type: text/html\r\n\r\n<html><head><title>Gallatin Proxy - Response Filtered</title></head><body>foo</body></html>"))); } else { Assert.That(filterResponse, Is.Null); } }