diff --git a/source/tests/Test-EnableDKIM.ps1 b/source/tests/Test-EnableDKIM.ps1 index a0b5da9..607fad2 100644 --- a/source/tests/Test-EnableDKIM.ps1 +++ b/source/tests/Test-EnableDKIM.ps1 @@ -1,23 +1,40 @@ function Test-EnableDKIM { [CmdletBinding()] param ( + # Aligned # Parameters can be added if needed ) begin { - # Dot source the class script - - $auditResults = @() + # Dot source the class script if necessary + #. .\source\Classes\CISAuditResult.ps1 + # Initialization code, if needed } process { # 2.1.9 (L1) Ensure DKIM is enabled for all Exchange Online Domains - # Pass if Enabled is True for all domains. Fail if any domain has Enabled set to False. + + # Retrieve DKIM configuration for all domains $dkimConfig = Get-DkimSigningConfig | Select-Object Domain, Enabled $dkimResult = ($dkimConfig | ForEach-Object { $_.Enabled }) -notcontains $false $dkimFailedDomains = $dkimConfig | Where-Object { -not $_.Enabled } | ForEach-Object { $_.Domain } - # Create an instance of CISAuditResult and populate it + # Prepare failure reasons and details based on compliance + $failureReasons = if (-not $dkimResult) { + "DKIM is not enabled for some domains" + } + else { + "N/A" + } + + $details = if ($dkimResult) { + "All domains have DKIM enabled" + } + else { + "DKIM not enabled for: $($dkimFailedDomains -join ', ')" + } + + # Create and populate the CISAuditResult object $auditResult = [CISAuditResult]::new() $auditResult.Status = if ($dkimResult) { "Pass" } else { "Fail" } $auditResult.ELevel = "E3" @@ -31,14 +48,12 @@ function Test-EnableDKIM { $auditResult.IG2 = $true $auditResult.IG3 = $true $auditResult.Result = $dkimResult - $auditResult.Details = if (-not $dkimResult) { "DKIM not enabled for: $($dkimFailedDomains -join ', ')" } else { "All domains have DKIM enabled" } - $auditResult.FailureReason = if (-not $dkimResult) { "DKIM is not enabled for some domains" } else { "N/A" } - - $auditResults += $auditResult + $auditResult.Details = $details + $auditResult.FailureReason = $failureReasons } end { - # Return auditResults - return $auditResults + # Return the audit result + return $auditResult } -} \ No newline at end of file +}