forked from dataplat/dbatools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCopy-DbaCredential.Tests.ps1
82 lines (70 loc) · 2.82 KB
/
Copy-DbaCredential.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
$commandname = $MyInvocation.MyCommand.Name.Replace(".ps1", "")
Write-Host -Object "Running $PSCommandpath" -ForegroundColor Cyan
. "$PSScriptRoot\constants.ps1"
try {
$connstring = "Server=ADMIN:$script:instance1;Trusted_Connection=True"
$server = New-Object Microsoft.SqlServer.Management.Smo.Server $script:instance1
$server.ConnectionContext.ConnectionString = $connstring
$server.ConnectionContext.Connect()
$server.ConnectionContext.Disconnect()
Clear-DbaSqlConnectionPool
}
catch {
Write-Warning "DAC not working this round, likely due to Appveyor resources"
return
}
# One more for the road - clearing the connection pool is important for DAC since only one is allowed
Clear-DbaSqlConnectionPool
Describe "$commandname Integration Tests" -Tags "IntegrationTests" {
Context "Create new credential" {
$credentials = $script:Instances | Get-DbaCredential
foreach ($Credential in $credentials) {
$Credential.Drop()
}
$logins = "thor", "thorsmomma"
$plaintext = "BigOlPassword!"
$password = ConvertTo-SecureString $plaintext -AsPlainText -Force
# Add user
foreach ($login in $logins) {
$null = net user $login $plaintext /add *>&1
}
It "Should create new credentials with the proper properties" {
$results = New-DbaCredential -SqlInstance $script:instance1 -Name thorcred -CredentialIdentity thor -Password $password
$results.Name | Should Be "thorcred"
$results.Identity | Should Be "thor"
$results = New-DbaCredential -SqlInstance $script:instance1 -CredentialIdentity thorsmomma -Password $password
$results.Name | Should Be "thorsmomma"
$results.Identity | Should Be "thorsmomma"
}
}
Clear-DbaSqlConnectionPool
Context "Copy Credential with the same properties." {
It "Should copy successfully" {
$results = Copy-DbaCredential -Source $script:instance1 -Destination $script:instance2 -CredentialIdentity thorcred
$results.Status | Should Be "Successful"
}
It "Should retain its same properties" {
$Credential1 = Get-DbaCredential -SqlInstance $script:instance1 -CredentialIdentity thor
$Credential2 = Get-DbaCredential -SqlInstance $script:instance2 -CredentialIdentity thor
# Compare its value
$Credential1.Name | Should Be $Credential2.Name
$Credential1.CredentialIdentity | Should Be $Credential2.CredentialIdentity
}
}
Clear-DbaSqlConnectionPool
Context "No overwrite and cleanup" {
$results = Copy-DbaCredential -Source $script:instance1 -Destination $script:instance2 -CredentialIdentity thorcred -WarningVariable warning 3>&1
It "Should not attempt overwrite" {
$warning | Should Match "exists"
}
# Finish up
$credentials = $script:Instances | Get-DbaCredential
foreach ($Credential in $credentials) {
$Credential.Drop()
}
foreach ($login in $logins) {
$null = net user $login /delete *>&1
}
}
Clear-DbaSqlConnectionPool
}