static IEnumerable <string> ExtractParameters(SwaggerUrl path) { var regex = new Regex("{(.*?)}"); var matches = regex.Matches(path.Url); foreach (Match match in matches) { yield return(match.Groups[1].Value); } }
static string ReplaceUrlParts(SwaggerUrl path, TestRun testRun) { var parameters = ExtractParameters(path).ToArray(); var unknownParameters = parameters.Where(x => !testRun.UrlParameterTestValues.ContainsKey(x)).ToArray(); if (unknownParameters.Any()) { LogWarning($"Skipping {path.Url} because {string.Join(", ", unknownParameters.Select(x => x))} {"parameter".Pluralize(unknownParameters.Length)} not defined."); return(null); } return(parameters.Aggregate(path.Url, (s, param) => s.Replace($"{{{param}}}", testRun.UrlParameterTestValues[param]))); }
static bool IsMatch(SwaggerUrl path, string endpointPattern, HttpMethod method) => path.Method == method && Regex.IsMatch(path.Url, endpointPattern.WildCardToRegular(), RegexOptions.IgnoreCase);