Ocelot/test/Ocelot.UnitTests/UrlPathToUrlPathTemplateMatcherTests.cs
2016-07-10 17:11:12 +01:00

79 lines
3.2 KiB
C#

using Ocelot.Library.Infrastructure.UrlPathMatcher;
using Shouldly;
using Xunit;
namespace Ocelot.UnitTests
{
public class UrlPathToUrlPathTemplateMatcherTests
{
private IUrlPathToUrlPathTemplateMatcher _urlMapper;
public UrlPathToUrlPathTemplateMatcherTests()
{
_urlMapper = new UrlPathToUrlPathTemplateMatcher();
}
[Fact]
public void can_match_down_stream_url_with_downstream_template_with_one_query_string_parameter()
{
var downstreamUrl = "api/product/products/?soldout=false";
var downstreamTemplate = "api/product/products/";
var result = _urlMapper.Match(downstreamUrl, downstreamTemplate);
result.ShouldBeTrue();
}
[Fact]
public void can_match_down_stream_url_with_downstream_template_with_one_query_string_parameter_and_one_template()
{
var downstreamUrl = "api/product/products/1/variants/?soldout=false";
var downstreamTemplate = "api/product/products/{productId}/variants/";
var result = _urlMapper.Match(downstreamUrl, downstreamTemplate);
result.ShouldBeTrue();
}
[Fact]
public void can_match_down_stream_url_with_downstream_template_with_one_place_holder()
{
var downstreamUrl = "api/product/products/1";
var downstreamTemplate = "api/product/products/{productId}";
var result = _urlMapper.Match(downstreamUrl, downstreamTemplate);
result.ShouldBeTrue();
}
[Fact]
public void can_match_down_stream_url_with_downstream_template_with_two_place_holders()
{
var downstreamUrl = "api/product/products/1/2";
var downstreamTemplate = "api/product/products/{productId}/{categoryId}";
var result = _urlMapper.Match(downstreamUrl, downstreamTemplate);
result.ShouldBeTrue();
}
[Fact]
public void can_match_down_stream_url_with_downstream_template_with_two_place_holders_seperated_by_something()
{
var downstreamUrl = "api/product/products/1/categories/2";
var downstreamTemplate = "api/product/products/{productId}/categories/{categoryId}";
var result = _urlMapper.Match(downstreamUrl, downstreamTemplate);
result.ShouldBeTrue();
}
[Fact]
public void can_match_down_stream_url_with_downstream_template_with_three_place_holders_seperated_by_something()
{
var downstreamUrl = "api/product/products/1/categories/2/variant/123";
var downstreamTemplate = "api/product/products/{productId}/categories/{categoryId}/variant/{variantId}";
var result = _urlMapper.Match(downstreamUrl, downstreamTemplate);
result.ShouldBeTrue();
}
[Fact]
public void can_match_down_stream_url_with_downstream_template_with_three_place_holders()
{
var downstreamUrl = "api/product/products/1/categories/2/variant/";
var downstreamTemplate = "api/product/products/{productId}/categories/{categoryId}/variant/";
var result = _urlMapper.Match(downstreamUrl, downstreamTemplate);
result.ShouldBeTrue();
}
}
}