plaster/ModuleBuild/scaffold/src/tests/SensitiveTermScan.Tests.ps1

#Requires -Modules Pester
<#
    This pester test verifies the files in the specified path do not contain sensitive information.
 
    Example:
    Invoke-Pester -Script @{Path = '.\src\tests\SensitiveTermScan.Tests.ps1'; Parameters = @{ Path = 'C:\Users\zloeber\Dropbox\Zach_Docs\Projects\Git\PSAD'; Terms = @('mydomainname.com', 'myservername') }}
#>


[CmdletBinding()]
Param(
    [Parameter(HelpMessage = 'Path to the files to scan.')]
    [string]$Path,
    [Parameter(HelpMessage = 'Terms to scan for.')]
    [string[]]$Terms
)

if (Test-Path $Path) {
    Describe 'Scan for sensitive terms.' {
        foreach ($Term in $Terms) {
            $TermSearch = @(Get-ChildItem -Recurse -Path $Path | Select-String -Pattern $Term)
            Context "Files in $Path" {
                It "should not contain the term $Term" {
                    $TermSearch.Count -gt 0 | Should Be $false
                }
            }
        }
    }
}