mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-05-02 21:02:50 +08:00

* changed name to cache options to fix issue #146 * Add acceptance test that exposes JSON deserialization bug from issue #146 - Create InMemoryJsonHandle for CacheManager that mimics DictionaryHandle but uses ICacheSerializer to serialize/deserialize values instead of saving references - Add CacheManager.Serialization.Json package - Add StartupWithCustomCacheHandle class that extends Startup and overrides ConfigureServices to register InMemoryJsonHandle - Add GivenOcelotIsRunningUsingConsulToStoreConfigAndJsonSerializedCache method to initiate Ocelot with StartupWithCustomCacheHandle - Add test should_return_response_200_with_simple_url_when_using_jsonserialized_cache * Create Acceptance test that exposes issue #152 - Add GivenOcelotIsRunningUsingJsonSerializedCache() that initializes Ocelot with InMemoryJsonHandle - Add should_return_cached_response_when_using_jsonserialized_cache test * Change Consul port to 9502 on should_return_response_200_with_simple_url_when_using_jsonserialized_cache() test * Implement mapping of HttpResponseMessage to CachedResponse to enable distributed caching - Add CachedResponse class that holds HttpResponse data - Add mapping methods in OutputCacheMiddleware to create HttpResponseMessage from CachedResponse and vice versa - Replace HttpResponseMessage with CachedResponse in services registrations - Replace HttpResponseMessage with CachedResponse in OutputCacheController's IOcelotCache * Fix unit tests for OutputCacheMiddleware and OutputCacheController by replacing HttpResponseMessage with CachedResponse * Add .editorconfig with default identation settings (spaces with size 4) * Re-format broken files with new identation settings * Add Startup_WithConsul_And_CustomCacheHandle class - Use Startup_WithConsul_And_CustomCacheHandle in GivenOcelotIsRunningUsingConsulToStoreConfigAndJsonSerializedCache step * Do minor cleanups - Rename StartupWithCustomCacheHandle to Startup_WithCustomCacheHandle for better readability - Remove cachemanager settings Action in Startup since it is not used anymore * Drop Task in CreateHttpResponseMessage - unnecessary overhead * Make setters private in CachedResponse - Rework CreateCachedResponse to use new CachedResponse constructor
46 lines
1.2 KiB
C#
46 lines
1.2 KiB
C#
using Xunit;
|
|
using Shouldly;
|
|
using TestStack.BDDfy;
|
|
using Ocelot.Controllers;
|
|
using System;
|
|
using Moq;
|
|
using Ocelot.Cache;
|
|
using System.Net.Http;
|
|
using System.Collections.Generic;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Ocelot.UnitTests.Controllers
|
|
{
|
|
public class OutputCacheControllerTests
|
|
{
|
|
private OutputCacheController _controller;
|
|
private Mock<IOcelotCache<CachedResponse>> _cache;
|
|
private IActionResult _result;
|
|
|
|
public OutputCacheControllerTests()
|
|
{
|
|
_cache = new Mock<IOcelotCache<CachedResponse>>();
|
|
_controller = new OutputCacheController(_cache.Object);
|
|
}
|
|
|
|
[Fact]
|
|
public void should_delete_key()
|
|
{
|
|
this.When(_ => WhenIDeleteTheKey("a"))
|
|
.Then(_ => ThenTheKeyIsDeleted("a"))
|
|
.BDDfy();
|
|
}
|
|
|
|
private void ThenTheKeyIsDeleted(string key)
|
|
{
|
|
_result.ShouldBeOfType<NoContentResult>();
|
|
_cache
|
|
.Verify(x => x.ClearRegion(key), Times.Once);
|
|
}
|
|
|
|
private void WhenIDeleteTheKey(string key)
|
|
{
|
|
_result = _controller.Delete(key);
|
|
}
|
|
}
|
|
} |