mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-04-25 20:32:52 +08:00
122 lines
4.1 KiB
C#
122 lines
4.1 KiB
C#
using Ocelot.Configuration.Creator;
|
|
using Ocelot.Configuration.File;
|
|
using Shouldly;
|
|
using TestStack.BDDfy;
|
|
using Xunit;
|
|
|
|
namespace Ocelot.UnitTests.Configuration
|
|
{
|
|
public class UpstreamTemplatePatternCreatorTests
|
|
{
|
|
private FileReRoute _fileReRoute;
|
|
private UpstreamTemplatePatternCreator _creator;
|
|
private string _result;
|
|
|
|
public UpstreamTemplatePatternCreatorTests()
|
|
{
|
|
_creator = new UpstreamTemplatePatternCreator();
|
|
}
|
|
|
|
[Fact]
|
|
public void should_set_upstream_template_pattern_to_ignore_case_sensitivity()
|
|
{
|
|
var fileReRoute = new FileReRoute
|
|
{
|
|
UpstreamPathTemplate = "/PRODUCTS/{productId}",
|
|
ReRouteIsCaseSensitive = false
|
|
};
|
|
|
|
this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
|
|
.When(x => x.WhenICreateTheTemplatePattern())
|
|
.Then(x => x.ThenTheFollowingIsReturned("(?i)/PRODUCTS/.*/$"))
|
|
.BDDfy();
|
|
}
|
|
|
|
[Fact]
|
|
public void should_set_upstream_template_pattern_to_respect_case_sensitivity()
|
|
{
|
|
var fileReRoute = new FileReRoute
|
|
{
|
|
UpstreamPathTemplate = "/PRODUCTS/{productId}",
|
|
ReRouteIsCaseSensitive = true
|
|
};
|
|
this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
|
|
.When(x => x.WhenICreateTheTemplatePattern())
|
|
.Then(x => x.ThenTheFollowingIsReturned("/PRODUCTS/.*/$"))
|
|
.BDDfy();
|
|
}
|
|
|
|
[Fact]
|
|
public void should_create_template_pattern_that_matches_anything_to_end_of_string()
|
|
{
|
|
var fileReRoute = new FileReRoute
|
|
{
|
|
UpstreamPathTemplate = "/api/products/{productId}",
|
|
ReRouteIsCaseSensitive = true
|
|
};
|
|
|
|
this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
|
|
.When(x => x.WhenICreateTheTemplatePattern())
|
|
.Then(x => x.ThenTheFollowingIsReturned("/api/products/.*/$"))
|
|
.BDDfy();
|
|
}
|
|
|
|
[Fact]
|
|
public void should_create_template_pattern_that_matches_more_than_one_placeholder()
|
|
{
|
|
var fileReRoute = new FileReRoute
|
|
{
|
|
UpstreamPathTemplate = "/api/products/{productId}/variants/{variantId}",
|
|
ReRouteIsCaseSensitive = true
|
|
};
|
|
|
|
this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
|
|
.When(x => x.WhenICreateTheTemplatePattern())
|
|
.Then(x => x.ThenTheFollowingIsReturned("/api/products/.*/variants/.*/$"))
|
|
.BDDfy();
|
|
}
|
|
[Fact]
|
|
public void should_create_template_pattern_that_matches_more_than_one_placeholder_with_trailing_slash()
|
|
{
|
|
var fileReRoute = new FileReRoute
|
|
{
|
|
UpstreamPathTemplate = "/api/products/{productId}/variants/{variantId}/",
|
|
ReRouteIsCaseSensitive = true
|
|
};
|
|
|
|
this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
|
|
.When(x => x.WhenICreateTheTemplatePattern())
|
|
.Then(x => x.ThenTheFollowingIsReturned("/api/products/.*/variants/.*/$"))
|
|
.BDDfy();
|
|
}
|
|
|
|
[Fact]
|
|
public void should_create_template_pattern_that_matches_to_end_of_string()
|
|
{
|
|
var fileReRoute = new FileReRoute
|
|
{
|
|
UpstreamPathTemplate = "/"
|
|
};
|
|
|
|
this.Given(x => x.GivenTheFollowingFileReRoute(fileReRoute))
|
|
.When(x => x.WhenICreateTheTemplatePattern())
|
|
.Then(x => x.ThenTheFollowingIsReturned("^/$"))
|
|
.BDDfy();
|
|
}
|
|
|
|
private void GivenTheFollowingFileReRoute(FileReRoute fileReRoute)
|
|
{
|
|
_fileReRoute = fileReRoute;
|
|
}
|
|
|
|
private void WhenICreateTheTemplatePattern()
|
|
{
|
|
_result = _creator.Create(_fileReRoute);
|
|
}
|
|
|
|
private void ThenTheFollowingIsReturned(string expected)
|
|
{
|
|
_result.ShouldBe(expected);
|
|
}
|
|
}
|
|
} |