using SQLInsight.Core.Instances; using SQLInsight.Rules.Engine; using static SQLInsight.Rules.Tests.TestInstances; namespace SQLInsight.Rules.Tests; public class ManagedInstanceTests { private static RuleContext ManagedInstance() { var info = new InstanceInfo { ServerName = "mi-prod.abc123.database.windows.net", Version = SqlServerVersion.Parse("12.0.2000.8"), Edition = "SQL Azure", EngineEdition = EngineEdition.AzureSqlManagedInstance, }; var context = new RuleContext(info, InstanceCapabilities.From(info), Now); context.Data.Set(Config(("max server memory (MB)", 2147483647), ("cost threshold for parallelism", 5), ("max degree of parallelism", 0), ("xp_cmdshell", 0))); context.Data.Set(Server(cpus: 8)); context.Data.Set(DatabaseList(Database(change: d => d with { LastFullBackup = null, LastGoodCheckDb = new DateTime(1900, 1, 1) }))); return context; } [Fact] public void Azure_managed_areas_are_reported_as_handled_by_azure_not_as_findings() { var results = new RuleEngine(BuiltInRules.Create()).Evaluate(ManagedInstance()); foreach (var id in new[] { "SQLI-VER-001", "SQLI-VER-002", "SQLI-CFG-001", "SQLI-DB-007", "SQLI-DB-009", "SQLI-DB-015" }) { var result = results.Single(r => r.RuleId == id); Assert.Equal(RuleOutcome.NotMeasurable, result.Outcome); Assert.Equal("Håndteres af Azure på Azure SQL Managed Instance.", result.Reason); } } [Fact] public void Workload_rules_still_apply() { var results = new RuleEngine(BuiltInRules.Create()).Evaluate(ManagedInstance()); Assert.Equal(RuleOutcome.Findings, results.Single(r => r.RuleId == "SQLI-CFG-003").Outcome); // cost threshold 5 } }