tests/Backup-DbaDatabase.Tests.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
$commandname = $MyInvocation.MyCommand.Name.Replace(".ps1","")
Write-Host -Object "Running $PSCommandpath" -ForegroundColor Cyan
. "$PSScriptRoot\constants.ps1"

Describe "$commandname Integration Tests" -Tags "IntegrationTests" {
<#
 Context "Properly restores a database on the local drive using Path" {
  $results = Backup-DbaDatabase -SqlInstance $script:instance1 -BackupDirectory C:\temp\backups
  It "Should return a database name, specifically master" {
   ($results.DatabaseName -contains 'master') | Should Be $true
  }
  It "Should return successful restore" {
   $results.ForEach{ $_.BackupComplete | Should Be $true }
  }
 }
 #>

BeforeAll {
$DestBackupDir = 'C:\Temp\backups'
$random = Get-Random
$DestDbRandom = "dbatools_ci_backupdbadatabase$random"
if (-Not(Test-Path $DestBackupDir)) {
New-Item -Type Container -Path $DestBackupDir
}
Get-DbaDatabase -SqlInstance $script:instance1 -Database "dbatoolsci_singlerestore" | Remove-DbaDatabase
Get-DbaDatabase -SqlInstance $script:instance2 -Database $DestDbRandom | Remove-DbaDatabase
}
AfterAll {
Get-DbaDatabase -SqlInstance $script:instance1 -Database "dbatoolsci_singlerestore" | Remove-DbaDatabase
Get-DbaDatabase -SqlInstance $script:instance2 -Database $DestDbRandom | Remove-DbaDatabase
if (Test-Path $DestBackupDir) {
Remove-Item "$DestBackupDir\*" -Force -Recurse
}
}
Context "Should not backup if database and exclude match" {
$results = Backup-DbaDatabase -SqlInstance $script:instance1 -BackupDirectory $DestBackupDir -Database master -Exclude master
It "Should not return object" {
$results | Should Be $null
}
}

Context "Database should backup 1 database" {
$results = Backup-DbaDatabase -SqlInstance $script:instance1 -BackupDirectory $DestBackupDir -Database master
It "Database backup object count should be 1" {
$results.DatabaseName.Count | Should Be 1
$results.BackupComplete | Should Be $true
}
}

Context "Database should backup 2 databases" {
$results = Backup-DbaDatabase -SqlInstance $script:instance1 -BackupDirectory $DestBackupDir -Database master, msdb
It "Database backup object count should be 2" {
$results.DatabaseName.Count | Should Be 2
$results.BackupComplete | Should Be @($true, $true)
}
}

Context "Backup can pipe to restore" {
$null = Restore-DbaDatabase -SqlServer $script:instance1 -Path $script:appeyorlabrepo\singlerestore\singlerestore.bak -DatabaseName "dbatoolsci_singlerestore"
$results = Backup-DbaDatabase -SqlInstance $script:instance1 -BackupDirectory $DestBackupDir -Database "dbatoolsci_singlerestore" | Restore-DbaDatabase -SqlInstance $script:instance2 -DatabaseName $DestDbRandom
It "Should return successful restore" {
$results.RestoreComplete | Should Be $true
}
}
}