mirror of
				https://github.com/nsnail/Ocelot.git
				synced 2025-10-31 15:45:28 +08:00 
			
		
		
		
	UpstreamHttpMethod property (of class FileReRoute) changes from string to List<string>.
This commit is contained in:
		| @@ -67,11 +67,13 @@ namespace Ocelot.Configuration.Builder | ||||
|             _upstreamTemplatePattern = input; | ||||
|             return this; | ||||
|         } | ||||
|         public ReRouteBuilder WithUpstreamHttpMethod(string input) | ||||
|  | ||||
|         public ReRouteBuilder WithUpstreamHttpMethod(List<string> input) | ||||
|         { | ||||
|             _upstreamHttpMethod = string.IsNullOrWhiteSpace(input) ? new List<HttpMethod>() : input.Split(',').Select(x => new HttpMethod(x.Trim())).ToList(); | ||||
|             _upstreamHttpMethod = (input.Count == 0) ? new List<HttpMethod>() : input.Select(x => new HttpMethod(x.Trim())).ToList(); | ||||
|             return this; | ||||
|         } | ||||
|  | ||||
|         public ReRouteBuilder WithIsAuthenticated(bool input) | ||||
|         { | ||||
|             _isAuthenticated = input; | ||||
| @@ -144,7 +146,6 @@ namespace Ocelot.Configuration.Builder | ||||
|             return this; | ||||
|         } | ||||
|         | ||||
|  | ||||
|         public ReRouteBuilder WithLoadBalancerKey(string loadBalancerKey) | ||||
|         { | ||||
|             _loadBalancerKey = loadBalancerKey; | ||||
|   | ||||
| @@ -6,6 +6,7 @@ namespace Ocelot.Configuration.File | ||||
|     { | ||||
|         public FileReRoute() | ||||
|         { | ||||
|             UpstreamHttpMethod = new List<string>(); | ||||
|             AddHeadersToRequest = new Dictionary<string, string>(); | ||||
|             AddClaimsToRequest = new Dictionary<string, string>(); | ||||
|             RouteClaimsRequirement = new Dictionary<string, string>(); | ||||
| @@ -18,7 +19,7 @@ namespace Ocelot.Configuration.File | ||||
|  | ||||
|         public string DownstreamPathTemplate { get; set; } | ||||
|         public string UpstreamPathTemplate { get; set; } | ||||
|         public string UpstreamHttpMethod { get; set; } | ||||
|         public List<string> UpstreamHttpMethod { get; set; } | ||||
|         public FileAuthenticationOptions AuthenticationOptions { get; set; } | ||||
|         public Dictionary<string, string> AddHeadersToRequest { get; set; } | ||||
|         public Dictionary<string, string> AddClaimsToRequest { get; set; } | ||||
|   | ||||
| @@ -12,7 +12,7 @@ namespace Ocelot.Configuration.Validator | ||||
|     { | ||||
|         public Response<ConfigurationValidationResult> IsValid(FileConfiguration configuration) | ||||
|         { | ||||
|             var result = CheckForDupliateReRoutes(configuration); | ||||
|             var result = CheckForDuplicateReRoutes(configuration); | ||||
|  | ||||
|             if (result.IsError) | ||||
|             { | ||||
| @@ -91,25 +91,41 @@ namespace Ocelot.Configuration.Validator | ||||
|             return new ConfigurationValidationResult(false, errors); | ||||
|         } | ||||
|  | ||||
|         private ConfigurationValidationResult CheckForDupliateReRoutes(FileConfiguration configuration) | ||||
|         { | ||||
|             var hasDupes = configuration.ReRoutes | ||||
|                    .GroupBy(x => new { x.UpstreamPathTemplate, x.UpstreamHttpMethod }).Any(x => x.Skip(1).Any()); | ||||
|         private ConfigurationValidationResult CheckForDuplicateReRoutes(FileConfiguration configuration) | ||||
|         {          | ||||
|             var duplicatedUpstreamPathTemplates = new List<string>(); | ||||
|  | ||||
|             if (!hasDupes) | ||||
|             var distinctUpstreamPathTemplates = configuration.ReRoutes.Select(x => x.UpstreamPathTemplate).Distinct(); | ||||
|              | ||||
|             foreach (string upstreamPathTemplate in distinctUpstreamPathTemplates) | ||||
|             { | ||||
|                 var reRoutesWithUpstreamPathTemplate = configuration.ReRoutes.Where(x => x.UpstreamPathTemplate == upstreamPathTemplate); | ||||
|  | ||||
|                 var hasEmptyListToAllowAllHttpVerbs = reRoutesWithUpstreamPathTemplate.Where(x => x.UpstreamHttpMethod.Count() == 0).Any(); | ||||
|                 var hasDuplicateEmptyListToAllowAllHttpVerbs = reRoutesWithUpstreamPathTemplate.Where(x => x.UpstreamHttpMethod.Count() == 0).Count() > 1; | ||||
|                 var hasSpecificHttpVerbs = reRoutesWithUpstreamPathTemplate.Where(x => x.UpstreamHttpMethod.Count() > 0).Any(); | ||||
|                 var hasDuplicateSpecificHttpVerbs = reRoutesWithUpstreamPathTemplate.SelectMany(x => x.UpstreamHttpMethod).GroupBy(x => x.ToLower()).SelectMany(x => x.Skip(1)).Any(); | ||||
|  | ||||
|                 if (hasDuplicateEmptyListToAllowAllHttpVerbs || hasDuplicateSpecificHttpVerbs || (hasEmptyListToAllowAllHttpVerbs && hasSpecificHttpVerbs)) | ||||
|                 { | ||||
|                     duplicatedUpstreamPathTemplates.Add(upstreamPathTemplate); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if (duplicatedUpstreamPathTemplates.Count() == 0) | ||||
|             { | ||||
|                 return new ConfigurationValidationResult(false); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 var errors = duplicatedUpstreamPathTemplates | ||||
|                     .Select(d => new DownstreamPathTemplateAlreadyUsedError(string.Format("Duplicate DownstreamPath: {0}", d))) | ||||
|                     .Cast<Error>() | ||||
|                     .ToList(); | ||||
|  | ||||
|             var dupes = configuration.ReRoutes.GroupBy(x => new { x.UpstreamPathTemplate, x.UpstreamHttpMethod }) | ||||
|                                .Where(x => x.Skip(1).Any()); | ||||
|                 return new ConfigurationValidationResult(true, errors); | ||||
|             } | ||||
|  | ||||
|             var errors = dupes | ||||
|                 .Select(d => new DownstreamPathTemplateAlreadyUsedError(string.Format("Duplicate DownstreamPath: {0}", d.Key.UpstreamPathTemplate))) | ||||
|                 .Cast<Error>() | ||||
|                 .ToList(); | ||||
|  | ||||
|             return new ConfigurationValidationResult(true, errors); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -48,7 +48,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamHost = _downstreamServiceHost, | ||||
|                             DownstreamScheme = _downstreamServiceScheme, | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Post", | ||||
|                             UpstreamHttpMethod = new List<string> { "Post" }, | ||||
|                             AuthenticationOptions = new FileAuthenticationOptions | ||||
|                             { | ||||
| 								AllowedScopes =  new List<string>(), | ||||
| @@ -86,7 +86,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamHost = _downstreamServiceHost, | ||||
|                             DownstreamScheme = _downstreamServiceScheme, | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Post", | ||||
|                             UpstreamHttpMethod = new List<string> { "Post" }, | ||||
|                             AuthenticationOptions = new FileAuthenticationOptions | ||||
|                             { | ||||
| 								AllowedScopes =  new List<string>(), | ||||
| @@ -124,7 +124,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamHost = _downstreamServiceHost, | ||||
|                             DownstreamScheme = _downstreamServiceScheme, | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             AuthenticationOptions = new FileAuthenticationOptions | ||||
|                             { | ||||
| 								AllowedScopes =  new List<string>(), | ||||
| @@ -164,8 +164,8 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamHost = _downstreamServiceHost, | ||||
|                             DownstreamScheme = _downstreamServiceScheme, | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Post", | ||||
|                              | ||||
|                             UpstreamHttpMethod = new List<string> { "Post" }, | ||||
|  | ||||
|                             AuthenticationOptions = new FileAuthenticationOptions | ||||
|                             { | ||||
| 								AllowedScopes =  new List<string>(), | ||||
| @@ -205,8 +205,8 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamHost = _downstreamServiceHost, | ||||
|                             DownstreamScheme = _downstreamServiceScheme, | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Post", | ||||
|                              AuthenticationOptions = new FileAuthenticationOptions | ||||
|                             UpstreamHttpMethod = new List<string> { "Post" }, | ||||
|                             AuthenticationOptions = new FileAuthenticationOptions | ||||
|                             { | ||||
| 								AllowedScopes = new List<string>(), | ||||
|                                 Provider = "IdentityServer", | ||||
|   | ||||
| @@ -42,7 +42,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             AuthenticationOptions = new FileAuthenticationOptions | ||||
|                             { | ||||
| 								AllowedScopes =  new List<string>(), | ||||
| @@ -99,7 +99,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             AuthenticationOptions = new FileAuthenticationOptions | ||||
|                             { | ||||
| 								AllowedScopes =  new List<string>(), | ||||
|   | ||||
| @@ -36,7 +36,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             FileCacheOptions = new FileCacheOptions | ||||
|                             { | ||||
|                                 TtlSeconds = 100 | ||||
| @@ -72,7 +72,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             FileCacheOptions = new FileCacheOptions | ||||
|                             { | ||||
|                                 TtlSeconds = 1 | ||||
|   | ||||
| @@ -35,7 +35,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/products/{productId}", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -62,7 +62,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/products/{productId}", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             ReRouteIsCaseSensitive = false, | ||||
|                         } | ||||
|                     } | ||||
| @@ -90,7 +90,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/products/{productId}", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             ReRouteIsCaseSensitive = true, | ||||
|                         } | ||||
|                     } | ||||
| @@ -118,7 +118,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/PRODUCTS/{productId}", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             ReRouteIsCaseSensitive = true, | ||||
|                         } | ||||
|                     } | ||||
| @@ -146,7 +146,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/products/{productId}", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             ReRouteIsCaseSensitive = true, | ||||
|                         } | ||||
|                     } | ||||
| @@ -174,7 +174,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/PRODUCTS/{productId}", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             ReRouteIsCaseSensitive = true, | ||||
|                         } | ||||
|                     } | ||||
|   | ||||
| @@ -56,7 +56,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             AuthenticationOptions = new FileAuthenticationOptions | ||||
|                             { | ||||
| 								AllowedScopes = new List<string> | ||||
|   | ||||
| @@ -56,7 +56,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             AuthenticationOptions = new FileAuthenticationOptions | ||||
|                             { | ||||
| 								AllowedScopes = new List<string> | ||||
|   | ||||
| @@ -47,7 +47,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/api/ClientRateLimit", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             RequestIdKey = _steps.RequestIdKey, | ||||
|                               | ||||
|                             RateLimitOptions =    new FileRateLimitRule() | ||||
| @@ -102,7 +102,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/api/ClientRateLimit", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             RequestIdKey = _steps.RequestIdKey, | ||||
|  | ||||
|                             RateLimitOptions =    new FileRateLimitRule() | ||||
|   | ||||
| @@ -44,8 +44,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamHost = "localhost", | ||||
|                             DownstreamPort = 51779, | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|  | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     }, | ||||
|                 GlobalConfiguration = new FileGlobalConfiguration() | ||||
|   | ||||
| @@ -50,7 +50,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -87,8 +87,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|  | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -125,8 +124,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|  | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -163,7 +161,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -200,7 +198,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -237,7 +235,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
|   | ||||
| @@ -39,7 +39,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                         DownstreamHost = "localhost", | ||||
|                         DownstreamPort = 51879, | ||||
|                         UpstreamPathTemplate = "/", | ||||
|                         UpstreamHttpMethod = "Get", | ||||
|                         UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         QoSOptions = new FileQoSOptions | ||||
|                         { | ||||
|                             ExceptionsAllowedBeforeBreaking = 1, | ||||
| @@ -83,7 +83,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                         DownstreamHost = "localhost", | ||||
|                         DownstreamPort = 51879, | ||||
|                         UpstreamPathTemplate = "/", | ||||
|                         UpstreamHttpMethod = "Get", | ||||
|                         UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         QoSOptions = new FileQoSOptions | ||||
|                         { | ||||
|                             ExceptionsAllowedBeforeBreaking = 1, | ||||
| @@ -98,7 +98,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                         DownstreamHost = "localhost", | ||||
|                         DownstreamPort = 51880, | ||||
|                         UpstreamPathTemplate = "working", | ||||
|                         UpstreamHttpMethod = "Get", | ||||
|                         UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                     } | ||||
|                 } | ||||
|             }; | ||||
|   | ||||
| @@ -38,7 +38,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             RequestIdKey = _steps.RequestIdKey, | ||||
|                          } | ||||
|                     } | ||||
| @@ -66,8 +66,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|   | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -96,7 +95,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     }, | ||||
|                 GlobalConfiguration = new FileGlobalConfiguration | ||||
|   | ||||
| @@ -31,7 +31,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                         { | ||||
|                             DownstreamPathTemplate = "/", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             DownstreamPort = 53876, | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost" | ||||
|   | ||||
| @@ -45,7 +45,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamHost = "localhost", | ||||
|                             DownstreamPort = 51879, | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -73,8 +73,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamHost = "localhost", | ||||
|                             DownstreamPort = 51879, | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|   | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -102,8 +101,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamHost = "localhost/", | ||||
|                             DownstreamPort = 51879, | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|   | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -131,8 +129,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamHost = "localhost", | ||||
|                             DownstreamPort = 51879, | ||||
|                             UpstreamPathTemplate = "/products/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|   | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -160,7 +157,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamHost = "localhost", | ||||
|                             DownstreamPort = 51879, | ||||
|                             UpstreamPathTemplate = "/products", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -188,7 +185,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                         DownstreamHost = "localhost", | ||||
|                         DownstreamPort = 51879, | ||||
|                         UpstreamPathTemplate = "/products/{productId}", | ||||
|                         UpstreamHttpMethod = "Get", | ||||
|                         UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         QoSOptions = new FileQoSOptions() | ||||
|                         { | ||||
|                             ExceptionsAllowedBeforeBreaking = 3, | ||||
| @@ -221,7 +218,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamHost = "localhost", | ||||
|                             DownstreamPort = 51879, | ||||
|                             UpstreamPathTemplate = "/products/{productId}", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -249,7 +246,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamPort = 51879, | ||||
|                             DownstreamScheme = "http", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Post",  | ||||
|                             UpstreamHttpMethod = new List<string> { "Post" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -277,7 +274,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamScheme = "http", | ||||
|                             DownstreamHost = "localhost", | ||||
|                             DownstreamPort = 51879, | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -305,7 +302,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamHost = "localhost", | ||||
|                             DownstreamPort = 51879, | ||||
|                             UpstreamPathTemplate = "/myApp1Name/api/{urlPath}", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -333,7 +330,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamPort = 51879, | ||||
|                             DownstreamScheme = "http", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get, Post", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get", "Post" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
| @@ -361,7 +358,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamPort = 51879, | ||||
|                             DownstreamScheme = "http", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "", | ||||
|                             UpstreamHttpMethod = new List<string>(), | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
|   | ||||
| @@ -69,7 +69,7 @@ namespace Ocelot.AcceptanceTests | ||||
|                             DownstreamPathTemplate = "/", | ||||
|                             DownstreamScheme = "http", | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                             ServiceName = serviceName, | ||||
|                             LoadBalancer = "LeastConnection", | ||||
|                         } | ||||
|   | ||||
| @@ -94,7 +94,7 @@ namespace Ocelot.IntegrationTests | ||||
|                         DownstreamPort = 80, | ||||
|                         DownstreamScheme = "https", | ||||
|                         DownstreamPathTemplate = "/", | ||||
|                         UpstreamHttpMethod = "get", | ||||
|                         UpstreamHttpMethod = new List<string> { "get" }, | ||||
|                         UpstreamPathTemplate = "/" | ||||
|                     }, | ||||
|                     new FileReRoute() | ||||
| @@ -103,7 +103,7 @@ namespace Ocelot.IntegrationTests | ||||
|                         DownstreamPort = 80, | ||||
|                         DownstreamScheme = "https", | ||||
|                         DownstreamPathTemplate = "/", | ||||
|                         UpstreamHttpMethod = "get", | ||||
|                         UpstreamHttpMethod = new List<string> { "get" }, | ||||
|                         UpstreamPathTemplate = "/test" | ||||
|                     } | ||||
|                 } | ||||
| @@ -136,7 +136,7 @@ namespace Ocelot.IntegrationTests | ||||
|                         DownstreamPort = 80, | ||||
|                         DownstreamScheme = "https", | ||||
|                         DownstreamPathTemplate = "/", | ||||
|                         UpstreamHttpMethod = "get", | ||||
|                         UpstreamHttpMethod = new List<string> { "get" }, | ||||
|                         UpstreamPathTemplate = "/" | ||||
|                     }, | ||||
|                     new FileReRoute() | ||||
| @@ -145,7 +145,7 @@ namespace Ocelot.IntegrationTests | ||||
|                         DownstreamPort = 80, | ||||
|                         DownstreamScheme = "https", | ||||
|                         DownstreamPathTemplate = "/", | ||||
|                         UpstreamHttpMethod = "get", | ||||
|                         UpstreamHttpMethod = new List<string> { "get" }, | ||||
|                         UpstreamPathTemplate = "/test" | ||||
|                     } | ||||
|                 } | ||||
| @@ -165,7 +165,7 @@ namespace Ocelot.IntegrationTests | ||||
|                         DownstreamPort = 80, | ||||
|                         DownstreamScheme = "http", | ||||
|                         DownstreamPathTemplate = "/geoffrey", | ||||
|                         UpstreamHttpMethod = "get", | ||||
|                         UpstreamHttpMethod = new List<string> { "get" }, | ||||
|                         UpstreamPathTemplate = "/" | ||||
|                     }, | ||||
|                     new FileReRoute() | ||||
| @@ -174,7 +174,7 @@ namespace Ocelot.IntegrationTests | ||||
|                         DownstreamPort = 443, | ||||
|                         DownstreamScheme = "https", | ||||
|                         DownstreamPathTemplate = "/blooper/{productId}", | ||||
|                         UpstreamHttpMethod = "post", | ||||
|                         UpstreamHttpMethod = new List<string> { "post" }, | ||||
|                         UpstreamPathTemplate = "/test" | ||||
|                     } | ||||
|                 } | ||||
|   | ||||
| @@ -55,7 +55,7 @@ namespace Ocelot.IntegrationTests | ||||
|                             DownstreamHost = "localhost", | ||||
|                             DownstreamPort = 51879, | ||||
|                             UpstreamPathTemplate = "/", | ||||
|                             UpstreamHttpMethod = "Get", | ||||
|                             UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         } | ||||
|                     } | ||||
|             }; | ||||
|   | ||||
| @@ -1,311 +1,311 @@ | ||||
| { | ||||
|     "ReRoutes": [ | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "localhost", | ||||
|             "DownstreamPort": 52876, | ||||
|             "UpstreamPathTemplate": "/identityserverexample", | ||||
|             "UpstreamHttpMethod": "Get", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             }, | ||||
|             "AuthenticationOptions": { | ||||
|                 "Provider": "IdentityServer", | ||||
|                 "ProviderRootUrl": "http://localhost:52888", | ||||
|                 "ApiName": "api", | ||||
|                 "AllowedScopes": [ | ||||
|                     "openid", | ||||
|                     "offline_access" | ||||
|                 ], | ||||
|                 "ApiSecret": "secret" | ||||
|             }, | ||||
|             "AddHeadersToRequest": { | ||||
|                 "CustomerId": "Claims[CustomerId] > value", | ||||
|                 "LocationId": "Claims[LocationId] > value", | ||||
|                 "UserType": "Claims[sub] > value[0] > |", | ||||
|                 "UserId": "Claims[sub] > value[1] > |" | ||||
|             }, | ||||
|             "AddClaimsToRequest": { | ||||
|                 "CustomerId": "Claims[CustomerId] > value", | ||||
|                 "LocationId": "Claims[LocationId] > value", | ||||
|                 "UserType": "Claims[sub] > value[0] > |", | ||||
|                 "UserId": "Claims[sub] > value[1] > |" | ||||
|             }, | ||||
|             "AddQueriesToRequest": { | ||||
|                 "CustomerId": "Claims[CustomerId] > value", | ||||
|                 "LocationId": "Claims[LocationId] > value", | ||||
|                 "UserType": "Claims[sub] > value[0] > |", | ||||
|                 "UserId": "Claims[sub] > value[1] > |" | ||||
|             }, | ||||
|             "RouteClaimsRequirement": { | ||||
|                 "UserType": "registered" | ||||
|             }, | ||||
|             "RequestIdKey": "OcRequestId" | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/posts", | ||||
|             "DownstreamScheme": "https", | ||||
|             "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|             "DownstreamPort": 443, | ||||
|             "UpstreamPathTemplate": "/posts", | ||||
|             "UpstreamHttpMethod": "Get", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/posts/{postId}", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/posts/{postId}", | ||||
|             "UpstreamHttpMethod": "Get", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/posts/{postId}/comments", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/posts/{postId}/comments", | ||||
|             "UpstreamHttpMethod": "Get", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/comments", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/comments", | ||||
|             "UpstreamHttpMethod": "Get", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/posts", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/posts", | ||||
|             "UpstreamHttpMethod": "Post", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/posts/{postId}", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/posts/{postId}", | ||||
|             "UpstreamHttpMethod": "Put", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/posts/{postId}", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/posts/{postId}", | ||||
|             "UpstreamHttpMethod": "Patch", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/posts/{postId}", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/posts/{postId}", | ||||
|             "UpstreamHttpMethod": "Delete", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/api/products", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/products", | ||||
|             "UpstreamHttpMethod": "Get", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             }, | ||||
|             "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/api/products/{productId}", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/products/{productId}", | ||||
|             "UpstreamHttpMethod": "Get", | ||||
|             "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/api/products", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "products20161126090340.azurewebsites.net", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/products", | ||||
|             "UpstreamHttpMethod": "Post", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/api/products/{productId}", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "products20161126090340.azurewebsites.net", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/products/{productId}", | ||||
|             "UpstreamHttpMethod": "Put", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             }, | ||||
|             "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/api/products/{productId}", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "products20161126090340.azurewebsites.net", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/products/{productId}", | ||||
|             "UpstreamHttpMethod": "Delete", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             }, | ||||
|             "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/api/customers", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "customers20161126090811.azurewebsites.net", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/customers", | ||||
|             "UpstreamHttpMethod": "Get", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             }, | ||||
|             "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/api/customers/{customerId}", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "customers20161126090811.azurewebsites.net", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/customers/{customerId}", | ||||
|             "UpstreamHttpMethod": "Get", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             }, | ||||
|             "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/api/customers", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "customers20161126090811.azurewebsites.net", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/customers", | ||||
|             "UpstreamHttpMethod": "Post", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             }, | ||||
|             "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/api/customers/{customerId}", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "customers20161126090811.azurewebsites.net", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/customers/{customerId}", | ||||
|             "UpstreamHttpMethod": "Put", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             }, | ||||
|             "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/api/customers/{customerId}", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "customers20161126090811.azurewebsites.net", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/customers/{customerId}", | ||||
|             "UpstreamHttpMethod": "Delete", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             }, | ||||
|             "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/posts", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/posts/", | ||||
|             "UpstreamHttpMethod": "Get", | ||||
|             "QoSOptions": { | ||||
|                 "ExceptionsAllowedBeforeBreaking": 3, | ||||
|                 "DurationOfBreak": 10, | ||||
|                 "TimeoutValue": 5000 | ||||
|             }, | ||||
|             "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|         }, | ||||
|         { | ||||
|             "DownstreamPathTemplate": "/", | ||||
|             "DownstreamScheme": "http", | ||||
|             "DownstreamHost": "www.bbc.co.uk", | ||||
|             "DownstreamPort": 80, | ||||
|             "UpstreamPathTemplate": "/bbc/", | ||||
|             "UpstreamHttpMethod": "Get" | ||||
|         } | ||||
|     ], | ||||
|   "ReRoutes": [ | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "localhost", | ||||
|       "DownstreamPort": 52876, | ||||
|       "UpstreamPathTemplate": "/identityserverexample", | ||||
|       "UpstreamHttpMethod": [ "Get" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       }, | ||||
|       "AuthenticationOptions": { | ||||
|         "Provider": "IdentityServer", | ||||
|         "ProviderRootUrl": "http://localhost:52888", | ||||
|         "ApiName": "api", | ||||
|         "AllowedScopes": [ | ||||
|           "openid", | ||||
|           "offline_access" | ||||
|         ], | ||||
|         "ApiSecret": "secret" | ||||
|       }, | ||||
|       "AddHeadersToRequest": { | ||||
|         "CustomerId": "Claims[CustomerId] > value", | ||||
|         "LocationId": "Claims[LocationId] > value", | ||||
|         "UserType": "Claims[sub] > value[0] > |", | ||||
|         "UserId": "Claims[sub] > value[1] > |" | ||||
|       }, | ||||
|       "AddClaimsToRequest": { | ||||
|         "CustomerId": "Claims[CustomerId] > value", | ||||
|         "LocationId": "Claims[LocationId] > value", | ||||
|         "UserType": "Claims[sub] > value[0] > |", | ||||
|         "UserId": "Claims[sub] > value[1] > |" | ||||
|       }, | ||||
|       "AddQueriesToRequest": { | ||||
|         "CustomerId": "Claims[CustomerId] > value", | ||||
|         "LocationId": "Claims[LocationId] > value", | ||||
|         "UserType": "Claims[sub] > value[0] > |", | ||||
|         "UserId": "Claims[sub] > value[1] > |" | ||||
|       }, | ||||
|       "RouteClaimsRequirement": { | ||||
|         "UserType": "registered" | ||||
|       }, | ||||
|       "RequestIdKey": "OcRequestId" | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/posts", | ||||
|       "DownstreamScheme": "https", | ||||
|       "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|       "DownstreamPort": 443, | ||||
|       "UpstreamPathTemplate": "/posts", | ||||
|       "UpstreamHttpMethod": [ "Get" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/posts/{postId}", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/posts/{postId}", | ||||
|       "UpstreamHttpMethod": [ "Get" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/posts/{postId}/comments", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/posts/{postId}/comments", | ||||
|       "UpstreamHttpMethod": [ "Get" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/comments", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/comments", | ||||
|       "UpstreamHttpMethod": [ "Get" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/posts", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/posts", | ||||
|       "UpstreamHttpMethod": [ "Post" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/posts/{postId}", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/posts/{postId}", | ||||
|       "UpstreamHttpMethod": [ "Put" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/posts/{postId}", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/posts/{postId}", | ||||
|       "UpstreamHttpMethod": [ "Patch" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/posts/{postId}", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/posts/{postId}", | ||||
|       "UpstreamHttpMethod": [ "Delete" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/api/products", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/products", | ||||
|       "UpstreamHttpMethod": [ "Get" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       }, | ||||
|       "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/api/products/{productId}", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/products/{productId}", | ||||
|       "UpstreamHttpMethod": [ "Get" ], | ||||
|       "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/api/products", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "products20161126090340.azurewebsites.net", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/products", | ||||
|       "UpstreamHttpMethod": [ "Post" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/api/products/{productId}", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "products20161126090340.azurewebsites.net", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/products/{productId}", | ||||
|       "UpstreamHttpMethod": [ "Put" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       }, | ||||
|       "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/api/products/{productId}", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "products20161126090340.azurewebsites.net", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/products/{productId}", | ||||
|       "UpstreamHttpMethod": [ "Delete" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       }, | ||||
|       "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/api/customers", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "customers20161126090811.azurewebsites.net", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/customers", | ||||
|       "UpstreamHttpMethod": [ "Get" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       }, | ||||
|       "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/api/customers/{customerId}", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "customers20161126090811.azurewebsites.net", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/customers/{customerId}", | ||||
|       "UpstreamHttpMethod": [ "Get" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       }, | ||||
|       "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/api/customers", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "customers20161126090811.azurewebsites.net", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/customers", | ||||
|       "UpstreamHttpMethod": [ "Post" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       }, | ||||
|       "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/api/customers/{customerId}", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "customers20161126090811.azurewebsites.net", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/customers/{customerId}", | ||||
|       "UpstreamHttpMethod": [ "Put" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       }, | ||||
|       "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/api/customers/{customerId}", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "customers20161126090811.azurewebsites.net", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/customers/{customerId}", | ||||
|       "UpstreamHttpMethod": [ "Delete" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       }, | ||||
|       "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/posts", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "jsonplaceholder.typicode.com", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/posts/", | ||||
|       "UpstreamHttpMethod": [ "Get" ], | ||||
|       "QoSOptions": { | ||||
|         "ExceptionsAllowedBeforeBreaking": 3, | ||||
|         "DurationOfBreak": 10, | ||||
|         "TimeoutValue": 5000 | ||||
|       }, | ||||
|       "FileCacheOptions": { "TtlSeconds": 15 } | ||||
|     }, | ||||
|     { | ||||
|       "DownstreamPathTemplate": "/", | ||||
|       "DownstreamScheme": "http", | ||||
|       "DownstreamHost": "www.bbc.co.uk", | ||||
|       "DownstreamPort": 80, | ||||
|       "UpstreamPathTemplate": "/bbc/", | ||||
|       "UpstreamHttpMethod": [ "Get" ], | ||||
|     } | ||||
|   ], | ||||
|  | ||||
|   "GlobalConfiguration": { | ||||
|     "RequestIdKey": "OcRequestId", | ||||
|   | ||||
| @@ -72,7 +72,7 @@ namespace Ocelot.UnitTests.Authentication | ||||
|         public void should_call_next_middleware_if_route_is_not_authenticated() | ||||
|         { | ||||
|             this.Given(x => x.GivenTheDownStreamRouteIs(new DownstreamRoute(new List<UrlPathPlaceholderNameAndValue>(), new ReRouteBuilder() | ||||
|                                                                                                                             .WithUpstreamHttpMethod("Get") | ||||
|                                                                                                                             .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                                                                                                                             .Build()))) | ||||
|                 .When(x => x.WhenICallTheMiddleware()) | ||||
|                 .Then(x => x.ThenTheUserIsAuthenticated()) | ||||
|   | ||||
| @@ -66,7 +66,7 @@ namespace Ocelot.UnitTests.Authorization | ||||
|             this.Given(x => x.GivenTheDownStreamRouteIs(new DownstreamRoute(new List<UrlPathPlaceholderNameAndValue>(),  | ||||
|                 new ReRouteBuilder() | ||||
|                     .WithIsAuthorised(true) | ||||
|                     .WithUpstreamHttpMethod("Get")                                                                                                                                                                    .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()))) | ||||
|                 .And(x => x.GivenTheAuthServiceReturns(new OkResponse<bool>(true))) | ||||
|                 .When(x => x.WhenICallTheMiddleware()) | ||||
|   | ||||
| @@ -91,7 +91,7 @@ namespace Ocelot.UnitTests.Cache | ||||
|             var reRoute = new ReRouteBuilder() | ||||
|                 .WithIsCached(true) | ||||
|                 .WithCacheOptions(new CacheOptions(100)) | ||||
|                 .WithUpstreamHttpMethod("Get") | ||||
|                 .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                 .Build(); | ||||
|                  | ||||
|             var downstreamRoute = new DownstreamRoute(new List<UrlPathPlaceholderNameAndValue>(), reRoute); | ||||
|   | ||||
| @@ -72,7 +72,7 @@ namespace Ocelot.UnitTests.Claims | ||||
|                     { | ||||
|                         new ClaimToThing("sub", "UserType", "|", 0) | ||||
|                     }) | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()); | ||||
|  | ||||
|             this.Given(x => x.GivenTheDownStreamRouteIs(downstreamRoute)) | ||||
|   | ||||
| @@ -84,7 +84,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                                     DownstreamHost = "127.0.0.1", | ||||
|                                     UpstreamPathTemplate = "/api/products/{productId}", | ||||
|                                     DownstreamPathTemplate = "/products/{productId}", | ||||
|                                     UpstreamHttpMethod = "Get", | ||||
|                                     UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                                 } | ||||
|                             }, | ||||
|             })) | ||||
| @@ -117,7 +117,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                         DownstreamHost = "127.0.0.1", | ||||
|                         UpstreamPathTemplate = "/api/products/{productId}", | ||||
|                         DownstreamPathTemplate = "/products/{productId}", | ||||
|                         UpstreamHttpMethod = "Get", | ||||
|                         UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         QoSOptions = new FileQoSOptions | ||||
|                         { | ||||
|                             TimeoutValue = 1, | ||||
| @@ -153,7 +153,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                                         DownstreamHost = "127.0.0.1", | ||||
|                                         UpstreamPathTemplate = "/api/products/{productId}", | ||||
|                                         DownstreamPathTemplate = "/products/{productId}", | ||||
|                                         UpstreamHttpMethod = "Get", | ||||
|                                         UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                                     } | ||||
|                                 }, | ||||
|                             })) | ||||
| @@ -181,7 +181,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                                     DownstreamHost = "127.0.0.1", | ||||
|                                     UpstreamPathTemplate = "/api/products/{productId}", | ||||
|                                     DownstreamPathTemplate = "/products/{productId}", | ||||
|                                     UpstreamHttpMethod = "Get", | ||||
|                                     UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                                 } | ||||
|                             }, | ||||
|                         })) | ||||
| @@ -194,7 +194,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                                     .WithDownstreamHost("127.0.0.1") | ||||
|                                     .WithDownstreamPathTemplate("/products/{productId}") | ||||
|                                     .WithUpstreamPathTemplate("/api/products/{productId}") | ||||
|                                     .WithUpstreamHttpMethod("Get") | ||||
|                                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                                     .Build() | ||||
|                             })) | ||||
|                 .BDDfy(); | ||||
| @@ -215,7 +215,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                                                     DownstreamScheme = "https", | ||||
|                                                     UpstreamPathTemplate = "/api/products/{productId}", | ||||
|                                                     DownstreamPathTemplate = "/products/{productId}", | ||||
|                                                     UpstreamHttpMethod = "Get", | ||||
|                                                     UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                                                 } | ||||
|                                             }, | ||||
|                                         })) | ||||
| @@ -228,7 +228,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                                                     .WithDownstreamScheme("https") | ||||
|                                                     .WithDownstreamPathTemplate("/products/{productId}") | ||||
|                                                     .WithUpstreamPathTemplate("/api/products/{productId}") | ||||
|                                                     .WithUpstreamHttpMethod("Get") | ||||
|                                                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                                                     .Build() | ||||
|                                             })) | ||||
|                                 .BDDfy(); | ||||
| @@ -248,7 +248,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                                 { | ||||
|                                     UpstreamPathTemplate = "/api/products/{productId}", | ||||
|                                     DownstreamPathTemplate = "/products/{productId}", | ||||
|                                     UpstreamHttpMethod = "Get", | ||||
|                                     UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                                     ReRouteIsCaseSensitive = false, | ||||
|                                     ServiceName = "ProductService" | ||||
|                                 } | ||||
| @@ -270,7 +270,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                                 new ReRouteBuilder() | ||||
|                                     .WithDownstreamPathTemplate("/products/{productId}") | ||||
|                                     .WithUpstreamPathTemplate("/api/products/{productId}") | ||||
|                                     .WithUpstreamHttpMethod("Get") | ||||
|                                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                                     .WithServiceProviderConfiguraion(new ServiceProviderConfigurationBuilder() | ||||
|                                         .WithUseServiceDiscovery(true) | ||||
|                                         .WithServiceDiscoveryProvider("consul") | ||||
| @@ -296,7 +296,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                                 { | ||||
|                                     UpstreamPathTemplate = "/api/products/{productId}", | ||||
|                                     DownstreamPathTemplate = "/products/{productId}", | ||||
|                                     UpstreamHttpMethod = "Get", | ||||
|                                     UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                                     ReRouteIsCaseSensitive = false, | ||||
|                                 } | ||||
|                             } | ||||
| @@ -309,7 +309,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                                 new ReRouteBuilder() | ||||
|                                     .WithDownstreamPathTemplate("/products/{productId}") | ||||
|                                     .WithUpstreamPathTemplate("/api/products/{productId}") | ||||
|                                     .WithUpstreamHttpMethod("Get") | ||||
|                                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                                     .WithServiceProviderConfiguraion(new ServiceProviderConfigurationBuilder() | ||||
|                                         .WithUseServiceDiscovery(false) | ||||
|                                         .Build()) | ||||
| @@ -332,7 +332,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                     { | ||||
|                         UpstreamPathTemplate = "/api/products/{productId}", | ||||
|                         DownstreamPathTemplate = "/products/{productId}", | ||||
|                         UpstreamHttpMethod = "Get", | ||||
|                         UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         ReRouteIsCaseSensitive = false | ||||
|                     } | ||||
|                 } | ||||
| @@ -346,7 +346,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                     new ReRouteBuilder() | ||||
|                         .WithDownstreamPathTemplate("/products/{productId}") | ||||
|                         .WithUpstreamPathTemplate("/api/products/{productId}") | ||||
|                         .WithUpstreamHttpMethod("Get") | ||||
|                         .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                         .WithUpstreamTemplatePattern("(?i)/api/products/.*/$") | ||||
|                         .Build() | ||||
|                 })) | ||||
| @@ -367,7 +367,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                     { | ||||
|                         UpstreamPathTemplate = "/api/products/{productId}", | ||||
|                         DownstreamPathTemplate = "/products/{productId}", | ||||
|                         UpstreamHttpMethod = "Get", | ||||
|                         UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         ReRouteIsCaseSensitive = true | ||||
|                     } | ||||
|                 }, | ||||
| @@ -385,7 +385,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                     new ReRouteBuilder() | ||||
|                         .WithDownstreamPathTemplate("/products/{productId}") | ||||
|                         .WithUpstreamPathTemplate("/api/products/{productId}") | ||||
|                         .WithUpstreamHttpMethod("Get") | ||||
|                         .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                         .WithRequestIdKey("blahhhh") | ||||
|                         .Build() | ||||
|                 })) | ||||
| @@ -414,7 +414,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                 new ReRouteBuilder() | ||||
|                     .WithDownstreamPathTemplate("/products/{productId}") | ||||
|                     .WithUpstreamPathTemplate("/api/products/{productId}") | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .WithAuthenticationOptions(authenticationOptions) | ||||
|                     .WithClaimsToHeaders(new List<ClaimToThing> | ||||
|                     { | ||||
| @@ -431,7 +431,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                     { | ||||
|                         UpstreamPathTemplate = "/api/products/{productId}", | ||||
|                         DownstreamPathTemplate = "/products/{productId}", | ||||
|                         UpstreamHttpMethod = "Get", | ||||
|                         UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         ReRouteIsCaseSensitive = true, | ||||
|                         AuthenticationOptions = new FileAuthenticationOptions | ||||
|                             { | ||||
| @@ -482,7 +482,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                 new ReRouteBuilder() | ||||
|                     .WithDownstreamPathTemplate("/products/{productId}") | ||||
|                     .WithUpstreamPathTemplate("/api/products/{productId}") | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .WithAuthenticationOptions(authenticationOptions) | ||||
|                     .Build() | ||||
|             }; | ||||
| @@ -495,7 +495,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|                     { | ||||
|                         UpstreamPathTemplate = "/api/products/{productId}", | ||||
|                         DownstreamPathTemplate = "/products/{productId}", | ||||
|                         UpstreamHttpMethod = "Get", | ||||
|                         UpstreamHttpMethod = new List<string> { "Get" }, | ||||
|                         ReRouteIsCaseSensitive = true, | ||||
|                         AuthenticationOptions = new FileAuthenticationOptions | ||||
|                             { | ||||
|   | ||||
| @@ -87,7 +87,7 @@ namespace Ocelot.UnitTests.Configuration | ||||
|             { | ||||
|                 new ReRouteBuilder() | ||||
|                 .WithDownstreamPathTemplate(_downstreamTemplatePath) | ||||
|                 .WithUpstreamHttpMethod("Get") | ||||
|                 .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                 .Build() | ||||
|             }; | ||||
|  | ||||
|   | ||||
| @@ -66,7 +66,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder | ||||
|                     new List<UrlPathPlaceholderNameAndValue>(),  | ||||
|                     new ReRouteBuilder() | ||||
|                         .WithDownstreamPathTemplate("any old string") | ||||
|                         .WithUpstreamHttpMethod("Get") | ||||
|                         .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                         .Build()))) | ||||
|                 .When(x => x.WhenICallTheMiddleware()) | ||||
|                 .Then(x => x.ThenTheScopedDataRepositoryIsCalledCorrectly()) | ||||
|   | ||||
| @@ -45,7 +45,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder | ||||
|                     new ReRouteBuilder() | ||||
|                         .WithDownstreamPathTemplate("someDownstreamPath") | ||||
|                         .WithUpstreamPathTemplate("someUpstreamPath") | ||||
|                         .WithUpstreamHttpMethod("Get") | ||||
|                         .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                         .WithUpstreamTemplatePattern("someUpstreamPath") | ||||
|                         .Build() | ||||
|                 }, string.Empty | ||||
| @@ -58,7 +58,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder | ||||
|                             new List<UrlPathPlaceholderNameAndValue>(), | ||||
|                             new ReRouteBuilder() | ||||
|                                 .WithDownstreamPathTemplate("someDownstreamPath") | ||||
|                                 .WithUpstreamHttpMethod("Get") | ||||
|                                 .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                                 .Build() | ||||
|                 ))) | ||||
|                 .And(x => x.ThenTheUrlMatcherIsCalledCorrectly()) | ||||
| @@ -78,7 +78,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder | ||||
|                     new ReRouteBuilder() | ||||
|                         .WithDownstreamPathTemplate("someDownstreamPath") | ||||
|                         .WithUpstreamPathTemplate("someUpstreamPath") | ||||
|                         .WithUpstreamHttpMethod("Get") | ||||
|                         .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                         .WithUpstreamTemplatePattern("someUpstreamPath") | ||||
|                         .Build() | ||||
|                 }, string.Empty | ||||
| @@ -90,7 +90,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder | ||||
|                     x => x.ThenTheFollowingIsReturned(new DownstreamRoute(new List<UrlPathPlaceholderNameAndValue>(), | ||||
|                         new ReRouteBuilder() | ||||
|                             .WithDownstreamPathTemplate("someDownstreamPath") | ||||
|                             .WithUpstreamHttpMethod("Get") | ||||
|                             .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                             .Build() | ||||
|                         ))) | ||||
|                 .And(x => x.ThenTheUrlMatcherIsNotCalled()) | ||||
| @@ -110,13 +110,13 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder | ||||
|                     new ReRouteBuilder() | ||||
|                         .WithDownstreamPathTemplate("someDownstreamPath") | ||||
|                         .WithUpstreamPathTemplate("someUpstreamPath") | ||||
|                         .WithUpstreamHttpMethod("Get") | ||||
|                         .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                         .WithUpstreamTemplatePattern("") | ||||
|                         .Build(), | ||||
|                     new ReRouteBuilder() | ||||
|                         .WithDownstreamPathTemplate("someDownstreamPathForAPost") | ||||
|                         .WithUpstreamPathTemplate("someUpstreamPath") | ||||
|                         .WithUpstreamHttpMethod("Post") | ||||
|                         .WithUpstreamHttpMethod(new List<string> { "Post" }) | ||||
|                         .WithUpstreamTemplatePattern("") | ||||
|                         .Build() | ||||
|                 }, string.Empty | ||||
| @@ -128,7 +128,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder | ||||
|                     x => x.ThenTheFollowingIsReturned(new DownstreamRoute(new List<UrlPathPlaceholderNameAndValue>(), | ||||
|                         new ReRouteBuilder() | ||||
|                             .WithDownstreamPathTemplate("someDownstreamPathForAPost") | ||||
|                             .WithUpstreamHttpMethod("Post") | ||||
|                             .WithUpstreamHttpMethod(new List<string> { "Post" }) | ||||
|                             .Build() | ||||
|                         ))) | ||||
|                 .BDDfy(); | ||||
| @@ -143,7 +143,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder | ||||
|                         new ReRouteBuilder() | ||||
|                         .WithDownstreamPathTemplate("somPath") | ||||
|                         .WithUpstreamPathTemplate("somePath") | ||||
|                         .WithUpstreamHttpMethod("Get") | ||||
|                         .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                         .WithUpstreamTemplatePattern("somePath") | ||||
|                         .Build(),    | ||||
|                      }, string.Empty | ||||
| @@ -170,7 +170,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder | ||||
|                     new ReRouteBuilder() | ||||
|                         .WithDownstreamPathTemplate("someDownstreamPath") | ||||
|                         .WithUpstreamPathTemplate("someUpstreamPath") | ||||
|                         .WithUpstreamHttpMethod("Get, Post") | ||||
|                         .WithUpstreamHttpMethod(new List<string> { "Get", "Post" }) | ||||
|                         .WithUpstreamTemplatePattern("") | ||||
|                         .Build() | ||||
|                 }, string.Empty | ||||
| @@ -182,7 +182,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder | ||||
|                     x => x.ThenTheFollowingIsReturned(new DownstreamRoute(new List<UrlPathPlaceholderNameAndValue>(), | ||||
|                         new ReRouteBuilder() | ||||
|                             .WithDownstreamPathTemplate("someDownstreamPath") | ||||
|                             .WithUpstreamHttpMethod("Post") | ||||
|                             .WithUpstreamHttpMethod(new List<string> { "Post" }) | ||||
|                             .Build() | ||||
|                         ))) | ||||
|                 .BDDfy(); | ||||
| @@ -201,7 +201,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder | ||||
|                     new ReRouteBuilder() | ||||
|                         .WithDownstreamPathTemplate("someDownstreamPath") | ||||
|                         .WithUpstreamPathTemplate("someUpstreamPath") | ||||
|                         .WithUpstreamHttpMethod("") | ||||
|                         .WithUpstreamHttpMethod(new List<string>()) | ||||
|                         .WithUpstreamTemplatePattern("") | ||||
|                         .Build() | ||||
|                 }, string.Empty | ||||
| @@ -213,7 +213,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder | ||||
|                     x => x.ThenTheFollowingIsReturned(new DownstreamRoute(new List<UrlPathPlaceholderNameAndValue>(), | ||||
|                         new ReRouteBuilder() | ||||
|                             .WithDownstreamPathTemplate("someDownstreamPath") | ||||
|                             .WithUpstreamHttpMethod("Post") | ||||
|                             .WithUpstreamHttpMethod(new List<string> { "Post" }) | ||||
|                             .Build() | ||||
|                         ))) | ||||
|                 .BDDfy(); | ||||
| @@ -232,7 +232,7 @@ namespace Ocelot.UnitTests.DownstreamRouteFinder | ||||
|                     new ReRouteBuilder() | ||||
|                         .WithDownstreamPathTemplate("someDownstreamPath") | ||||
|                         .WithUpstreamPathTemplate("someUpstreamPath") | ||||
|                         .WithUpstreamHttpMethod("Get, Patch, Delete") | ||||
|                         .WithUpstreamHttpMethod(new List<string> { "Get", "Patch", "Delete" }) | ||||
|                         .WithUpstreamTemplatePattern("") | ||||
|                         .Build() | ||||
|                 }, string.Empty | ||||
|   | ||||
| @@ -78,7 +78,7 @@ namespace Ocelot.UnitTests.DownstreamUrlCreator | ||||
|                     new List<UrlPathPlaceholderNameAndValue>(),  | ||||
|                     new ReRouteBuilder() | ||||
|                         .WithDownstreamPathTemplate("any old string") | ||||
|                         .WithUpstreamHttpMethod("Get") | ||||
|                         .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                         .WithDownstreamScheme("https") | ||||
|                         .Build()))) | ||||
|                 .And(x => x.GivenTheDownstreamRequestUriIs("http://my.url/abc?q=123")) | ||||
|   | ||||
| @@ -29,7 +29,7 @@ namespace Ocelot.UnitTests.DownstreamUrlCreator.UrlTemplateReplacer | ||||
|                 new DownstreamRoute( | ||||
|                     new List<UrlPathPlaceholderNameAndValue>(),  | ||||
|                     new ReRouteBuilder() | ||||
|                         .WithUpstreamHttpMethod("Get") | ||||
|                         .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                         .Build()))) | ||||
|                 .When(x => x.WhenIReplaceTheTemplateVariables()) | ||||
|                 .Then(x => x.ThenTheDownstreamUrlPathIsReturned("")) | ||||
| @@ -44,7 +44,7 @@ namespace Ocelot.UnitTests.DownstreamUrlCreator.UrlTemplateReplacer | ||||
|                 new List<UrlPathPlaceholderNameAndValue>(),  | ||||
|                 new ReRouteBuilder() | ||||
|                     .WithDownstreamPathTemplate("/") | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()))) | ||||
|                 .When(x => x.WhenIReplaceTheTemplateVariables()) | ||||
|                 .Then(x => x.ThenTheDownstreamUrlPathIsReturned("/")) | ||||
| @@ -57,7 +57,7 @@ namespace Ocelot.UnitTests.DownstreamUrlCreator.UrlTemplateReplacer | ||||
|             this.Given(x => x.GivenThereIsAUrlMatch(new DownstreamRoute(new List<UrlPathPlaceholderNameAndValue>(),  | ||||
|                 new ReRouteBuilder() | ||||
|                     .WithDownstreamPathTemplate("api") | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()))) | ||||
|                 .When(x => x.WhenIReplaceTheTemplateVariables()) | ||||
|                 .Then(x => x.ThenTheDownstreamUrlPathIsReturned("api")) | ||||
| @@ -70,7 +70,7 @@ namespace Ocelot.UnitTests.DownstreamUrlCreator.UrlTemplateReplacer | ||||
|             this.Given(x => x.GivenThereIsAUrlMatch(new DownstreamRoute(new List<UrlPathPlaceholderNameAndValue>(),  | ||||
|                 new ReRouteBuilder() | ||||
|                     .WithDownstreamPathTemplate("api/") | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()))) | ||||
|                 .When(x => x.WhenIReplaceTheTemplateVariables()) | ||||
|                 .Then(x => x.ThenTheDownstreamUrlPathIsReturned("api/")) | ||||
| @@ -83,7 +83,7 @@ namespace Ocelot.UnitTests.DownstreamUrlCreator.UrlTemplateReplacer | ||||
|             this.Given(x => x.GivenThereIsAUrlMatch(new DownstreamRoute(new List<UrlPathPlaceholderNameAndValue>(),  | ||||
|                 new ReRouteBuilder() | ||||
|                     .WithDownstreamPathTemplate("api/product/products/") | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()))) | ||||
|                 .When(x => x.WhenIReplaceTheTemplateVariables()) | ||||
|                 .Then(x => x.ThenTheDownstreamUrlPathIsReturned("api/product/products/")) | ||||
| @@ -101,7 +101,7 @@ namespace Ocelot.UnitTests.DownstreamUrlCreator.UrlTemplateReplacer | ||||
|             this.Given(x => x.GivenThereIsAUrlMatch(new DownstreamRoute(templateVariables,  | ||||
|                 new ReRouteBuilder() | ||||
|                     .WithDownstreamPathTemplate("productservice/products/{productId}/") | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()))) | ||||
|              .When(x => x.WhenIReplaceTheTemplateVariables()) | ||||
|              .Then(x => x.ThenTheDownstreamUrlPathIsReturned("productservice/products/1/")) | ||||
| @@ -119,7 +119,7 @@ namespace Ocelot.UnitTests.DownstreamUrlCreator.UrlTemplateReplacer | ||||
|             this.Given(x => x.GivenThereIsAUrlMatch(new DownstreamRoute(templateVariables,  | ||||
|                 new ReRouteBuilder() | ||||
|                     .WithDownstreamPathTemplate("productservice/products/{productId}/variants") | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()))) | ||||
|              .When(x => x.WhenIReplaceTheTemplateVariables()) | ||||
|              .Then(x => x.ThenTheDownstreamUrlPathIsReturned("productservice/products/1/variants")) | ||||
| @@ -138,7 +138,7 @@ namespace Ocelot.UnitTests.DownstreamUrlCreator.UrlTemplateReplacer | ||||
|             this.Given(x => x.GivenThereIsAUrlMatch(new DownstreamRoute(templateVariables,  | ||||
|                 new ReRouteBuilder() | ||||
|                     .WithDownstreamPathTemplate("productservice/products/{productId}/variants/{variantId}") | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()))) | ||||
|              .When(x => x.WhenIReplaceTheTemplateVariables()) | ||||
|              .Then(x => x.ThenTheDownstreamUrlPathIsReturned("productservice/products/1/variants/12")) | ||||
| @@ -158,7 +158,7 @@ namespace Ocelot.UnitTests.DownstreamUrlCreator.UrlTemplateReplacer | ||||
|             this.Given(x => x.GivenThereIsAUrlMatch(new DownstreamRoute(templateVariables,  | ||||
|                 new ReRouteBuilder() | ||||
|                 .WithDownstreamPathTemplate("productservice/category/{categoryId}/products/{productId}/variants/{variantId}") | ||||
|                 .WithUpstreamHttpMethod("Get") | ||||
|                 .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                 .Build()))) | ||||
|              .When(x => x.WhenIReplaceTheTemplateVariables()) | ||||
|              .Then(x => x.ThenTheDownstreamUrlPathIsReturned("productservice/category/34/products/1/variants/12")) | ||||
|   | ||||
| @@ -76,7 +76,7 @@ namespace Ocelot.UnitTests.Headers | ||||
|                     { | ||||
|                         new ClaimToThing("UserId", "Subject", "", 0) | ||||
|                     }) | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()); | ||||
|  | ||||
|             this.Given(x => x.GivenTheDownStreamRouteIs(downstreamRoute)) | ||||
|   | ||||
| @@ -4,6 +4,7 @@ using Ocelot.Configuration.Builder; | ||||
| using Ocelot.LoadBalancer.LoadBalancers; | ||||
| using Ocelot.ServiceDiscovery; | ||||
| using Shouldly; | ||||
| using System.Collections.Generic; | ||||
| using TestStack.BDDfy; | ||||
| using Xunit; | ||||
|  | ||||
| @@ -29,7 +30,7 @@ namespace Ocelot.UnitTests.LoadBalancer | ||||
|         { | ||||
|             var reRoute = new ReRouteBuilder() | ||||
|                 .WithServiceProviderConfiguraion(new ServiceProviderConfigurationBuilder().Build()) | ||||
|                 .WithUpstreamHttpMethod("Get") | ||||
|                 .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                 .Build(); | ||||
|  | ||||
|             this.Given(x => x.GivenAReRoute(reRoute)) | ||||
| @@ -44,7 +45,7 @@ namespace Ocelot.UnitTests.LoadBalancer | ||||
|         { | ||||
|              var reRoute = new ReRouteBuilder() | ||||
|                 .WithLoadBalancer("RoundRobin") | ||||
|                 .WithUpstreamHttpMethod("Get") | ||||
|                 .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                 .WithServiceProviderConfiguraion(new ServiceProviderConfigurationBuilder().Build()) | ||||
|                 .Build(); | ||||
|  | ||||
| @@ -60,7 +61,7 @@ namespace Ocelot.UnitTests.LoadBalancer | ||||
|         { | ||||
|              var reRoute = new ReRouteBuilder() | ||||
|                 .WithLoadBalancer("LeastConnection") | ||||
|                 .WithUpstreamHttpMethod("Get") | ||||
|                 .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                 .WithServiceProviderConfiguraion(new ServiceProviderConfigurationBuilder().Build()) | ||||
|                 .Build(); | ||||
|  | ||||
| @@ -76,7 +77,7 @@ namespace Ocelot.UnitTests.LoadBalancer | ||||
|         { | ||||
|             var reRoute = new ReRouteBuilder() | ||||
|                 .WithLoadBalancer("RoundRobin") | ||||
|                 .WithUpstreamHttpMethod("Get") | ||||
|                 .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                 .WithServiceProviderConfiguraion(new ServiceProviderConfigurationBuilder().Build()) | ||||
|                 .Build(); | ||||
|  | ||||
|   | ||||
| @@ -73,7 +73,7 @@ namespace Ocelot.UnitTests.LoadBalancer | ||||
|         { | ||||
|             var downstreamRoute = new DownstreamRoute(new List<Ocelot.DownstreamRouteFinder.UrlMatcher.UrlPathPlaceholderNameAndValue>(), | ||||
|                 new ReRouteBuilder() | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()); | ||||
|  | ||||
|             this.Given(x => x.GivenTheDownStreamUrlIs("http://my.url/abc?q=123")) | ||||
| @@ -90,7 +90,7 @@ namespace Ocelot.UnitTests.LoadBalancer | ||||
|         {          | ||||
|             var downstreamRoute = new DownstreamRoute(new List<Ocelot.DownstreamRouteFinder.UrlMatcher.UrlPathPlaceholderNameAndValue>(), | ||||
|                 new ReRouteBuilder() | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()); | ||||
|  | ||||
|             this.Given(x => x.GivenTheDownStreamUrlIs("http://my.url/abc?q=123")) | ||||
| @@ -106,7 +106,7 @@ namespace Ocelot.UnitTests.LoadBalancer | ||||
|         { | ||||
|             var downstreamRoute = new DownstreamRoute(new List<Ocelot.DownstreamRouteFinder.UrlMatcher.UrlPathPlaceholderNameAndValue>(), | ||||
|                 new ReRouteBuilder() | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()); | ||||
|  | ||||
|             this.Given(x => x.GivenTheDownStreamUrlIs("http://my.url/abc?q=123")) | ||||
|   | ||||
| @@ -74,7 +74,7 @@ namespace Ocelot.UnitTests.QueryStrings | ||||
|                     { | ||||
|                         new ClaimToThing("UserId", "Subject", "", 0) | ||||
|                     }) | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()); | ||||
|  | ||||
|             this.Given(x => x.GivenTheDownStreamRouteIs(downstreamRoute)) | ||||
|   | ||||
| @@ -72,7 +72,7 @@ namespace Ocelot.UnitTests.RateLimit | ||||
|             var downstreamRoute = new DownstreamRoute(new List<Ocelot.DownstreamRouteFinder.UrlMatcher.UrlPathPlaceholderNameAndValue>(), | ||||
|                  new ReRouteBuilder().WithEnableRateLimiting(true).WithRateLimitOptions( | ||||
|                      new Ocelot.Configuration.RateLimitOptions(true, "ClientId", new List<string>(), false, "", "", new Ocelot.Configuration.RateLimitRule("1s", 100, 3), 429)) | ||||
|                      .WithUpstreamHttpMethod("Get") | ||||
|                      .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                      .Build()); | ||||
|  | ||||
|             this.Given(x => x.GivenTheDownStreamRouteIs(downstreamRoute)) | ||||
| @@ -89,7 +89,7 @@ namespace Ocelot.UnitTests.RateLimit | ||||
|             var downstreamRoute = new DownstreamRoute(new List<Ocelot.DownstreamRouteFinder.UrlMatcher.UrlPathPlaceholderNameAndValue>(), | ||||
|                  new ReRouteBuilder().WithEnableRateLimiting(true).WithRateLimitOptions( | ||||
|                      new Ocelot.Configuration.RateLimitOptions(true, "ClientId", new List<string>() { "ocelotclient2" }, false, "", "", new  RateLimitRule( "1s", 100,3),429)) | ||||
|                      .WithUpstreamHttpMethod("Get") | ||||
|                      .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                      .Build()); | ||||
|  | ||||
|             this.Given(x => x.GivenTheDownStreamRouteIs(downstreamRoute)) | ||||
|   | ||||
| @@ -76,7 +76,7 @@ namespace Ocelot.UnitTests.Request | ||||
|             var downstreamRoute = new DownstreamRoute(new List<UrlPathPlaceholderNameAndValue>(), | ||||
|                 new ReRouteBuilder() | ||||
|                     .WithRequestIdKey("LSRequestId") | ||||
|                     .WithUpstreamHttpMethod("Get") | ||||
|                     .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                     .Build()); | ||||
|  | ||||
|             this.Given(x => x.GivenTheDownStreamUrlIs("any old string")) | ||||
|   | ||||
| @@ -78,7 +78,7 @@ namespace Ocelot.UnitTests.RequestId | ||||
|                 new ReRouteBuilder() | ||||
|                 .WithDownstreamPathTemplate("any old string") | ||||
|                 .WithRequestIdKey("LSRequestId") | ||||
|                 .WithUpstreamHttpMethod("Get") | ||||
|                 .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                 .Build()); | ||||
|  | ||||
|             var requestId = Guid.NewGuid().ToString(); | ||||
| @@ -97,7 +97,7 @@ namespace Ocelot.UnitTests.RequestId | ||||
|                 new ReRouteBuilder() | ||||
|                 .WithDownstreamPathTemplate("any old string") | ||||
|                 .WithRequestIdKey("LSRequestId") | ||||
|                 .WithUpstreamHttpMethod("Get") | ||||
|                 .WithUpstreamHttpMethod(new List<string> { "Get" }) | ||||
|                 .Build()); | ||||
|  | ||||
|             this.Given(x => x.GivenTheDownStreamRouteIs(downstreamRoute)) | ||||
|   | ||||
| @@ -4,6 +4,7 @@ using Ocelot.Configuration.Builder; | ||||
| using Ocelot.Logging; | ||||
| using Ocelot.Requester.QoS; | ||||
| using Shouldly; | ||||
| using System.Collections.Generic; | ||||
| using TestStack.BDDfy; | ||||
| using Xunit; | ||||
|  | ||||
| @@ -31,7 +32,7 @@ namespace Ocelot.UnitTests.Requester | ||||
|         public void should_return_no_qos_provider() | ||||
|         { | ||||
|             var reRoute = new ReRouteBuilder() | ||||
|                 .WithUpstreamHttpMethod("get") | ||||
|                 .WithUpstreamHttpMethod(new List<string> { "get" }) | ||||
|                 .WithIsQos(false) | ||||
|                 .Build(); | ||||
|  | ||||
| @@ -51,7 +52,7 @@ namespace Ocelot.UnitTests.Requester | ||||
|                 .Build(); | ||||
|  | ||||
|             var reRoute = new ReRouteBuilder() | ||||
|                .WithUpstreamHttpMethod("get") | ||||
|                .WithUpstreamHttpMethod(new List<string> { "get" }) | ||||
|                .WithIsQos(true) | ||||
|                .WithQosOptions(qosOptions) | ||||
|                .Build(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Juan Carlos Santana Herrera
					Juan Carlos Santana Herrera