in FunctionsSdkE2ETests/FunctionsSdkE2ETests/E2ETests.cs [221:252]
private void ValidateExtensionsJsonRecursive(string startingDir, int expectedCount, string expectedFolder, params Func<JToken, bool>[] extensionValidators)
{
// Check all extensions.json
IEnumerable<string> extensionsFiles = Directory.EnumerateFiles(Path.Combine(startingDir), "extensions.json", new EnumerationOptions { RecurseSubdirectories = true });
Assert.Equal(expectedCount, extensionsFiles.Count());
foreach (string file in extensionsFiles)
{
Assert.True(Path.GetDirectoryName(file).EndsWith(expectedFolder, StringComparison.OrdinalIgnoreCase), $"'{file}' is not in the '{expectedFolder}' folder");
JObject actualJson = JObject.Parse(File.ReadAllText(file));
JToken[] extensionsArray = actualJson["extensions"]
.AsEnumerable()
.OrderBy(p => p["name"])
.ToArray();
string createErrorMessage()
{
return $"File: {file} | Actual: {actualJson}";
}
Assert.True(extensionValidators.Length == extensionsArray.Length, $"Incorrect number of validators ({extensionValidators.Length}) | {createErrorMessage()}");
for (int i = 0; i < extensionValidators.Length; i++)
{
JToken extension = extensionsArray[i];
Assert.True(extensionValidators[i](extension), $"Failed validator for {extension} | {createErrorMessage()}");
}
}
}