forked from dataplat/dbatools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Export-SqlUser.Tests.ps1
85 lines (71 loc) · 3.15 KB
/
Export-SqlUser.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
83
84
85
## This is a template file for the ScriptAnalyser tests for each command.
## It Should be named $CommandName.Tests.ps1 the capital T is important as is the . !!
## The help will be analysed via the inModuleHelp.Tests.ps1 file so you dont need to worry about that.
## Add you own functional tests to the end of this file
## When you are coding up your storm you can run all the tests using Invoke-Pester .\Tests from the root of the repo
## and then code to fix the tests
## or if you pass all the other tests and just want to work with this Tests file then you can use
## Invoke-Pester .\Tests\COMMANDNAMe.Tests.ps1
## If you want to understand what the failed Script Analyser test means
## Run Invoke-ScriptAnalyser .\functions\COMMANDNAME.ps1
#Thank you Warren http://ramblingcookiemonster.github.io/Testing-DSC-with-Pester-and-AppVeyor/
if(-not $PSScriptRoot)
{
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
}
$Verbose = @{}
if($env:APPVEYOR_REPO_BRANCH -and $env:APPVEYOR_REPO_BRANCH -notlike "master")
{
$Verbose.add("Verbose",$True)
}
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace('.Tests.', '.')
Import-Module $PSScriptRoot\..\functions\$sut -Force
Import-Module PSScriptAnalyzer
## Added PSAvoidUsingPlainTextForPassword as credential is an object and therefore fails.
## We can ignore any rules here under special circumstances agreed by admins :-)
## We expect some context using comments about the reason for ignoring a rule
$Rules = (Get-ScriptAnalyzerRule).Where{$_.RuleName -notin ('PSAvoidUsingPlainTextForPassword') }
$Name = $sut.Split('.')[0]
Describe 'Script Analyzer Tests' -Tag @('ScriptAnalyzer'){
Context "Testing $Name for Standard Processing" {
foreach ($rule in $rules) {
$i = $rules.IndexOf($rule)
It "passes the PSScriptAnalyzer Rule number $i - $rule " {
(Invoke-ScriptAnalyzer -Path "$PSScriptRoot\..\functions\$sut" -IncludeRule $rule.RuleName ).Count | Should Be 0
}
}
}
}
## Load the command
$ModuleBase = Split-Path -Parent $MyInvocation.MyCommand.Path
# For tests in .\Tests subdirectory
if ((Split-Path $ModuleBase -Leaf) -eq 'Tests')
{
$ModuleBase = Split-Path $ModuleBase -Parent
}
# Handles modules in version directories
$leaf = Split-Path $ModuleBase -Leaf
$parent = Split-Path $ModuleBase -Parent
$parsedVersion = $null
if ([System.Version]::TryParse($leaf, [ref]$parsedVersion))
{
$ModuleName = Split-Path $parent -Leaf
}
else
{
$ModuleName = $leaf
}
# Removes all versions of the module from the session before importing
Get-Module $ModuleName | Remove-Module
# Because ModuleBase includes version number, this imports the required version
# of the module
$null = Import-Module $ModuleBase\$ModuleName.psd1 -PassThru -ErrorAction Stop
Describe "$Name Tests" -Tag @('Command'){
InModuleScope 'dbatools' {
Context " There should be some functional tests here" {
It "Does a thing" {
$ActualValue | Should Be $ExpectedValue
}
}# Context
}#modulescope
}#describe