Skip to content
Merged
1 change: 1 addition & 0 deletions functions/New-DbaDatabase.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ function New-DbaDatabase {
[parameter(Mandatory, ValueFromPipeline)]
[DbaInstanceParameter[]]$SqlInstance,
[PSCredential]$SqlCredential,
[Alias('Database')]
[string[]]$Name,
[string]$Collation,
[string]$Recoverymodel,
Expand Down
321 changes: 6 additions & 315 deletions internal/functions/Connect-SqlInstance.ps1

Large diffs are not rendered by default.

10 changes: 1 addition & 9 deletions tests/Get-DbaRepPublication.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Write-Host -Object "Running $PSCommandpath" -ForegroundColor Cyan
Describe "$commandname Unit Tests" -Tag 'UnitTests' {
Context "Validate parameters" {
[object[]]$params = (Get-Command $CommandName).Parameters.Keys | Where-Object {$_ -notin ('whatif', 'confirm')}
[object[]]$knownParameters = 'SqlInstance','Database','SqlCredential','PublicationType','EnableException'
[object[]]$knownParameters = 'SqlInstance', 'Database', 'SqlCredential', 'PublicationType', '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
Expand Down Expand Up @@ -71,14 +71,6 @@ Describe "$commandname Unit Tests" -Tag 'UnitTests' {
$Results.PublicationType | Should Be "Snapshot"
}

It "Stops if the SqlInstance does not exist" {

Mock Connect-SqlInstance -MockWith { Throw }

{ Get-DbaRepPublication -sqlinstance MockServerName -EnableException} | should Throw

}

It "Stops if validate set for PublicationType is not met" {

{ Get-DbaRepPublication -SqlInstance MockServerName -PublicationType NotAPubType } | should Throw
Expand Down
20 changes: 1 addition & 19 deletions tests/Get-DbaServerRole.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,12 @@ Write-Host -Object "Running $PSCommandPath" -ForegroundColor Cyan
Describe "$CommandName Unit Tests" -Tag 'UnitTests' {
Context "Validate parameters" {
[object[]]$params = (Get-Command $CommandName).Parameters.Keys | Where-Object {$_ -notin ('whatif', 'confirm')}
[object[]]$knownParameters = 'SqlInstance','SqlCredential','ServerRole','ExcludeServerRole','ExcludeFixedRole','EnableException'
[object[]]$knownParameters = 'SqlInstance', 'SqlCredential', 'ServerRole', 'ExcludeServerRole', 'ExcludeFixedRole', '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
}
}
Context "Input validation" {
BeforeAll {
Mock Stop-Function { } -ModuleName dbatools
}
It "Should Call Stop-Function if instance does not exist or connection failure" {
Set-DbatoolsConfig -FullName sql.connection.timeout -Value 1
Get-DbaServerRole -SqlInstance Dummy | Should Be
}
It "Validates that Stop Function Mock has been called" {
$assertMockParams = @{
'CommandName' = 'Stop-Function'
'Times' = 1
'Exactly' = $true
'Module' = 'dbatools'
}
Assert-MockCalled @assertMockParams
}
}
}

Describe "$CommandName Integration Tests" -Tags "IntegrationTests" {
Expand Down
12 changes: 6 additions & 6 deletions tests/Invoke-DbaDbDbccUpdateUsage.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Write-Host -Object "Running $PSCommandPath" -ForegroundColor Cyan
Describe "$CommandName Unit Tests" -Tag 'UnitTests' {
Context "Validate parameters" {
[object[]]$params = (Get-Command $CommandName).Parameters.Keys | Where-Object {$_ -notin ('whatif', 'confirm')}
[object[]]$knownParameters = 'SqlInstance','SqlCredential','Database','Table','Index','NoInformationalMessages','CountRows','EnableException'
[object[]]$knownParameters = 'SqlInstance', 'SqlCredential', 'Database', 'Table', 'Index', 'NoInformationalMessages', 'CountRows', '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
Expand All @@ -14,15 +14,15 @@ Describe "$CommandName Unit Tests" -Tag 'UnitTests' {
}
Describe "$commandname Integration Test" -Tag "IntegrationTests" {
BeforeAll {
$server = Connect-SqlInstance -SqlInstance $script:instance1
$server = Connect-DbaInstance -SqlInstance $script:instance1
$random = Get-Random
$tableName = "dbatools_getdbtbl1"

$dbname = "dbatoolsci_getdbUsage$random"
$null = $server.Query("CREATE DATABASE $dbname")
$null = $server.Query("CREATE TABLE $tableName (id int)", $dbname)
$null = $server.Query("CREATE CLUSTERED INDEX [PK_Id] ON $tableName ([id] ASC)", $dbname)
$null = $server.Query("INSERT $tableName(id) SELECT object_id FROM sys.objects", $dbname)
$db = New-DbaDatabase -SqlInstance $script:instance1 -Name $dbname
$null = $db.Query("CREATE TABLE $tableName (id int)", $dbname)
$null = $db.Query("CREATE CLUSTERED INDEX [PK_Id] ON $tableName ([id] ASC)", $dbname)
$null = $db.Query("INSERT $tableName(id) SELECT object_id FROM sys.objects", $dbname)
}
AfterAll {
$null = Get-DbaDatabase -SqlInstance $script:instance1 -Database $dbname | Remove-DbaDatabase -Confirm:$false
Expand Down
12 changes: 4 additions & 8 deletions tests/Invoke-DbaDbDecryptObject.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Write-Host -Object "Running $PSCommandPath" -ForegroundColor Cyan
Describe "$CommandName Unit Tests" -Tag 'UnitTests' {
Context "Validate parameters" {
[object[]]$params = (Get-Command $CommandName).Parameters.Keys | Where-Object {$_ -notin ('whatif', 'confirm')}
[object[]]$knownParameters = 'SqlInstance','SqlCredential','Database','ObjectName','EncodingType','ExportDestination','EnableException'
[object[]]$knownParameters = 'SqlInstance', 'SqlCredential', 'Database', 'ObjectName', 'EncodingType', 'ExportDestination', '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
Expand All @@ -24,12 +24,8 @@ Describe "$CommandName Integration Tests" -Tags "UnitTests" {
# Remove the database if it exists
Remove-DbaDatabase -SqlInstance $script:instance1 -Database $dbname -Confirm:$false

# Get a server object
$server = Connect-DbaInstance -SqlInstance $script:instance1

# Create the database
$server = Connect-DbaInstance -SqlInstance $script:instance1
$server.Query("CREATE DATABASE $dbname;")
$db = New-DbaDatabase -SqlInstance $script:instance1 -Name $dbname

# Setup the code for the encrypted function
$queryFunction = "
Expand Down Expand Up @@ -57,7 +53,7 @@ BEGIN
END
"
# Create the encrypted function
$server.Databases[$dbname].Query($queryFunction)
$db.Query($queryFunction)

# Setup the query for the encrypted stored procedure
$queryStoredProcedure = "
Expand All @@ -80,7 +76,7 @@ END
"

# Create the encrypted stored procedure
$server.Databases[$dbname].Query($queryStoredProcedure)
$db.Query($queryStoredProcedure)

# Check if DAC is enabled
$config = Get-DbaSpConfigure -SqlInstance $script:instance1 -ConfigName RemoteDacConnectionsEnabled
Expand Down
6 changes: 2 additions & 4 deletions tests/New-DbaDacProfile.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Write-Host -Object "Running $PSCommandPath" -ForegroundColor Cyan
Describe "$CommandName Unit Tests" -Tag 'UnitTests' {
Context "Validate parameters" {
[object[]]$params = (Get-Command $CommandName).Parameters.Keys | Where-Object {$_ -notin ('whatif', 'confirm')}
[object[]]$knownParameters = 'SqlInstance','SqlCredential','Database','Path','ConnectionString','PublishOptions','EnableException'
[object[]]$knownParameters = 'SqlInstance', 'SqlCredential', 'Database', 'Path', 'ConnectionString', 'PublishOptions', '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
Expand All @@ -16,9 +16,7 @@ Describe "$CommandName Unit Tests" -Tag 'UnitTests' {
Describe "$CommandName Integration Tests" -Tags "IntegrationTests" {
BeforeAll {
$dbname = "dbatoolsci_publishprofile"
$server = Connect-DbaInstance -SqlInstance $script:instance1
$null = $server.Query("Create Database [$dbname]")
$db = Get-DbaDatabase -SqlInstance $script:instance1 -Database $dbname
$db = New-DbaDatabase -SqlInstance $script:instance1 -Name $dbname
$null = $db.Query("CREATE TABLE dbo.example (id int);
INSERT dbo.example
SELECT top 100 1
Expand Down
18 changes: 9 additions & 9 deletions tests/New-DbaDbMaskingConfig.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,29 @@ Describe "$CommandName Unit Tests" -Tag 'UnitTests' {

Describe "$CommandName Integration Tests" -Tag "IntegrationTests" {
BeforeAll {
$db = "dbatoolsci_maskconfig"
$dbname = "dbatoolsci_maskconfig"
$sql = "CREATE TABLE [dbo].[people](
[fname] [varchar](50) NULL,
[lname] [varchar](50) NULL,
[dob] [datetime] NULL
) ON [PRIMARY]
GO
INSERT INTO people (fname, lname, dob) VALUES ('Joe','Schmoe','2/2/2000')
) ON [PRIMARY]"
$db = New-DbaDatabase -SqlInstance $script:instance1 -Name $dbname
$db.Query($sql)
$sql = "INSERT INTO people (fname, lname, dob) VALUES ('Joe','Schmoe','2/2/2000')
INSERT INTO people (fname, lname, dob) VALUES ('Jane','Schmee','2/2/1950')"
New-DbaDatabase -SqlInstance $script:instance1 -Name $db
Invoke-DbaQuery -SqlInstance $script:instance1 -Query $sql -Database $db
$db.Query($sql)
}
AfterAll {
Remove-DbaDatabase -SqlInstance $script:instance1 -Database $db -Confirm:$false
Remove-DbaDatabase -SqlInstance $script:instance1 -Database $dbname -Confirm:$false
$results | Remove-Item -Confirm:$false -ErrorAction Ignore
}

Context "Command works" {

It "Should output a file with specific content" {
$results = New-DbaDbMaskingConfig -SqlInstance $script:instance1 -Database $db -Path C:\temp
$results = New-DbaDbMaskingConfig -SqlInstance $script:instance1 -Database $dbname -Path C:\temp
$results.Directory.Name | Should -Be temp
$results.FullName | Should -FileContentMatch $db
$results.FullName | Should -FileContentMatch $dbname
$results.FullName | Should -FileContentMatch fname
}
}
Expand Down
43 changes: 20 additions & 23 deletions tests/Stop-DbaXESession.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Write-Host -Object "Running $PSCommandPath" -ForegroundColor Cyan
Describe "$CommandName Unit Tests" -Tag 'UnitTests' {
Context "Validate parameters" {
[object[]]$params = (Get-Command $CommandName).Parameters.Keys | Where-Object {$_ -notin ('whatif', 'confirm')}
[object[]]$knownParameters = 'SqlInstance','SqlCredential','Session','AllSessions','InputObject','EnableException'
[object[]]$knownParameters = 'SqlInstance', 'SqlCredential', 'Session', 'AllSessions', '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
Expand All @@ -16,20 +16,17 @@ Describe "$CommandName Unit Tests" -Tag 'UnitTests' {
Describe "$CommandName Integration Tests" -Tags "IntegrationTests" {
BeforeAll {
$server = Connect-DbaInstance -SqlInstance $script:instance2
$conn = $server.ConnectionContext
# Get the systemhealth session
$systemhealth = Get-DbaXESession -SqlInstance $server -Session system_health
# Create a valid session and start it
$conn.ExecuteNonQuery("CREATE EVENT SESSION [dbatoolsci_session_valid] ON SERVER ADD EVENT sqlserver.lock_acquired;")
$dbatoolsciValid = Get-DbaXESession -SqlInstance $server -Session dbatoolsci_session_valid
$server.Query("CREATE EVENT SESSION [dbatoolsci_session_valid] ON SERVER ADD EVENT sqlserver.lock_acquired;")
$dbatoolsciValid = Get-DbaXESession -SqlInstance $script:instance2 -Session dbatoolsci_session_valid
$dbatoolsciValid.Start()
# Record the Status of all sessions
$allSessions = Get-DbaXESession -SqlInstance $server
$allSessions = Get-DbaXESession -SqlInstance $script:instance2
}
BeforeEach {
$systemhealth.Refresh()
if (-Not $systemhealth.IsRunning) {
$systemhealth.Start()
$dbatoolsciValid.Refresh()
if (-Not $dbatoolsciValid.IsRunning) {
$dbatoolsciValid.Start()
}
}
AfterAll {
Expand All @@ -38,40 +35,40 @@ Describe "$CommandName Integration Tests" -Tags "IntegrationTests" {
$session.Refresh()
if ($session.Status -eq "Stopped") {
if ($session.IsRunning) {
$session.Stop()
$session | Stop-DbaXESession
}
} else {
if (-Not $session.IsRunning) {
$session.Start()
$session | Start-DbaXESession
}
}
}

# Drop created objects
$conn.ExecuteNonQuery("IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name = 'dbatoolsci_session_valid') DROP EVENT SESSION [dbatoolsci_session_valid] ON SERVER;")
$server = Connect-DbaInstance -SqlInstance $script:instance2
$server.Query("IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name = 'dbatoolsci_session_valid') DROP EVENT SESSION [dbatoolsci_session_valid] ON SERVER;")
}

Context "Verifying command works" {
$server = Connect-DbaInstance -SqlInstance $script:instance2
It "stops the system_health session" {
$systemhealth | Stop-DbaXESession
$systemhealth.Refresh()
$systemhealth.IsRunning | Should Be $false
$dbatoolsciValid | Stop-DbaXESession
$dbatoolsciValid.Refresh()
$dbatoolsciValid.IsRunning | Should Be $false
}

It "does not change state if XE session is already stopped" {
if ($systemhealth.IsRunning) {
$systemhealth.Stop()
if ($dbatoolsciValid.IsRunning) {
$dbatoolsciValid.Stop()
}
Stop-DbaXESession $server -Session $systemhealth.Name -WarningAction SilentlyContinue
$systemhealth.Refresh()
$systemhealth.IsRunning | Should Be $false
Stop-DbaXESession -SqlInstance $server -Session $dbatoolsciValid.Name -WarningAction SilentlyContinue
$dbatoolsciValid.Refresh()
$dbatoolsciValid.IsRunning | Should Be $false
}

It "stops all XE Sessions except the system ones if -AllSessions is used" {
Stop-DbaXESession $server -AllSessions -WarningAction SilentlyContinue
$systemhealth.Refresh()
$dbatoolsciValid.Refresh()
$systemhealth.IsRunning | Should Be $true
$dbatoolsciValid.IsRunning | Should Be $false
}
}
Expand Down
3 changes: 2 additions & 1 deletion tests/pester.groups.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ $TestsRunGroups = @{
'Test-DbaAgentJobOwner',
'Resume-DbaAgDbDataMovement',
'Get-DbaDbMasterKey',
'Test-DbaAgentJobOwner'
'Test-DbaAgentJobOwner',
'Stop-DbaXESession'
)
# do not run everywhere
"disabled" = @()
Expand Down