API Reference
RuleBuilderExtensions
Extension methods for rule building.
Inheritance
- Object
- RuleBuilderExtensions
Methods
public static RuleBuilder AddBooleanTest(RuleBuilder builder, String testName, String propertyPath, Boolean expectedValue = true, Importance importance = Moderate) #RuleBuilderCreates a simple pass/fail test.
Parameters
- builder TestimoX.Testing.RuleBuilder
- testName System.String
- propertyPath System.String
- expectedValue System.Boolean = true
- importance TestimoX.Definitions.Importance = Moderate
public static RuleBuilder AddPercentageTest(RuleBuilder builder, String testName, String propertyPath, Double minPercentage, Importance importance = Moderate) #RuleBuilderCreates a percentage test.
Parameters
- builder TestimoX.Testing.RuleBuilder
- testName System.String
- propertyPath System.String
- minPercentage System.Double
- importance TestimoX.Definitions.Importance = Moderate
public static RuleBuilder AddSecurityScoreTest(RuleBuilder builder, String testName, Dictionary<String, Int32> issueWeights, Int32 minimumScore = 70) #RuleBuilderCreates a security score test.
Parameters
- builder TestimoX.Testing.RuleBuilder
- testName System.String
- issueWeights System.Collections.Generic.Dictionary{System.String,System.Int32}
- minimumScore System.Int32 = 70
public static RuleBuilder Exclude(RuleBuilder builder, params String[] keys) #RuleBuilderExcludes items whose String) property equals any of the provided keys.
Parameters
- builder TestimoX.Testing.RuleBuilder
- Rule builder.
- keys System.String[]
- Values to exclude.
Returns
The same builder.
public static RuleBuilder ExpectSourceOutput(RuleBuilder builder, Boolean expectOutput) #RuleBuilderSets whether the source is expected to return data. Use false for "findings-only" rules that legitimately return an empty list when no issues are present (to avoid failing the gate).
Parameters
- builder TestimoX.Testing.RuleBuilder
- expectOutput System.Boolean
public static RuleBuilder FindingsOnly(RuleBuilder builder) #RuleBuilderSemantic alias for Boolean) when a rule returns only findings. Use on rules whose source produces a list of issues; empty list means "good".
Parameters
- builder TestimoX.Testing.RuleBuilder
public static RuleBuilder Include(RuleBuilder builder, params String[] keys) #RuleBuilderIncludes only items whose String) property equals any of the provided keys.
Parameters
- builder TestimoX.Testing.RuleBuilder
- keys System.String[]
public static RuleBuilder MatchOn(RuleBuilder builder, String propertyPath) #RuleBuilderSets the property path that identifies a unique object (used to match inclusions/exclusions).
Parameters
- builder TestimoX.Testing.RuleBuilder
- Rule builder.
- propertyPath System.String
- Property path (e.g., "SamAccountName").
Returns
The same builder.
public static RuleBuilder RequiresComputers(RuleBuilder builder, Action<ComputerDataRequirement> configure) #RuleBuilderDeclares that the rule requires enumerating computer data and allows specifying filters/scope.
Parameters
- builder TestimoX.Testing.RuleBuilder
- Rule builder.
- configure System.Action{TestimoX.Planning.ComputerDataRequirement}
- Callback to configure computer data needs.
Returns
The same builder.
public static RuleBuilder RequiresDataSets(RuleBuilder builder, params DataSetKind[] dataSets) #RuleBuilderDeclares generic dataset requirements to pre-warm once for this run. Prefer this over specialized helpers.
Parameters
- builder TestimoX.Testing.RuleBuilder
- dataSets TestimoX.Planning.DataSetKind[]
public static RuleBuilder RequiresGpo(RuleBuilder builder, Action<GpoDataRequirement> configure) #RuleBuilderDeclares that the rule requires Group Policy data and specifies which caches to warm.
Parameters
- builder TestimoX.Testing.RuleBuilder
- Rule builder.
- configure System.Action{TestimoX.Planning.GpoDataRequirement}
- Callback to configure GPO data needs.
Returns
The same builder.
public static RuleBuilder RequiresGroups(RuleBuilder builder, Action<GroupDataRequirement> configure) #RuleBuilderDeclares that the rule requires enumerating group data and allows specifying filters/scope.
Parameters
- builder TestimoX.Testing.RuleBuilder
- Rule builder.
- configure System.Action{TestimoX.Planning.GroupDataRequirement}
- Callback to configure group data needs.
Returns
The same builder.
public static RuleBuilder RequiresPermissions(RuleBuilder builder, PermissionRequired permission) #RuleBuilderSets the minimal permission level required to execute this rule.
Parameters
- builder TestimoX.Testing.RuleBuilder
- permission TestimoX.Definitions.PermissionRequired
public static RuleBuilder RequiresUsers(RuleBuilder builder, Action<UserDataRequirement> configure) #RuleBuilderDeclares that the rule requires enumerating user data and allows specifying filters/scope.
Parameters
- builder TestimoX.Testing.RuleBuilder
- Rule builder.
- configure System.Action{TestimoX.Planning.UserDataRequirement}
- Callback to configure user data needs.
Returns
The same builder.
public static RuleBuilder WithCrosswalk(RuleBuilder builder, params RuleVendorRef[] refs) #RuleBuilderAttaches inline crosswalk references to vendor baselines or external docs. This makes mappings visible directly in the rule source.
Parameters
- builder TestimoX.Testing.RuleBuilder
- refs TestimoX.Definitions.RuleVendorRef[]
public static RuleBuilder WithGuidance(RuleBuilder builder, Action<GuidanceBuilder> configure) #RuleBuilderAdds guidance (summary, investigation, remediation, references, examples) to a rule.
Parameters
- builder TestimoX.Testing.RuleBuilder
- configure System.Action{TestimoX.Testing.RuleBuilderExtensions.GuidanceBuilder}
Examples
var rule = RuleBuilder.Create("DomainGpoAnonymousPermissions")
.DisplayName("GPO – Anonymous Permissions")
.Description("Checks whether anonymous access to directory data is allowed.")
.ForScope(Scope.Domain)
.WithGuidance(g => g
.Summary("Anonymous access should be disabled to reduce information exposure.")
.WhyItMatters("Unauthenticated users may enumerate users, groups, and other objects.")
.HowToFix(
"Set 'Network access: Do not allow anonymous enumeration of SAM accounts and shares' to Enabled.",
"Ensure 'Allow anonymous SID/Name translation' is Disabled.")
.Reference("Security baseline", "https://aka.ms/win-baselines"))
.Build();