Skip to content

Commit e65b9a9

Browse files
author
Kapil Borle
committed
Refactor some tests that check correction extent
1 parent 8a02fa7 commit e65b9a9

4 files changed

Lines changed: 41 additions & 54 deletions

File tree

Tests/Rules/AvoidUsingAlias.tests.ps1

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
$violationMessage = "'cls' is an alias of 'Clear-Host'. Alias can introduce possible problems and make scripts hard to maintain. Please consider changing alias to its full content."
33
$violationName = "PSAvoidUsingCmdletAliases"
44
$directory = Split-Path -Parent $MyInvocation.MyCommand.Path
5-
$violationsFilepath = Join-Path $directory 'AvoidUsingAlias.ps1'
6-
$violations = Invoke-ScriptAnalyzer $violationsFilepath | Where-Object {$_.RuleName -eq $violationName}
5+
$violationFilepath = Join-Path $directory 'AvoidUsingAlias.ps1'
6+
$violations = Invoke-ScriptAnalyzer $violationFilepath | Where-Object {$_.RuleName -eq $violationName}
77
$noViolations = Invoke-ScriptAnalyzer $directory\AvoidUsingAliasNoViolations.ps1 | Where-Object {$_.RuleName -eq $violationName}
88

99
Describe "AvoidUsingAlias" {
@@ -18,13 +18,8 @@ Describe "AvoidUsingAlias" {
1818

1919
It "suggests correction" {
2020
Import-Module .\PSScriptAnalyzerTestHelper.psm1
21-
$violations[0].SuggestedCorrections.Count | Should Be 1
22-
$violations[0].SuggestedCorrections.Text | Should Be 'Invoke-Expression'
23-
Get-ExtentText $violations[0].SuggestedCorrections[0] $violationsFilepath | Should Be 'iex'
24-
25-
$violations[1].SuggestedCorrections.Count | Should Be 1
26-
$violations[1].SuggestedCorrections.Text | Should Be 'Clear-Host'
27-
Get-ExtentText $violations[1].SuggestedCorrections[0] $violationsFilepath | Should Be 'cls'
21+
Test-CorrectionExtent $violationFilepath $violations[0] 1 'iex' 'Invoke-Expression'
22+
Test-CorrectionExtent $violationFilepath $violations[1] 1 'cls' 'Clear-Host'
2823
}
2924
}
3025

Tests/Rules/AvoidUsingPlainTextForPassword.tests.ps1

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
$violationMessage = [regex]::Escape("Parameter '`$password' should use SecureString, otherwise this will expose sensitive information. See ConvertTo-SecureString for more information.")
44
$violationName = "PSAvoidUsingPlainTextForPassword"
55
$directory = Split-Path -Parent $MyInvocation.MyCommand.Path
6-
$violationsFilepath = Join-Path $directory 'AvoidUsingPlainTextForPassword.ps1'
7-
$violations = Invoke-ScriptAnalyzer $violationsFilepath | Where-Object {$_.RuleName -eq $violationName}
6+
$violationFilepath = Join-Path $directory 'AvoidUsingPlainTextForPassword.ps1'
7+
$violations = Invoke-ScriptAnalyzer $violationFilepath | Where-Object {$_.RuleName -eq $violationName}
88
$noViolations = Invoke-ScriptAnalyzer $directory\AvoidUsingPlainTextForPasswordNoViolations.ps1 | Where-Object {$_.RuleName -eq $violationName}
99

1010
Describe "AvoidUsingPlainTextForPassword" {
@@ -14,19 +14,11 @@ Describe "AvoidUsingPlainTextForPassword" {
1414
}
1515

1616
It "suggests corrections" {
17-
Import-Module .\PSScriptAnalyzerTestHelper.psm1
18-
Function Test-Extent($idx, $violationText, $correctionText)
19-
{
20-
$violation = $violations[$idx]
21-
$violation.SuggestedCorrections.Count | Should Be 1
22-
Get-ExtentText $violation.SuggestedCorrections[0] $violationsFilepath | Should Be $violationText
23-
$violation.SuggestedCorrections[0].Text | Should Be $correctionText
24-
}
25-
26-
Test-Extent 0 '$passphrases' '[SecureString] $passphrases'
27-
Test-Extent 1 '$passwordparam' '[SecureString] $passwordparam'
28-
Test-Extent 2 '$credential' '[SecureString] $credential'
29-
Test-Extent 3 '$password' '[SecureString] $password'
17+
Import-Module .\PSScriptAnalyzerTestHelper.psm1
18+
Test-CorrectionExtent $violationFilepath $violations[0] 1 '$passphrases' '[SecureString] $passphrases'
19+
Test-CorrectionExtent $violationFilepath $violations[1] 1 '$passwordparam' '[SecureString] $passwordparam'
20+
Test-CorrectionExtent $violationFilepath $violations[2] 1 '$credential' '[SecureString] $credential'
21+
Test-CorrectionExtent $violationFilepath $violations[3] 1 '$password' '[SecureString] $password'
3022
}
3123

3224
It "has the correct violation message" {

Tests/Rules/MisleadingBacktick.tests.ps1

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,24 @@
11
Import-Module PSScriptAnalyzer
22
$writeHostName = "PSMisleadingBacktick"
33
$directory = Split-Path -Parent $MyInvocation.MyCommand.Path
4-
$violationsFilepath = Join-Path $directory 'MisleadingBacktick.ps1'
5-
$violations = Invoke-ScriptAnalyzer $violationsFilepath | Where-Object {$_.RuleName -eq $writeHostName}
4+
$violationFilepath = Join-Path $directory 'MisleadingBacktick.ps1'
5+
$violations = Invoke-ScriptAnalyzer $violationFilepath | Where-Object {$_.RuleName -eq $writeHostName}
66
$noViolations = Invoke-ScriptAnalyzer $directory\NoMisleadingBacktick.ps1 | Where-Object {$_.RuleName -eq $clearHostName}
77

88
Describe "Avoid Misleading Backticks" {
99
Context "When there are violations" {
1010
It "has 5 misleading backtick violations" {
11-
Import-Module .\PSScriptAnalyzerTestHelper.psm1
1211
$violations.Count | Should Be 5
13-
14-
$idx = 0
15-
$violations[$idx].SuggestedCorrections.Count | Should Be 1
16-
$violations[$idx].SuggestedCorrections[0].Text | Should Be ''
17-
Get-ExtentText $violations[$idx].SuggestedCorrections[0] $violationsFilepath | Should BeExactly ' '
18-
19-
$idx = 1
20-
$violations[$idx].SuggestedCorrections.Count | Should Be 1
21-
$violations[$idx].SuggestedCorrections[0].Text | Should Be ''
22-
Get-ExtentText $violations[$idx].SuggestedCorrections[0] $violationsFilepath | Should BeExactly ' '
23-
24-
$idx = 2
25-
$violations[$idx].SuggestedCorrections.Count | Should Be 1
26-
$violations[$idx].SuggestedCorrections[0].Text | Should Be ''
27-
Get-ExtentText $violations[$idx].SuggestedCorrections[0] $violationsFilepath | Should BeExactly ' '
28-
29-
$idx = 3
30-
$violations[$idx].SuggestedCorrections.Count | Should Be 1
31-
$violations[$idx].SuggestedCorrections[0].Text | Should Be ''
32-
Get-ExtentText $violations[$idx].SuggestedCorrections[0] $violationsFilepath | Should BeExactly ' '
33-
34-
$idx = 4
35-
$violations[$idx].SuggestedCorrections.Count | Should Be 1
36-
$violations[$idx].SuggestedCorrections[0].Text | Should Be ''
37-
Get-ExtentText $violations[$idx].SuggestedCorrections[0] $violationsFilepath | Should BeExactly ' '
38-
3912
}
13+
14+
It "suggests correction" {
15+
Import-Module .\PSScriptAnalyzerTestHelper.psm1
16+
Test-CorrectionExtent $violationFilepath $violations[0] 1 ' ' ''
17+
Test-CorrectionExtent $violationFilepath $violations[1] 1 ' ' ''
18+
Test-CorrectionExtent $violationFilepath $violations[2] 1 ' ' ''
19+
Test-CorrectionExtent $violationFilepath $violations[3] 1 ' ' ''
20+
Test-CorrectionExtent $violationFilepath $violations[4] 1 ' ' ''
21+
}
4022
}
4123

4224
Context "When there are no violations" {

Tests/Rules/PSScriptAnalyzerTestHelper.psm1

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,22 @@ Function Get-ExtentText
1111
return($extent.Text)
1212
}
1313

14-
Export-ModuleMember -Function Get-ExtentText
14+
Function Test-CorrectionExtent
15+
{
16+
Param(
17+
[string] $violationFilepath,
18+
[Microsoft.Windows.PowerShell.ScriptAnalyzer.Generic.DiagnosticRecord] $diagnosticRecord,
19+
[int] $correctionsCount,
20+
[string] $violationText,
21+
[string] $correctionText
22+
)
23+
$corrections = $diagnosticRecord.SuggestedCorrections
24+
$corrections.Count | Should Be 1
25+
$corrections[0].Text | Should Be $correctionText
26+
Get-ExtentText $corrections[0] $violationFilepath | `
27+
Should Be $violationText
28+
}
29+
30+
31+
Export-ModuleMember -Function Get-ExtentText
32+
Export-ModuleMember -Function Test-CorrectionExtent

0 commit comments

Comments
 (0)