1
- # Requires -Module @ { ModuleName = " Pester" ; ModuleVersion = " 5.0" }
2
- param (
3
- $ModuleName = " dbatools" ,
4
- $CommandName = " Get-DbaErrorLog" ,
5
- $PSDefaultParameterValues = $TestConfig.Defaults
6
- )
7
-
1
+ $CommandName = $MyInvocation.MyCommand.Name.Replace (" .Tests.ps1" , " " )
8
2
Write-Host - Object " Running $PSCommandPath " - ForegroundColor Cyan
9
3
$global :TestConfig = Get-TestConfig
10
4
11
- Describe $CommandName - Tag UnitTests {
12
- Context " Parameter validation" {
13
- BeforeAll {
14
- $hasParameters = (Get-Command $CommandName ).Parameters.Values.Name | Where-Object { $PSItem -notin (" WhatIf" , " Confirm" ) }
15
- $expectedParameters = $TestConfig.CommonParameters
16
- $expectedParameters += @ (
17
- " SqlInstance" ,
18
- " SqlCredential" ,
19
- " LogNumber" ,
20
- " Source" ,
21
- " Text" ,
22
- " After" ,
23
- " Before" ,
24
- " EnableException"
25
- )
26
- }
27
-
28
- It " Should have the expected parameters" {
29
- Compare-Object - ReferenceObject $expectedParameters - DifferenceObject $hasParameters | Should - BeNullOrEmpty
5
+ Describe " $CommandName Unit Tests" - Tag ' UnitTests' {
6
+ Context " Validate parameters" {
7
+ [object []]$params = (Get-Command $CommandName ).Parameters.Keys | Where-Object {$_ -notin (' whatif' , ' confirm' )}
8
+ [object []]$knownParameters = ' SqlInstance' , ' SqlCredential' , ' LogNumber' , ' Source' , ' Text' , ' After' , ' Before' , ' EnableException'
9
+ $knownParameters += [System.Management.Automation.PSCmdlet ]::CommonParameters
10
+ It " Should only contain our specific parameters" {
11
+ (@ (Compare-Object - ReferenceObject ($knownParameters | Where-Object {$_ }) - DifferenceObject $params ).Count ) | Should Be 0
30
12
}
31
13
}
32
14
}
33
15
34
- Describe $CommandName - Tag IntegrationTests {
16
+ Describe " $CommandName Integration Tests " - Tags " IntegrationTests" {
35
17
Context " Correctly gets error log messages" {
18
+ $sourceFilter = " Logon"
19
+ $textFilter = " All rights reserved"
36
20
BeforeAll {
37
- # We want to run all commands in the BeforeAll block with EnableException to ensure that the test fails if the setup fails.
38
- $PSDefaultParameterValues [' *-Dba*:EnableException' ] = $true
39
-
40
- $global :sourceFilter = " Logon"
41
- $global :textFilter = " All rights reserved"
42
- $testLogin = " DaperDan"
43
-
44
- $existingLogin = Get-DbaLogin - SqlInstance $TestConfig.instance1 - Login $testLogin
45
- if ($existingLogin ) {
46
- Get-DbaProcess - SqlInstance $TestConfig.instance1 - Login $testLogin | Stop-DbaProcess
47
- $existingLogin.Drop ()
21
+ $login = ' DaperDan'
22
+ $l = Get-DbaLogin - SqlInstance $TestConfig.instance1 - Login $login
23
+ if ($l ) {
24
+ Get-DbaProcess - SqlInstance $instance - Login $login | Stop-DbaProcess
25
+ $l.Drop ()
48
26
}
49
-
50
27
# (1) Cycle errorlog message: The error log has been reinitialized
51
- $sqlCycleLog = " EXEC sp_cycle_errorlog;"
52
- $serverConnection = Connect-DbaInstance - SqlInstance $TestConfig.instance1
53
- $null = $serverConnection .Query ($sqlCycleLog )
28
+ $sql = " EXEC sp_cycle_errorlog;"
29
+ $server = Connect-DbaInstance - SqlInstance $TestConfig.instance1
30
+ $null = $server .Query ($sql )
54
31
55
32
# (2) Need a login failure, source would be Logon
56
- $testPassword = " p0w3rsh3llrules" | ConvertTo-SecureString - Force - AsPlainText
57
- $testCredential = New-Object System.Management.Automation.PSCredential($testLogin , $testPassword )
33
+ $pwd = " p0w3rsh3llrules" | ConvertTo-SecureString - Force - AsPlainText
34
+ $sqlCred = New-Object System.Management.Automation.PSCredential($login , $pwd )
58
35
try {
59
- Connect-DbaInstance - SqlInstance $TestConfig.instance1 - SqlCredential $testCredential - ErrorVariable $null
60
- } catch { }
61
-
62
- # Get sample data for date filtering tests
63
- $global :sampleLogEntry = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - LogNumber 1 | Select-Object - First 1
64
- $global :lastLogEntry = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - LogNumber 1 | Select-Object - Last 1
65
-
66
- # We want to run all commands outside of the BeforeAll block without EnableException to be able to test for specific warnings.
67
- $PSDefaultParameterValues.Remove (' *-Dba*:EnableException' )
68
- }
69
-
70
- AfterAll {
71
- # We want to run all commands in the AfterAll block with EnableException to ensure that the test fails if the cleanup fails.
72
- $PSDefaultParameterValues [' *-Dba*:EnableException' ] = $true
73
-
74
- # Cleanup test login if it still exists
75
- $cleanupLogin = Get-DbaLogin - SqlInstance $TestConfig.instance1 - Login " DaperDan" - ErrorAction SilentlyContinue
76
- if ($cleanupLogin ) {
77
- $cleanupLogin.Drop ()
78
- }
36
+ Connect-DbaInstance - SqlInstance $TestConfig.instance1 - SqlCredential $sqlCred - ErrorVariable $whatever
37
+ } catch {}
79
38
}
80
39
It " Has the correct default properties" {
81
- $expectedProps = " ComputerName,InstanceName,SqlInstance,LogDate,Source,Text" .Split(" , " )
40
+ $expectedProps = ' ComputerName,InstanceName,SqlInstance,LogDate,Source,Text' .Split(' , ' )
82
41
$results = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - LogNumber 0
83
- ($results [0 ].PSStandardMembers.DefaultDisplayPropertySet.ReferencedPropertyNames | Sort-Object ) | Should - Be ($expectedProps | Sort-Object )
42
+ ($results [0 ].PSStandardMembers.DefaultDisplayPropertySet.ReferencedPropertyNames | Sort-Object ) | Should Be ($expectedProps | Sort-Object )
84
43
}
85
-
86
- It " Returns filtered results for [Source = $global :sourceFilter ]" {
87
- $results = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - Source $global :sourceFilter
88
- $results [0 ].Source | Should - Be $global :sourceFilter
44
+ It " Returns filtered results for [Source = $sourceFilter ]" {
45
+ $results = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - Source $sourceFilter
46
+ $results [0 ].Source | Should Be $sourceFilter
89
47
}
90
-
91
- It " Returns filtered result for [LogNumber = 0] and [Source = $global :sourceFilter ]" {
92
- $results = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - LogNumber 0 - Source $global :sourceFilter
93
- $results [0 ].Source | Should - Be $global :sourceFilter
48
+ It " Returns filtered result for [LogNumber = 0] and [Source = $sourceFilter ]" {
49
+ $results = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - LogNumber 0 - Source $sourceFilter
50
+ $results [0 ].Source | Should Be $sourceFilter
94
51
}
95
-
96
- It " Returns filtered results for [Text = $global :textFilter ]" {
97
- $results = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - Text $global :textFilter
98
- ($results [0 ].Text -like " *$global :textFilter *" ) | Should - BeTrue
52
+ It " Returns filtered results for [Text = $textFilter ]" {
53
+ $results = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - Text $textFilter
54
+ {$results [0 ].Text -like " *$textFilter *" } | Should Be $true
99
55
}
100
-
101
- It " Returns filtered result for [LogNumber = 0] and [Text = $global :textFilter ]" {
102
- $results = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - LogNumber 0 - Text $global :textFilter
103
- ($results [0 ].Text -like " *$global :textFilter *" ) | Should - BeTrue
56
+ It " Returns filtered result for [LogNumber = 0] and [Text = $textFilter ]" {
57
+ $results = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - LogNumber 0 - Text $textFilter
58
+ {$results [0 ].Text -like " *$textFilter " } | Should Be $true
104
59
}
60
+ $after = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - LogNumber 1 | Select-Object - First 1
61
+ $before = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - LogNumber 1 | Select-Object - Last 1
105
62
106
- It " Returns filtered results for After parameter " {
107
- $afterFilter = $global :sampleLogEntry .LogDate.AddMinutes ( +1 )
63
+ $afterFilter = $after .LogDate.AddMinutes ( +1 )
64
+ It " Returns filtered results for [After = $afterFilter " {
108
65
$results = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - After $afterFilter
109
- ( $results [0 ].LogDate -ge $afterFilter ) | Should - BeTrue
66
+ { $results [0 ].LogDate -ge $afterFilter } | Should Be $true
110
67
}
111
-
112
- It " Returns filtered results for [LogNumber = 1] and After parameter" {
113
- $afterFilter = $global :sampleLogEntry.LogDate.AddMinutes (+1 )
68
+ It " Returns filtered results for [LogNumber = 1] and [After = $afterFilter " {
114
69
$results = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - LogNumber 1 - After $afterFilter
115
- ( $results [0 ].LogDate -ge $afterFilter ) | Should - BeTrue
70
+ { $results [0 ].LogDate -ge $afterFilter } | Should Be $true
116
71
}
117
-
118
- It " Returns filtered result for Before parameter" {
119
- $beforeFilter = $global :lastLogEntry.LogDate.AddMinutes (-1 )
72
+ $beforeFilter = $before.LogDate.AddMinutes (-1 )
73
+ It " Returns filtered result for [Before = $beforeFilter ]" {
120
74
$results = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - Before $beforeFilter
121
- ( $results [-1 ].LogDate -le $beforeFilter ) | Should - BeTrue
75
+ { $results [-1 ].LogDate -le $beforeFilter } | Should Be $true
122
76
}
123
-
124
- It " Returns filtered result for [LogNumber = 1] and Before parameter" {
125
- $beforeFilter = $global :lastLogEntry.LogDate.AddMinutes (-1 )
77
+ It " Returns filtered result for [LogNumber = 1] and [Before = $beforeFilter ]" {
126
78
$results = Get-DbaErrorLog - SqlInstance $TestConfig.instance1 - LogNumber 1 - Before $beforeFilter
127
- ( $results [-1 ].LogDate -le $beforeFilter ) | Should - BeTrue
79
+ { $results [-1 ].LogDate -le $beforeFilter } | Should Be $true
128
80
}
129
81
}
130
- }
82
+ }
0 commit comments