mirror of
				https://github.com/nsnail/Ocelot.git
				synced 2025-11-04 09:35:27 +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);
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |