mirror of
				https://github.com/nsnail/Ocelot.git
				synced 2025-11-04 08:55:28 +08:00 
			
		
		
		
	Feature/expose http handlers (#224)
* temp commit * trying to work out how to expose the http handlers in a decent way.. * pissing about at lunch * changed to func so you can instanciate object or new it up each time * docs for dele handlers * upgraded to sdk 2.1.4 * some validation for consul services
This commit is contained in:
		@@ -1,4 +1,8 @@
 | 
			
		||||
using CacheManager.Core;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Net.Http;
 | 
			
		||||
using CacheManager.Core;
 | 
			
		||||
using Microsoft.AspNetCore.Hosting;
 | 
			
		||||
using Microsoft.AspNetCore.Hosting.Internal;
 | 
			
		||||
using Microsoft.Extensions.Configuration;
 | 
			
		||||
@@ -9,10 +13,9 @@ using Ocelot.Configuration.File;
 | 
			
		||||
using Ocelot.Configuration.Setter;
 | 
			
		||||
using Ocelot.DependencyInjection;
 | 
			
		||||
using Ocelot.Requester;
 | 
			
		||||
using Ocelot.UnitTests.Requester;
 | 
			
		||||
using Shouldly;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using TestStack.BDDfy;
 | 
			
		||||
using Xunit;
 | 
			
		||||
 | 
			
		||||
@@ -20,11 +23,11 @@ namespace Ocelot.UnitTests.DependencyInjection
 | 
			
		||||
{
 | 
			
		||||
    public class OcelotBuilderTests
 | 
			
		||||
    {
 | 
			
		||||
        private IServiceCollection _services;
 | 
			
		||||
        private readonly IServiceCollection _services;
 | 
			
		||||
        private IServiceProvider _serviceProvider;
 | 
			
		||||
        private IConfiguration _configRoot;
 | 
			
		||||
        private readonly IConfiguration _configRoot;
 | 
			
		||||
        private IOcelotBuilder _ocelotBuilder;
 | 
			
		||||
        private int _maxRetries;
 | 
			
		||||
        private readonly int _maxRetries;
 | 
			
		||||
 | 
			
		||||
        public OcelotBuilderTests()
 | 
			
		||||
        {
 | 
			
		||||
@@ -38,6 +41,19 @@ namespace Ocelot.UnitTests.DependencyInjection
 | 
			
		||||
        }
 | 
			
		||||
        private Exception _ex;
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_add_delegating_handlers()
 | 
			
		||||
        {
 | 
			
		||||
            var fakeOne = new FakeDelegatingHandler(0);
 | 
			
		||||
            var fakeTwo = new FakeDelegatingHandler(1);
 | 
			
		||||
 | 
			
		||||
            this.Given(x => WhenISetUpOcelotServices())
 | 
			
		||||
                .When(x => AddDelegate(fakeOne))
 | 
			
		||||
                .And(x => AddDelegate(fakeTwo))
 | 
			
		||||
                .Then(x => ThenTheProviderIsRegisteredAndReturnsHandlers())
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_set_up_services()
 | 
			
		||||
        {
 | 
			
		||||
@@ -54,7 +70,7 @@ namespace Ocelot.UnitTests.DependencyInjection
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
       
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_set_up_cache_manager()
 | 
			
		||||
        {
 | 
			
		||||
@@ -74,7 +90,7 @@ namespace Ocelot.UnitTests.DependencyInjection
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
         [Fact]
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_set_up_rafty()
 | 
			
		||||
        {            
 | 
			
		||||
            this.Given(x => WhenISetUpOcelotServices())
 | 
			
		||||
@@ -119,6 +135,17 @@ namespace Ocelot.UnitTests.DependencyInjection
 | 
			
		||||
            path.Path.ShouldBe("/administration");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheProviderIsRegisteredAndReturnsHandlers()
 | 
			
		||||
        {
 | 
			
		||||
            _serviceProvider = _services.BuildServiceProvider();
 | 
			
		||||
            var provider = _serviceProvider.GetService<IDelegatingHandlerHandlerProvider>();
 | 
			
		||||
            var handlers = provider.Get();
 | 
			
		||||
            var handler = (FakeDelegatingHandler)handlers[0].Invoke();
 | 
			
		||||
            handler.Order.ShouldBe(0);
 | 
			
		||||
            handler = (FakeDelegatingHandler)handlers[1].Invoke();
 | 
			
		||||
            handler.Order.ShouldBe(1);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void OnlyOneVersionOfEachCacheIsRegistered()
 | 
			
		||||
        {
 | 
			
		||||
            var outputCache = _services.Single(x => x.ServiceType == typeof(IOcelotCache<CachedResponse>));
 | 
			
		||||
@@ -157,6 +184,11 @@ namespace Ocelot.UnitTests.DependencyInjection
 | 
			
		||||
            }       
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void AddDelegate(DelegatingHandler handler)
 | 
			
		||||
        {
 | 
			
		||||
            _ocelotBuilder.AddDelegatingHandler(() => handler);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenAnOcelotBuilderIsReturned()
 | 
			
		||||
        {
 | 
			
		||||
            _ocelotBuilder.ShouldBeOfType<OcelotBuilder>();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user