using SQLInsight.Rules.Servers; namespace SQLInsight.Rules.Tests; /// Every Windows server and synthetic check rule has its reviewable script in SQL Scripts/ (named by its id). public class ServerRuleScriptTests { private static DirectoryInfo Scripts() { for (var directory = new DirectoryInfo(AppContext.BaseDirectory); directory is not null; directory = directory.Parent) { var candidate = new DirectoryInfo(Path.Combine(directory.FullName, "SQL Scripts")); if (candidate.Exists) { return candidate; } } throw new DirectoryNotFoundException("SQL Scripts/ blev ikke fundet over testens mappe."); } [Fact] public void Every_server_and_check_rule_has_a_script_with_its_id_and_title() { var folder = Scripts(); Assert.All(ServerRuleCatalog.All, rule => { var file = Path.Combine(folder.FullName, rule.Id + ".sql"); Assert.True(File.Exists(file), $"{rule.Id}.sql mangler i SQL Scripts/."); var text = File.ReadAllText(file); Assert.Contains($"{rule.Id} – {rule.Title}", text, StringComparison.Ordinal); Assert.Contains("Evaluering", text, StringComparison.Ordinal); Assert.DoesNotContain("sysadmin", text, StringComparison.OrdinalIgnoreCase); }); } }