mirror of
				https://github.com/nsnail/Ocelot.git
				synced 2025-11-04 08:55:28 +08:00 
			
		
		
		
	hacked together load balancing reroutes in fileconfig (#211)
* hacked together load balancing reroutes in fileconfig * some renaming and refactoring * more renames * hacked away the old config json * test for issue 213 * renamed key * dont share ports * oops * updated docs * mvoed docs around * port being used
This commit is contained in:
		@@ -1,103 +1,103 @@
 | 
			
		||||
using System;
 | 
			
		||||
using CacheManager.Core;
 | 
			
		||||
using Moq;
 | 
			
		||||
using Ocelot.Cache;
 | 
			
		||||
using Shouldly;
 | 
			
		||||
using TestStack.BDDfy;
 | 
			
		||||
using Xunit;
 | 
			
		||||
 | 
			
		||||
namespace Ocelot.UnitTests.Cache
 | 
			
		||||
{
 | 
			
		||||
    public class CacheManagerCacheTests
 | 
			
		||||
    {
 | 
			
		||||
        private OcelotCacheManagerCache<string> _ocelotOcelotCacheManager;
 | 
			
		||||
        private Mock<ICacheManager<string>> _mockCacheManager;
 | 
			
		||||
        private string _key;
 | 
			
		||||
        private string _value;
 | 
			
		||||
        private string _resultGet;
 | 
			
		||||
        private TimeSpan _ttlSeconds;
 | 
			
		||||
        private string _region;
 | 
			
		||||
 | 
			
		||||
        public CacheManagerCacheTests()
 | 
			
		||||
        {
 | 
			
		||||
            _mockCacheManager = new Mock<ICacheManager<string>>();
 | 
			
		||||
            _ocelotOcelotCacheManager = new OcelotCacheManagerCache<string>(_mockCacheManager.Object);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_get_from_cache()
 | 
			
		||||
        {
 | 
			
		||||
            this.Given(x => x.GivenTheFollowingIsCached("someKey", "someRegion", "someValue"))
 | 
			
		||||
                .When(x => x.WhenIGetFromTheCache())
 | 
			
		||||
                .Then(x => x.ThenTheResultIs("someValue"))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_add_to_cache()
 | 
			
		||||
        {
 | 
			
		||||
            this.When(x => x.WhenIAddToTheCache("someKey", "someValue", TimeSpan.FromSeconds(1)))
 | 
			
		||||
                .Then(x => x.ThenTheCacheIsCalledCorrectly())
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_delete_key_from_cache()
 | 
			
		||||
        {
 | 
			
		||||
            this.Given(_ => GivenTheFollowingRegion("fookey"))
 | 
			
		||||
                .When(_ => WhenIDeleteTheRegion("fookey"))
 | 
			
		||||
                .Then(_ => ThenTheRegionIsDeleted("fookey"))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void WhenIDeleteTheRegion(string region)
 | 
			
		||||
        {
 | 
			
		||||
            _ocelotOcelotCacheManager.ClearRegion(region);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheRegionIsDeleted(string region)
 | 
			
		||||
        {
 | 
			
		||||
            _mockCacheManager
 | 
			
		||||
                .Verify(x => x.ClearRegion(region), Times.Once);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenTheFollowingRegion(string key)
 | 
			
		||||
        {
 | 
			
		||||
            _ocelotOcelotCacheManager.Add(key, "doesnt matter", TimeSpan.FromSeconds(10), "region");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void WhenIAddToTheCache(string key, string value, TimeSpan ttlSeconds)
 | 
			
		||||
        {
 | 
			
		||||
            _key = key;
 | 
			
		||||
            _value = value;
 | 
			
		||||
            _ttlSeconds = ttlSeconds;
 | 
			
		||||
            _ocelotOcelotCacheManager.Add(_key, _value, _ttlSeconds, "region");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheCacheIsCalledCorrectly()
 | 
			
		||||
        {
 | 
			
		||||
            _mockCacheManager
 | 
			
		||||
                .Verify(x => x.Add(It.IsAny<CacheItem<string>>()), Times.Once);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheResultIs(string expected)
 | 
			
		||||
        {
 | 
			
		||||
            _resultGet.ShouldBe(expected);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void WhenIGetFromTheCache()
 | 
			
		||||
        {
 | 
			
		||||
            _resultGet = _ocelotOcelotCacheManager.Get(_key, _region);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenTheFollowingIsCached(string key, string region, string value)
 | 
			
		||||
        {
 | 
			
		||||
            _key = key;
 | 
			
		||||
            _value = value;
 | 
			
		||||
            _region = region;
 | 
			
		||||
            _mockCacheManager
 | 
			
		||||
                .Setup(x => x.Get<string>(It.IsAny<string>(), It.IsAny<string>()))
 | 
			
		||||
                .Returns(value);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
using System;
 | 
			
		||||
using CacheManager.Core;
 | 
			
		||||
using Moq;
 | 
			
		||||
using Ocelot.Cache;
 | 
			
		||||
using Shouldly;
 | 
			
		||||
using TestStack.BDDfy;
 | 
			
		||||
using Xunit;
 | 
			
		||||
 | 
			
		||||
namespace Ocelot.UnitTests.Cache
 | 
			
		||||
{
 | 
			
		||||
    public class CacheManagerCacheTests
 | 
			
		||||
    {
 | 
			
		||||
        private OcelotCacheManagerCache<string> _ocelotOcelotCacheManager;
 | 
			
		||||
        private Mock<ICacheManager<string>> _mockCacheManager;
 | 
			
		||||
        private string _key;
 | 
			
		||||
        private string _value;
 | 
			
		||||
        private string _resultGet;
 | 
			
		||||
        private TimeSpan _ttlSeconds;
 | 
			
		||||
        private string _region;
 | 
			
		||||
 | 
			
		||||
        public CacheManagerCacheTests()
 | 
			
		||||
        {
 | 
			
		||||
            _mockCacheManager = new Mock<ICacheManager<string>>();
 | 
			
		||||
            _ocelotOcelotCacheManager = new OcelotCacheManagerCache<string>(_mockCacheManager.Object);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_get_from_cache()
 | 
			
		||||
        {
 | 
			
		||||
            this.Given(x => x.GivenTheFollowingIsCached("someKey", "someRegion", "someValue"))
 | 
			
		||||
                .When(x => x.WhenIGetFromTheCache())
 | 
			
		||||
                .Then(x => x.ThenTheResultIs("someValue"))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_add_to_cache()
 | 
			
		||||
        {
 | 
			
		||||
            this.When(x => x.WhenIAddToTheCache("someKey", "someValue", TimeSpan.FromSeconds(1)))
 | 
			
		||||
                .Then(x => x.ThenTheCacheIsCalledCorrectly())
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_delete_key_from_cache()
 | 
			
		||||
        {
 | 
			
		||||
            this.Given(_ => GivenTheFollowingRegion("fookey"))
 | 
			
		||||
                .When(_ => WhenIDeleteTheRegion("fookey"))
 | 
			
		||||
                .Then(_ => ThenTheRegionIsDeleted("fookey"))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void WhenIDeleteTheRegion(string region)
 | 
			
		||||
        {
 | 
			
		||||
            _ocelotOcelotCacheManager.ClearRegion(region);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheRegionIsDeleted(string region)
 | 
			
		||||
        {
 | 
			
		||||
            _mockCacheManager
 | 
			
		||||
                .Verify(x => x.ClearRegion(region), Times.Once);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenTheFollowingRegion(string key)
 | 
			
		||||
        {
 | 
			
		||||
            _ocelotOcelotCacheManager.Add(key, "doesnt matter", TimeSpan.FromSeconds(10), "region");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void WhenIAddToTheCache(string key, string value, TimeSpan ttlSeconds)
 | 
			
		||||
        {
 | 
			
		||||
            _key = key;
 | 
			
		||||
            _value = value;
 | 
			
		||||
            _ttlSeconds = ttlSeconds;
 | 
			
		||||
            _ocelotOcelotCacheManager.Add(_key, _value, _ttlSeconds, "region");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheCacheIsCalledCorrectly()
 | 
			
		||||
        {
 | 
			
		||||
            _mockCacheManager
 | 
			
		||||
                .Verify(x => x.Add(It.IsAny<CacheItem<string>>()), Times.Once);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheResultIs(string expected)
 | 
			
		||||
        {
 | 
			
		||||
            _resultGet.ShouldBe(expected);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void WhenIGetFromTheCache()
 | 
			
		||||
        {
 | 
			
		||||
            _resultGet = _ocelotOcelotCacheManager.Get(_key, _region);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenTheFollowingIsCached(string key, string region, string value)
 | 
			
		||||
        {
 | 
			
		||||
            _key = key;
 | 
			
		||||
            _value = value;
 | 
			
		||||
            _region = region;
 | 
			
		||||
            _mockCacheManager
 | 
			
		||||
                .Setup(x => x.Get<string>(It.IsAny<string>(), It.IsAny<string>()))
 | 
			
		||||
                .Returns(value);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,130 +1,130 @@
 | 
			
		||||
namespace Ocelot.UnitTests.Cache
 | 
			
		||||
{
 | 
			
		||||
    using System;
 | 
			
		||||
    using System.Collections.Generic;
 | 
			
		||||
    using System.Net.Http;
 | 
			
		||||
    using Microsoft.AspNetCore.Builder;
 | 
			
		||||
    using Microsoft.Extensions.DependencyInjection;
 | 
			
		||||
    using Moq;
 | 
			
		||||
    using Ocelot.Cache;
 | 
			
		||||
    using Ocelot.Cache.Middleware;
 | 
			
		||||
    using Ocelot.Configuration;
 | 
			
		||||
    using Ocelot.Configuration.Builder;
 | 
			
		||||
    using Ocelot.DownstreamRouteFinder;
 | 
			
		||||
    using Ocelot.DownstreamRouteFinder.UrlMatcher;
 | 
			
		||||
    using Ocelot.Logging;
 | 
			
		||||
    using Ocelot.Responses;
 | 
			
		||||
    using TestStack.BDDfy;
 | 
			
		||||
    using Xunit;
 | 
			
		||||
 | 
			
		||||
    public class OutputCacheMiddlewareTests : ServerHostedMiddlewareTest
 | 
			
		||||
    {
 | 
			
		||||
        private readonly Mock<IOcelotCache<CachedResponse>> _cacheManager;
 | 
			
		||||
        private CachedResponse _response;
 | 
			
		||||
 | 
			
		||||
        public OutputCacheMiddlewareTests()
 | 
			
		||||
        {
 | 
			
		||||
            _cacheManager = new Mock<IOcelotCache<CachedResponse>>();
 | 
			
		||||
 | 
			
		||||
            ScopedRepository
 | 
			
		||||
                .Setup(sr => sr.Get<HttpRequestMessage>("DownstreamRequest"))
 | 
			
		||||
                .Returns(new OkResponse<HttpRequestMessage>(new HttpRequestMessage(HttpMethod.Get, "https://some.url/blah?abcd=123")));
 | 
			
		||||
 | 
			
		||||
            GivenTheTestServerIsConfigured();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_returned_cached_item_when_it_is_in_cache()
 | 
			
		||||
        {
 | 
			
		||||
            var cachedResponse = new CachedResponse();
 | 
			
		||||
            this.Given(x => x.GivenThereIsACachedResponse(cachedResponse))
 | 
			
		||||
                .And(x => x.GivenTheDownstreamRouteIs())
 | 
			
		||||
                .And(x => x.GivenThereIsADownstreamUrl())
 | 
			
		||||
                .When(x => x.WhenICallTheMiddleware())
 | 
			
		||||
                .Then(x => x.ThenTheCacheGetIsCalledCorrectly())
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_continue_with_pipeline_and_cache_response()
 | 
			
		||||
        {
 | 
			
		||||
            this.Given(x => x.GivenResponseIsNotCached())
 | 
			
		||||
                .And(x => x.GivenTheDownstreamRouteIs())
 | 
			
		||||
                .And(x => x.GivenThereAreNoErrors())
 | 
			
		||||
                .And(x => x.GivenThereIsADownstreamUrl())
 | 
			
		||||
                .When(x => x.WhenICallTheMiddleware())
 | 
			
		||||
                .Then(x => x.ThenTheCacheAddIsCalledCorrectly())
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected override void GivenTheTestServerServicesAreConfigured(IServiceCollection services)
 | 
			
		||||
        {
 | 
			
		||||
            services.AddSingleton<IOcelotLoggerFactory, AspDotNetLoggerFactory>();
 | 
			
		||||
            services.AddLogging();
 | 
			
		||||
            services.AddSingleton(_cacheManager.Object);
 | 
			
		||||
            services.AddSingleton(ScopedRepository.Object);
 | 
			
		||||
            services.AddSingleton<IRegionCreator, RegionCreator>();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected override void GivenTheTestServerPipelineIsConfigured(IApplicationBuilder app)
 | 
			
		||||
        {
 | 
			
		||||
            app.UseOutputCacheMiddleware();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenThereIsACachedResponse(CachedResponse response)
 | 
			
		||||
        {
 | 
			
		||||
            _response = response;
 | 
			
		||||
            _cacheManager
 | 
			
		||||
              .Setup(x => x.Get(It.IsAny<string>(), It.IsAny<string>()))
 | 
			
		||||
              .Returns(_response);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenResponseIsNotCached()
 | 
			
		||||
        {
 | 
			
		||||
            ScopedRepository
 | 
			
		||||
                .Setup(x => x.Get<HttpResponseMessage>("HttpResponseMessage"))
 | 
			
		||||
                .Returns(new OkResponse<HttpResponseMessage>(new HttpResponseMessage()));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenTheDownstreamRouteIs()
 | 
			
		||||
        {
 | 
			
		||||
            var reRoute = new ReRouteBuilder()
 | 
			
		||||
                .WithIsCached(true)
 | 
			
		||||
                .WithCacheOptions(new CacheOptions(100, "kanken"))
 | 
			
		||||
                .WithUpstreamHttpMethod(new List<string> { "Get" })
 | 
			
		||||
                .Build();
 | 
			
		||||
                
 | 
			
		||||
            var downstreamRoute = new DownstreamRoute(new List<PlaceholderNameAndValue>(), reRoute);
 | 
			
		||||
 | 
			
		||||
            ScopedRepository
 | 
			
		||||
                .Setup(x => x.Get<DownstreamRoute>(It.IsAny<string>()))
 | 
			
		||||
                .Returns(new OkResponse<DownstreamRoute>(downstreamRoute));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenThereAreNoErrors()
 | 
			
		||||
        {
 | 
			
		||||
            ScopedRepository
 | 
			
		||||
                .Setup(x => x.Get<bool>("OcelotMiddlewareError"))
 | 
			
		||||
                .Returns(new OkResponse<bool>(false));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenThereIsADownstreamUrl()
 | 
			
		||||
        {
 | 
			
		||||
            ScopedRepository
 | 
			
		||||
                .Setup(x => x.Get<string>("DownstreamUrl"))
 | 
			
		||||
                .Returns(new OkResponse<string>("anything"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheCacheGetIsCalledCorrectly()
 | 
			
		||||
        {
 | 
			
		||||
            _cacheManager
 | 
			
		||||
                .Verify(x => x.Get(It.IsAny<string>(), It.IsAny<string>()), Times.Once);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheCacheAddIsCalledCorrectly()
 | 
			
		||||
        {
 | 
			
		||||
            _cacheManager
 | 
			
		||||
                .Verify(x => x.Add(It.IsAny<string>(), It.IsAny<CachedResponse>(), It.IsAny<TimeSpan>(), It.IsAny<string>()), Times.Once);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
namespace Ocelot.UnitTests.Cache
 | 
			
		||||
{
 | 
			
		||||
    using System;
 | 
			
		||||
    using System.Collections.Generic;
 | 
			
		||||
    using System.Net.Http;
 | 
			
		||||
    using Microsoft.AspNetCore.Builder;
 | 
			
		||||
    using Microsoft.Extensions.DependencyInjection;
 | 
			
		||||
    using Moq;
 | 
			
		||||
    using Ocelot.Cache;
 | 
			
		||||
    using Ocelot.Cache.Middleware;
 | 
			
		||||
    using Ocelot.Configuration;
 | 
			
		||||
    using Ocelot.Configuration.Builder;
 | 
			
		||||
    using Ocelot.DownstreamRouteFinder;
 | 
			
		||||
    using Ocelot.DownstreamRouteFinder.UrlMatcher;
 | 
			
		||||
    using Ocelot.Logging;
 | 
			
		||||
    using Ocelot.Responses;
 | 
			
		||||
    using TestStack.BDDfy;
 | 
			
		||||
    using Xunit;
 | 
			
		||||
 | 
			
		||||
    public class OutputCacheMiddlewareTests : ServerHostedMiddlewareTest
 | 
			
		||||
    {
 | 
			
		||||
        private readonly Mock<IOcelotCache<CachedResponse>> _cacheManager;
 | 
			
		||||
        private CachedResponse _response;
 | 
			
		||||
 | 
			
		||||
        public OutputCacheMiddlewareTests()
 | 
			
		||||
        {
 | 
			
		||||
            _cacheManager = new Mock<IOcelotCache<CachedResponse>>();
 | 
			
		||||
 | 
			
		||||
            ScopedRepository
 | 
			
		||||
                .Setup(sr => sr.Get<HttpRequestMessage>("DownstreamRequest"))
 | 
			
		||||
                .Returns(new OkResponse<HttpRequestMessage>(new HttpRequestMessage(HttpMethod.Get, "https://some.url/blah?abcd=123")));
 | 
			
		||||
 | 
			
		||||
            GivenTheTestServerIsConfigured();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_returned_cached_item_when_it_is_in_cache()
 | 
			
		||||
        {
 | 
			
		||||
            var cachedResponse = new CachedResponse();
 | 
			
		||||
            this.Given(x => x.GivenThereIsACachedResponse(cachedResponse))
 | 
			
		||||
                .And(x => x.GivenTheDownstreamRouteIs())
 | 
			
		||||
                .And(x => x.GivenThereIsADownstreamUrl())
 | 
			
		||||
                .When(x => x.WhenICallTheMiddleware())
 | 
			
		||||
                .Then(x => x.ThenTheCacheGetIsCalledCorrectly())
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_continue_with_pipeline_and_cache_response()
 | 
			
		||||
        {
 | 
			
		||||
            this.Given(x => x.GivenResponseIsNotCached())
 | 
			
		||||
                .And(x => x.GivenTheDownstreamRouteIs())
 | 
			
		||||
                .And(x => x.GivenThereAreNoErrors())
 | 
			
		||||
                .And(x => x.GivenThereIsADownstreamUrl())
 | 
			
		||||
                .When(x => x.WhenICallTheMiddleware())
 | 
			
		||||
                .Then(x => x.ThenTheCacheAddIsCalledCorrectly())
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected override void GivenTheTestServerServicesAreConfigured(IServiceCollection services)
 | 
			
		||||
        {
 | 
			
		||||
            services.AddSingleton<IOcelotLoggerFactory, AspDotNetLoggerFactory>();
 | 
			
		||||
            services.AddLogging();
 | 
			
		||||
            services.AddSingleton(_cacheManager.Object);
 | 
			
		||||
            services.AddSingleton(ScopedRepository.Object);
 | 
			
		||||
            services.AddSingleton<IRegionCreator, RegionCreator>();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected override void GivenTheTestServerPipelineIsConfigured(IApplicationBuilder app)
 | 
			
		||||
        {
 | 
			
		||||
            app.UseOutputCacheMiddleware();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenThereIsACachedResponse(CachedResponse response)
 | 
			
		||||
        {
 | 
			
		||||
            _response = response;
 | 
			
		||||
            _cacheManager
 | 
			
		||||
              .Setup(x => x.Get(It.IsAny<string>(), It.IsAny<string>()))
 | 
			
		||||
              .Returns(_response);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenResponseIsNotCached()
 | 
			
		||||
        {
 | 
			
		||||
            ScopedRepository
 | 
			
		||||
                .Setup(x => x.Get<HttpResponseMessage>("HttpResponseMessage"))
 | 
			
		||||
                .Returns(new OkResponse<HttpResponseMessage>(new HttpResponseMessage()));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenTheDownstreamRouteIs()
 | 
			
		||||
        {
 | 
			
		||||
            var reRoute = new ReRouteBuilder()
 | 
			
		||||
                .WithIsCached(true)
 | 
			
		||||
                .WithCacheOptions(new CacheOptions(100, "kanken"))
 | 
			
		||||
                .WithUpstreamHttpMethod(new List<string> { "Get" })
 | 
			
		||||
                .Build();
 | 
			
		||||
                
 | 
			
		||||
            var downstreamRoute = new DownstreamRoute(new List<PlaceholderNameAndValue>(), reRoute);
 | 
			
		||||
 | 
			
		||||
            ScopedRepository
 | 
			
		||||
                .Setup(x => x.Get<DownstreamRoute>(It.IsAny<string>()))
 | 
			
		||||
                .Returns(new OkResponse<DownstreamRoute>(downstreamRoute));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenThereAreNoErrors()
 | 
			
		||||
        {
 | 
			
		||||
            ScopedRepository
 | 
			
		||||
                .Setup(x => x.Get<bool>("OcelotMiddlewareError"))
 | 
			
		||||
                .Returns(new OkResponse<bool>(false));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void GivenThereIsADownstreamUrl()
 | 
			
		||||
        {
 | 
			
		||||
            ScopedRepository
 | 
			
		||||
                .Setup(x => x.Get<string>("DownstreamUrl"))
 | 
			
		||||
                .Returns(new OkResponse<string>("anything"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheCacheGetIsCalledCorrectly()
 | 
			
		||||
        {
 | 
			
		||||
            _cacheManager
 | 
			
		||||
                .Verify(x => x.Get(It.IsAny<string>(), It.IsAny<string>()), Times.Once);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheCacheAddIsCalledCorrectly()
 | 
			
		||||
        {
 | 
			
		||||
            _cacheManager
 | 
			
		||||
                .Verify(x => x.Add(It.IsAny<string>(), It.IsAny<CachedResponse>(), It.IsAny<TimeSpan>(), It.IsAny<string>()), Times.Once);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,65 +1,65 @@
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using Ocelot.Cache;
 | 
			
		||||
using Ocelot.Configuration;
 | 
			
		||||
using Ocelot.Configuration.Builder;
 | 
			
		||||
using Ocelot.Configuration.File;
 | 
			
		||||
using Shouldly;
 | 
			
		||||
using TestStack.BDDfy;
 | 
			
		||||
using Xunit;
 | 
			
		||||
 | 
			
		||||
namespace Ocelot.UnitTests.Cache
 | 
			
		||||
{
 | 
			
		||||
    public class RegionCreatorTests
 | 
			
		||||
    {
 | 
			
		||||
        private string _result;
 | 
			
		||||
        private FileReRoute _reRoute;
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_create_region()
 | 
			
		||||
        {
 | 
			
		||||
            var reRoute = new FileReRoute
 | 
			
		||||
            {
 | 
			
		||||
                UpstreamHttpMethod = new List<string> { "Get" },
 | 
			
		||||
                UpstreamPathTemplate = "/testdummy"
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheReRoute(reRoute))
 | 
			
		||||
                .When(_ => WhenICreateTheRegion())
 | 
			
		||||
                .Then(_ => ThenTheRegionIs("Gettestdummy"))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_use_region()
 | 
			
		||||
        {
 | 
			
		||||
            var reRoute = new FileReRoute
 | 
			
		||||
            {
 | 
			
		||||
                FileCacheOptions = new FileCacheOptions
 | 
			
		||||
                {
 | 
			
		||||
                    Region = "region"
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheReRoute(reRoute))
 | 
			
		||||
                .When(_ => WhenICreateTheRegion())
 | 
			
		||||
                .Then(_ => ThenTheRegionIs("region"))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        private void GivenTheReRoute(FileReRoute reRoute)
 | 
			
		||||
        {
 | 
			
		||||
            _reRoute = reRoute;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void WhenICreateTheRegion()
 | 
			
		||||
        {            
 | 
			
		||||
            RegionCreator regionCreator = new RegionCreator();
 | 
			
		||||
            _result = regionCreator.Create(_reRoute);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheRegionIs(string expected)
 | 
			
		||||
        {
 | 
			
		||||
            _result.ShouldBe(expected);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using Ocelot.Cache;
 | 
			
		||||
using Ocelot.Configuration;
 | 
			
		||||
using Ocelot.Configuration.Builder;
 | 
			
		||||
using Ocelot.Configuration.File;
 | 
			
		||||
using Shouldly;
 | 
			
		||||
using TestStack.BDDfy;
 | 
			
		||||
using Xunit;
 | 
			
		||||
 | 
			
		||||
namespace Ocelot.UnitTests.Cache
 | 
			
		||||
{
 | 
			
		||||
    public class RegionCreatorTests
 | 
			
		||||
    {
 | 
			
		||||
        private string _result;
 | 
			
		||||
        private FileReRoute _reRoute;
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_create_region()
 | 
			
		||||
        {
 | 
			
		||||
            var reRoute = new FileReRoute
 | 
			
		||||
            {
 | 
			
		||||
                UpstreamHttpMethod = new List<string> { "Get" },
 | 
			
		||||
                UpstreamPathTemplate = "/testdummy"
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheReRoute(reRoute))
 | 
			
		||||
                .When(_ => WhenICreateTheRegion())
 | 
			
		||||
                .Then(_ => ThenTheRegionIs("Gettestdummy"))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void should_use_region()
 | 
			
		||||
        {
 | 
			
		||||
            var reRoute = new FileReRoute
 | 
			
		||||
            {
 | 
			
		||||
                FileCacheOptions = new FileCacheOptions
 | 
			
		||||
                {
 | 
			
		||||
                    Region = "region"
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            this.Given(_ => GivenTheReRoute(reRoute))
 | 
			
		||||
                .When(_ => WhenICreateTheRegion())
 | 
			
		||||
                .Then(_ => ThenTheRegionIs("region"))
 | 
			
		||||
                .BDDfy();
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        private void GivenTheReRoute(FileReRoute reRoute)
 | 
			
		||||
        {
 | 
			
		||||
            _reRoute = reRoute;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void WhenICreateTheRegion()
 | 
			
		||||
        {            
 | 
			
		||||
            RegionCreator regionCreator = new RegionCreator();
 | 
			
		||||
            _result = regionCreator.Create(_reRoute);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ThenTheRegionIs(string expected)
 | 
			
		||||
        {
 | 
			
		||||
            _result.ShouldBe(expected);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user