Skip to content

Commit

Permalink
Update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
potatoqualitee committed Oct 25, 2024
1 parent 7c61359 commit 69b7dc3
Show file tree
Hide file tree
Showing 24 changed files with 1,117 additions and 530 deletions.
44 changes: 31 additions & 13 deletions tests/Add-DbaDbMirrorMonitor.Tests.ps1
Original file line number Diff line number Diff line change
@@ -1,28 +1,46 @@
$commandname = $MyInvocation.MyCommand.Name.Replace(".Tests.ps1", "")
Write-Host -Object "Running $PSCommandpath" -ForegroundColor Cyan
#Requires -Module @{ ModuleName="Pester"; ModuleVersion="5.0"}
param($ModuleName = "dbatools")
$global:TestConfig = Get-TestConfig

Describe "$CommandName Unit Tests" -Tags "UnitTests" {
Context "Validate parameters" {
[object[]]$params = (Get-Command $CommandName).Parameters.Keys | Where-Object {$_ -notin ('whatif', 'confirm')}
[object[]]$knownParameters = 'SqlInstance', 'SqlCredential', 'EnableException'
$knownParameters += [System.Management.Automation.PSCmdlet]::CommonParameters
It "Should only contain our specific parameters" {
(@(Compare-Object -ReferenceObject ($knownParameters | Where-Object {$_}) -DifferenceObject $params).Count ) | Should Be 0
Describe "Add-DbaDbMirrorMonitor" -Tag "UnitTests" {
Context "Parameter validation" {
BeforeAll {
$command = Get-Command Add-DbaDbMirrorMonitor
$expectedParameters = $TestConfig.CommonParameters

$expectedParameters += @(
"SqlInstance",
"SqlCredential",
"EnableException"
)
}

It "Has parameter: <_>" -ForEach $expectedParameters {
$command | Should -HaveParameter $PSItem
}

It "Should have exactly the number of expected parameters" {
$actualParameters = $command.Parameters.Keys | Where-Object { $PSItem -notin "WhatIf", "Confirm" }
Compare-Object -ReferenceObject $expectedParameters -DifferenceObject $actualParameters | Should -BeNullOrEmpty
}
}
}

Describe "$commandname Integration Tests" -Tag "IntegrationTests" {
Describe "Add-DbaDbMirrorMonitor" -Tag "IntegrationTests" {
BeforeAll {
$null = Remove-DbaDbMirrorMonitor -SqlInstance $TestConfig.instance2 -WarningAction SilentlyContinue
}
AfterAll {
$null = Remove-DbaDbMirrorMonitor -SqlInstance $TestConfig.instance2 -WarningAction SilentlyContinue
}

It "adds the mirror monitor" {
$results = Add-DbaDbMirrorMonitor -SqlInstance $TestConfig.instance2 -WarningAction SilentlyContinue
$results.MonitorStatus | Should -Be 'Added'
Context "When adding mirror monitor" {
BeforeAll {
$results = Add-DbaDbMirrorMonitor -SqlInstance $TestConfig.instance2 -WarningAction SilentlyContinue
}

It "Adds the mirror monitor" {
$results.MonitorStatus | Should -Be 'Added'
}
}
}
108 changes: 71 additions & 37 deletions tests/Add-DbaDbRoleMember.Tests.ps1
Original file line number Diff line number Diff line change
@@ -1,19 +1,36 @@
$CommandName = $MyInvocation.MyCommand.Name.Replace(".Tests.ps1", "")
Write-Host -Object "Running $PSCommandpath" -ForegroundColor Cyan
#Requires -Module @{ ModuleName="Pester"; ModuleVersion="5.0"}
param($ModuleName = "dbatools")
$global:TestConfig = Get-TestConfig

Describe "$CommandName Unit Tests" -Tags "UnitTests" {
Context "Validate parameters" {
[object[]]$params = (Get-Command $CommandName).Parameters.Keys | Where-Object {$_ -notin ('whatif', 'confirm')}
[object[]]$knownParameters = 'SqlInstance', 'SqlCredential', 'Database', 'Role', 'Member', 'InputObject', 'EnableException'
$knownParameters += [System.Management.Automation.PSCmdlet]::CommonParameters
It "Should only contain our specific parameters" {
(@(Compare-Object -ReferenceObject ($knownParameters | Where-Object {$_}) -DifferenceObject $params).Count ) | Should Be 0
Describe "Add-DbaDbRoleMember" -Tag "UnitTests" {
Context "Parameter validation" {
BeforeAll {
$command = Get-Command Add-DbaDbRoleMember
$expectedParameters = $TestConfig.CommonParameters

$expectedParameters += @(
"SqlInstance",
"SqlCredential",
"Database",
"Role",
"Member",
"InputObject",
"EnableException"
)
}

It "Has parameter: <_>" -ForEach $expectedParameters {
$command | Should -HaveParameter $PSItem
}

It "Should have exactly the number of expected parameters" {
$actualParameters = $command.Parameters.Keys | Where-Object { $PSItem -notin "WhatIf", "Confirm" }
Compare-Object -ReferenceObject $expectedParameters -DifferenceObject $actualParameters | Should -BeNullOrEmpty
}
}
}

Describe "$CommandName Integration Tests" -Tags "IntegrationTests" {
Describe "Add-DbaDbRoleMember" -Tag "IntegrationTests" {
BeforeAll {
$server = Connect-DbaInstance -SqlInstance $TestConfig.instance2
$user1 = "dbatoolssci_user1_$(Get-Random)"
Expand All @@ -29,58 +46,75 @@ Describe "$CommandName Integration Tests" -Tags "IntegrationTests" {
$null = New-DbaDbUser -SqlInstance $TestConfig.instance2 -Database msdb -Login $user2 -Username $user2 -IncludeSystem
$null = $server.Query("CREATE ROLE $role", $dbname)
}

AfterAll {
$server = Connect-DbaInstance -SqlInstance $TestConfig.instance2
$null = $server.Query("DROP USER $user1", 'msdb')
$null = $server.Query("DROP USER $user2", 'msdb')
$null = Remove-DbaDatabase -SqlInstance $TestConfig.instance2 -Database $dbname -confirm:$false
$null = Remove-DbaLogin -SqlInstance $TestConfig.instance2 -Login $user1, $user2 -confirm:$false
$null = Remove-DbaDatabase -SqlInstance $TestConfig.instance2 -Database $dbname -Confirm:$false
$null = Remove-DbaLogin -SqlInstance $TestConfig.instance2 -Login $user1, $user2 -Confirm:$false
}

Context "Functionality" {
It 'Adds User to Role' {
Add-DbaDbRoleMember -SqlInstance $TestConfig.instance2 -Role $role -Member $user1 -Database $dbname -confirm:$false
Context "When adding a user to a role" {
BeforeAll {
$result = Add-DbaDbRoleMember -SqlInstance $TestConfig.instance2 -Role $role -Member $user1 -Database $dbname -Confirm:$false
$roleDBAfter = Get-DbaDbRoleMember -SqlInstance $server -Database $dbname -Role $role
}

$roleDBAfter.Role | Should Be $role
$roleDBAfter.Login | Should Be $user1
$roleDBAfter.UserName | Should Be $user1
It "Adds the user to the role" {
$roleDBAfter.Role | Should -Be $role
$roleDBAfter.Login | Should -Be $user1
$roleDBAfter.UserName | Should -Be $user1
}
}

It 'Adds User to Multiple Roles' {
Context "When adding a user to multiple roles" {
BeforeAll {
$roleDB = Get-DbaDbRoleMember -SqlInstance $server -Database msdb -Role db_datareader, SQLAgentReaderRole
Add-DbaDbRoleMember -SqlInstance $TestConfig.instance2 -Role db_datareader, SQLAgentReaderRole -Member $user1 -Database msdb -confirm:$false

$result = Add-DbaDbRoleMember -SqlInstance $TestConfig.instance2 -Role db_datareader, SQLAgentReaderRole -Member $user1 -Database msdb -Confirm:$false
$roleDBAfter = Get-DbaDbRoleMember -SqlInstance $server -Database msdb -Role db_datareader, SQLAgentReaderRole
$roleDBAfter.Count | Should BeGreaterThan $roleDB.Count
$roleDB.UserName -contains $user1 | Should Be $false
$roleDBAfter.UserName -contains $user1 | Should Be $true
}

It "Adds the user to multiple roles" {
$roleDBAfter.Count | Should -BeGreaterThan $roleDB.Count
$roleDB.UserName | Should -Not -Contain $user1
$roleDBAfter.UserName | Should -Contain $user1
}
}

It 'Adds User to Roles via piped input from Get-DbaDbRole' {
Context "When adding a user to roles via piped input from Get-DbaDbRole" {
BeforeAll {
$roleInput = Get-DbaDbRole -SqlInstance $server -Database msdb -Role db_datareader, SQLAgentReaderRole
$roleDB = Get-DbaDbRoleMember -SqlInstance $server -Database msdb -Role db_datareader, SQLAgentReaderRole
$roleInput | Add-DbaDbRoleMember -User $user2 -confirm:$false

$result = $roleInput | Add-DbaDbRoleMember -User $user2 -Confirm:$false
$roleDBAfter = Get-DbaDbRoleMember -SqlInstance $server -Database msdb -Role db_datareader, SQLAgentReaderRole
$roleDB.UserName -contains $user2 | Should Be $false
$roleDBAfter.UserName -contains $user2 | Should Be $true
}

It 'Skip adding user to role if already a member' {
$messages = Add-DbaDbRoleMember -SqlInstance $TestConfig.instance2 -Role $role -Member $user1 -Database $dbname -confirm:$false -Verbose 4>&1
$messageCount = ($messages -match 'Adding user').Count
It "Adds the user to roles via piped input" {
$roleDB.UserName | Should -Not -Contain $user2
$roleDBAfter.UserName | Should -Contain $user2
}
}

Context "When adding a user to a role they are already a member of" {
BeforeAll {
$messages = Add-DbaDbRoleMember -SqlInstance $TestConfig.instance2 -Role $role -Member $user1 -Database $dbname -Confirm:$false -Verbose 4>&1
}

$messageCount | Should Be 0
It "Skips adding the user and outputs appropriate message" {
$messageCount = ($messages -match 'Adding user').Count
$messageCount | Should -Be 0
}
}

It 'Adds Role to Role' {
Add-DbaDbRoleMember -SqlInstance $TestConfig.instance2 -Role db_datawriter -Member $role -Database $dbname -confirm:$false
Context "When adding a role to another role" {
BeforeAll {
$result = Add-DbaDbRoleMember -SqlInstance $TestConfig.instance2 -Role db_datawriter -Member $role -Database $dbname -Confirm:$false
$roleDBAfter = Get-DbaDbRoleMember -SqlInstance $server -Database $dbname -Role db_datawriter
}

$roleDBAfter.MemberRole | Should Contain $role
It "Adds the role to another role" {
$roleDBAfter.MemberRole | Should -Contain $role
}
}
}

47 changes: 34 additions & 13 deletions tests/Add-DbaExtendedProperty.Tests.ps1
Original file line number Diff line number Diff line change
@@ -1,19 +1,36 @@
$CommandName = $MyInvocation.MyCommand.Name.Replace(".Tests.ps1", "")
Write-Host -Object "Running $PSCommandPath" -ForegroundColor Cyan
#Requires -Module @{ ModuleName="Pester"; ModuleVersion="5.0"}
param($ModuleName = "dbatools")
$global:TestConfig = Get-TestConfig

Describe "$CommandName Unit Tests" -Tag 'UnitTests' {
Context "Validate parameters" {
[array]$params = ([Management.Automation.CommandMetaData]$ExecutionContext.SessionState.InvokeCommand.GetCommand($CommandName, 'Function')).Parameters.Keys
[object[]]$knownParameters = 'SqlInstance', 'SqlCredential', 'Database', 'Name', 'InputObject', 'EnableException', 'Value'
It "Should only contain our specific parameters" {
Compare-Object -ReferenceObject $knownParameters -DifferenceObject $params | Should -BeNullOrEmpty
Describe "Add-DbaExtendedProperty" -Tag "UnitTests" {
Context "Parameter validation" {
BeforeAll {
$command = Get-Command Add-DbaExtendedProperty
$expectedParameters = $TestConfig.CommonParameters

$expectedParameters += @(
"SqlInstance",
"SqlCredential",
"Database",
"Name",
"Value",
"InputObject",
"EnableException"
)
}

It "Has parameter: <_>" -ForEach $expectedParameters {
$command | Should -HaveParameter $PSItem
}

It "Should have exactly the number of expected parameters" {
$actualParameters = $command.Parameters.Keys | Where-Object { $PSItem -notin "WhatIf", "Confirm" }
Compare-Object -ReferenceObject $expectedParameters -DifferenceObject $actualParameters | Should -BeNullOrEmpty
}
}
}

Describe "$CommandName Integration Tests" -Tag "IntegrationTests" {

Describe "Add-DbaExtendedProperty" -Tag "IntegrationTests" {
BeforeAll {
$random = Get-Random
$server2 = Connect-DbaInstance -SqlInstance $TestConfig.instance2
Expand All @@ -26,9 +43,13 @@ Describe "$CommandName Integration Tests" -Tag "IntegrationTests" {
$null = $db | Remove-DbaDatabase -Confirm:$false
}

Context "commands work as expected" {
It "works" {
$ep = $db | Add-DbaExtendedProperty -Name "Test_Database_Name" -Value "Sup"
Context "When adding extended properties" {
It "Adds an extended property to the database" {
$splatExtendedProperty = @{
Name = "Test_Database_Name"
Value = "Sup"
}
$ep = $db | Add-DbaExtendedProperty @splatExtendedProperty
$ep.Name | Should -Be "Test_Database_Name"
$ep.ParentName | Should -Be $db.Name
$ep.Value | Should -Be "Sup"
Expand Down
65 changes: 48 additions & 17 deletions tests/Add-DbaPfDataCollectorCounter.Tests.ps1
Original file line number Diff line number Diff line change
@@ -1,31 +1,62 @@
$CommandName = $MyInvocation.MyCommand.Name.Replace(".Tests.ps1", "")
Write-Host -Object "Running $PSCommandPath" -ForegroundColor Cyan
#Requires -Module @{ ModuleName="Pester"; ModuleVersion="5.0"}
param($ModuleName = "dbatools")
$global:TestConfig = Get-TestConfig

Describe "$CommandName Unit Tests" -Tag 'UnitTests' {
Context "Validate parameters" {
[object[]]$params = (Get-Command $CommandName).Parameters.Keys | Where-Object {$_ -notin ('whatif', 'confirm')}
[object[]]$knownParameters = 'ComputerName', 'Credential', 'CollectorSet', 'Collector', 'Counter', 'InputObject', 'EnableException'
$knownParameters += [System.Management.Automation.PSCmdlet]::CommonParameters
It "Should only contain our specific parameters" {
(@(Compare-Object -ReferenceObject ($knownParameters | Where-Object {$_}) -DifferenceObject $params).Count ) | Should Be 0
Describe "Add-DbaPfDataCollectorCounter" -Tag "UnitTests" {
Context "Parameter validation" {
BeforeAll {
$command = Get-Command Add-DbaPfDataCollectorCounter
$expectedParameters = $TestConfig.CommonParameters

$expectedParameters += @(
"ComputerName",
"Credential",
"CollectorSet",
"Collector",
"Counter",
"InputObject",
"EnableException"
)
}

It "Has parameter: <_>" -ForEach $expectedParameters {
$command | Should -HaveParameter $PSItem
}

It "Should have exactly the number of expected parameters" {
$actualParameters = $command.Parameters.Keys | Where-Object { $PSItem -notin "WhatIf", "Confirm" }
Compare-Object -ReferenceObject $expectedParameters -DifferenceObject $actualParameters | Should -BeNullOrEmpty
}
}
}

Describe "$CommandName Integration Tests" -Tags "IntegrationTests" {
BeforeEach {
Describe "Add-DbaPfDataCollectorCounter" -Tag "IntegrationTests" {
BeforeAll {
$null = Get-DbaPfDataCollectorSetTemplate -Template 'Long Running Queries' | Import-DbaPfDataCollectorSetTemplate |
Get-DbaPfDataCollector | Get-DbaPfDataCollectorCounter -Counter '\LogicalDisk(*)\Avg. Disk Queue Length' | Remove-DbaPfDataCollectorCounter -Confirm:$false
}

AfterAll {
$null = Get-DbaPfDataCollectorSet -CollectorSet 'Long Running Queries' | Remove-DbaPfDataCollectorSet -Confirm:$false
}
Context "Verifying command returns all the required results" {
It "returns the correct values" {
$results = Get-DbaPfDataCollectorSet -CollectorSet 'Long Running Queries' | Get-DbaPfDataCollector | Add-DbaPfDataCollectorCounter -Counter '\LogicalDisk(*)\Avg. Disk Queue Length'
$results.DataCollectorSet | Should Be 'Long Running Queries'
$results.Name | Should Be '\LogicalDisk(*)\Avg. Disk Queue Length'

Context "When adding a counter to a data collector" {
BeforeAll {
$splatAddCounter = @{
CollectorSet = 'Long Running Queries'
Counter = '\LogicalDisk(*)\Avg. Disk Queue Length'
}
$results = Get-DbaPfDataCollectorSet @splatAddCounter |
Get-DbaPfDataCollector |
Add-DbaPfDataCollectorCounter @splatAddCounter
}

It "Returns the correct DataCollectorSet" {
$results.DataCollectorSet | Should -Be 'Long Running Queries'
}

It "Returns the correct counter name" {
$results.Name | Should -Be '\LogicalDisk(*)\Avg. Disk Queue Length'
}
}
}
}
Loading

0 comments on commit 69b7dc3

Please sign in to comment.