Merge pull request #42 from ZertoPublic/UpdateTests

Update Testing Methods
This commit is contained in:
Wes Carroll
2019-07-26 11:13:41 -04:00
committed by GitHub
120 changed files with 4133 additions and 2137 deletions
+3 -2
View File
@@ -1,7 +1,8 @@
*.zip *.zip
temp/* temp/*
Tests/Public/TestResults.xml BuiltTestResults.xml
Tests/TestResults.xml SourceTestResults.xml
publish/* publish/*
CodeCoverage.xml CodeCoverage.xml
scratch
+4
View File
@@ -10,3 +10,7 @@
* Fixed an [issue](https://github.com/ZertoPublic/ZertoApiWrapper/issues/36) where the Zerto Analytics Rest Request function was not checking for the token before attempting a connection. * Fixed an [issue](https://github.com/ZertoPublic/ZertoApiWrapper/issues/36) where the Zerto Analytics Rest Request function was not checking for the token before attempting a connection.
* Fixed an [issue](https://github.com/ZertoPublic/ZertoApiWrapper/issues/40) where the `Get-ZAVpg` method would return a 404 error when a `-vpgIdentifier` parameter was specified. * Fixed an [issue](https://github.com/ZertoPublic/ZertoApiWrapper/issues/40) where the `Get-ZAVpg` method would return a 404 error when a `-vpgIdentifier` parameter was specified.
### General Updates
* Updated the way that tests are invoked and parsed to ensure that both source and built module files are tested. This will ensure that what is being shipped passes all tests along with testing of the source files.
+70
View File
@@ -0,0 +1,70 @@
#Requires -Modules Pester
$global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
Describe $global:function -Tag 'Unit', 'Source', 'Built' {
InModuleScope -ModuleName ZertoApiWrapper {
Context "$global:function::Parameter Unit Tests" {
it "have a mandatory parameter for the Input Object" {
Get-Command $global:function | Should -HaveParameter InputObject -Mandatory -Type PSCustomObject
}
it "Input Object should not accecpt a Null or Empty value" {
$myObj = [PSCustomObject]@{ }
{ Get-Map -InputObject $myObj -Key "Key" -Value "Value" } | Should Throw
{ Get-Map -InputObject $null -Key "Key" -Value "Value" } | Should Throw
{ Get-Map -InputObject "" -Key "Key" -Value "Value" } | Should Throw
}
it "have a mandatory string parameter for the Map Key" {
Get-Command $global:function | Should -HaveParameter Key -Mandatory -Type String
}
it "The Map variable should not accecpt a Null or Empty value" {
$myObj = [PSCustomObject]@{one = 1; two = 2 }
{ Get-Map -InputObject $myObj -Key "" -Value "Value" } | Should Throw
{ Get-Map -InputObject $null -Key $null -Value "Value" } | Should Throw
{ Get-Map -InputObject $myObj -Key 1 -Value "Value" } | Should Throw
}
it "The Value variable should not accecpt a Null or Empty value" {
$myObj = [PSCustomObject]@{one = 1; two = 2 }
{ Get-Map -InputObject $myObj -Key "Key" -Value "" } | Should Throw
{ Get-Map -InputObject $myObj -Key "Key" -Value $null } | Should Throw
{ Get-Map -InputObject $myObj -Key "Key" -Value 1 } | Should Throw
}
it "have a mandatory string parameter for the Map Value" {
Get-Command $global:function | Should -HaveParameter Value -Mandatory -Type String
}
it "should have an Output type of Hashtable" {
(Get-Command $global:function).OutputType.Name | Should -Match "Hashtable"
}
}
Context "$global:function::Function Tests" {
$myObj = Get-Content "$global:here/Mocks/ProtectedVMs.json" | ConvertFrom-Json
BeforeEach {
$MyMap = Get-Map -InputObject $MyObj -Key "vmIdentifier" -Value "vmName"
}
it "Returned object should be a hashtable" {
$myMap | Should -BeOfType Hashtable
}
it "should return a hashtable with 3 entries" {
$myMap.count | should -Be 3
}
it "should be properly mapped" {
$myMap["vmid.12"] | Should -Be "ExchangeMailbox"
$myMap["vmid.13"] | Should -Be "ExchangeApplication"
$myMap["vmid.14"] | Should -Be "ExchangeWeb"
}
}
}
}
Remove-Variable -Name function -Scope Global
Remove-Variable -Name here -Scope Global
+61 -17
View File
@@ -1,30 +1,74 @@
$filePath = (Split-Path -Parent $MyInvocation.MyCommand.Path) -replace 'Tests', 'ZertoApiWrapper' #Requires -Modules Pester
$fileName = (Split-Path -Leaf $MyInvocation.MyCommand.Path ) -replace '.Tests.', '.' $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$file = Get-ChildItem "$filePath\$fileName" $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
. $file.FullName Describe $global:function -Tag 'Unit', 'Source', 'Built' {
$singleBoolItemTest = @{"BoolItem" = $True}
$oneItemTest = @{"OneItem" = "Test"}
$twoItemTest = @{"OneItem" = "Test"; "SecondItem" = "Yours"}
$boolItemTest = @{"OneItem" = "Test"; "BoolItem" = $true}
Describe $file.BaseName -Tag Unit { InModuleScope -ModuleName ZertoApiWrapper {
it "file should exist" { Context "$global:function::Parameter Unit Tests" {
$file.Fullname | should exist It "has a mandatory hashtable parameter for the filterTable" {
Get-Command $global:function | Should -HaveParameter filterTable -Mandatory -Type Hashtable
} }
It "is valid Powershell (Has no script errors)" { It "FilterTable should not accecpt a Null or Empty parameter" {
$contents = Get-Content -Path $file.Fullname -ErrorAction Stop { Get-ZertoApiFilter -filtertable (@{ }) } | Should Throw
$errors = $null { Get-ZertoApiFilter -filtertable "" } | Should Throw
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) { Get-ZertoApiFilter -filtertable $null } | Should Throw
$errors | Should -HaveCount 0 }
it "should have an Output type of String" {
(Get-Command $global:function).OutputType.Name | Should -Match "String"
}
}
Context "$global:function::Function Unit Tests" {
BeforeAll {
$singleBoolItemTest = @{"BoolItem" = $True }
$oneItemTest = @{ OneItem = "Test" }
$twoItemTest = @{
OneItem = "Test"
SecondItem = "Yours"
}
$commonParamTest = @{
Debug = $True
ErrorAction = "Stop"
ErrorVariable = "ErrVar"
InformationAction = "Continue"
InformationVariable = "InfoVar"
OutVariable = "OutVar"
OutBuffer = "OutBuff"
PipelineVariable = "PipeVar"
Verbose = $false
WarningAction = "SilentlyContinue"
WarningVariable = "WarnVar"
WhatIf = $True
Confirm = $false
OneItem = "Test"
}
} }
it "converts bool to text" { it "converts bool to text" {
Get-ZertoApiFilter -filtertable $singleBoolItemTest | should -Be "?BoolItem=True" Get-ZertoApiFilter -filtertable $singleBoolItemTest | should -Be "?BoolItem=True"
} }
it "one item test" { it "one item test" {
Get-ZertoApiFilter -filtertable $oneItemTest | should be "?OneItem=Test" Get-ZertoApiFilter -filtertable $oneItemTest | should be "?OneItem=Test"
} }
#TODO:: Figure out multi-item tests
it "should ignore CommonParameters" {
Get-ZertoApiFilter -filtertable $commonParamTest | should be "?OneItem=Test"
} }
it "should process a filter table with more than one item" {
$returnString = Get-ZertoApiFilter -filtertable $twoItemTest
$returnString | Should -match "^\?"
$returnString | Should -match "&"
$returnString | Should -match "OneItem=Test"
$returnString | Should -match "SecondItem=Yours"
}
}
}
}
Remove-Variable -Name function -Scope Global
Remove-Variable -Name here -Scope Global
+91 -12
View File
@@ -1,17 +1,96 @@
$filePath = (Split-Path -Parent $MyInvocation.MyCommand.Path) -replace 'Tests', 'ZertoApiWrapper' #Requires -Modules Pester
$fileName = (Split-Path -Leaf $MyInvocation.MyCommand.Path ) -replace '.Tests.', '.' $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$file = Get-ChildItem "$filePath\$fileName" $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
. $file.FullName
Describe $file.BaseName -Tag Unit { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
it "file should exist" {
$file.FullName | should exist InModuleScope -ModuleName ZertoApiWrapper {
Context "$global:function::Parameter Unit Tests" {
$testCases = @(
@{ParameterName = 'uri'; Type = 'String'; Mandatory = $true; TestName = 'URI' }
@{ParameterName = 'method'; Type = 'String'; Mandatory = $false; TestName = 'Method' }
@{ParameterName = 'body'; Type = 'String'; Mandatory = $false; TestName = 'Body' }
@{ParameterName = 'contentType'; Type = 'String'; Mandatory = $false; TestName = 'contentType' }
)
It "Parameter present and Type test for: <TestName> " -TestCases $testCases {
param($parameterName, $type, $Mandatory)
Get-Command $global:function | Should -HaveParameter $parameterName -Type $type
if ($Mandatory) {
Get-Command $global:function | Should -HaveParameter $parameterName -Mandatory
} else {
Get-Command $global:function | Should -HaveParameter $parameterName -Not -Mandatory
}
} }
It "is valid Powershell (Has no script errors)" { It "Method parameter default is 'GET'" {
$contents = Get-Content -Path $file.FullName -ErrorAction Stop Get-Command $global:function | Should -HaveParameter Method -DefaultValue "GET"
$errors = $null }
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0 It "ContentType parameter default is 'application/json'" {
Get-Command $global:function | Should -HaveParameter contentType -DefaultValue "application/json"
}
$NotNullOrEmptyTests = @(
@{ParameterName = 'uri'; TestName = 'Uri' }
@{ParameterName = 'body'; TestName = 'Body' }
@{ParameterName = 'contentType'; TestName = 'ContentType' }
)
It "<TestName> parameter does not accecpt a null or empty value" -TestCases $NotNullOrEmptyTests {
param($parameterName)
$parameterInfo = ( Get-Command Invoke-ZARestRequest ).Parameters[$parameterName]
$parameterInfo.Attributes.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
It "method parametert only accecpts 'GET' 'DELETE' 'PUT' 'POST' values" {
$parameterInfo = ( Get-Command Invoke-ZARestRequest ).Parameters['method']
$parameterInfo.Attributes.Where{ $_ -is [ValidateSet] }.Count | Should -Be 1
$validateSet = $parameterInfo.Attributes.Where{ $_ -is [ValidateSet] }
$validateSet.ValidValues -contains 'GET' | Should -BeTrue
$validateSet.ValidValues -contains 'PUT' | Should -BeTrue
$validateSet.ValidValues -contains 'POST' | Should -BeTrue
$validateSet.ValidValues -contains 'DELETE' | Should -BeTrue
$validateSet.ValidValues.Count | Should -Be 4
} }
} }
Context "$global:function::Function Unit Tests" {
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-RestMethod {
"Ran Command"
}
BeforeEach {
Set-Variable -Name zaHeaders -Scope Script -Value (@{ "Accept" = "application/json" })
Set-Variable -Name zaLastActionTime -Scope Script -Value $(Get-Date).Ticks
}
It "runs when called" {
Invoke-ZARestRequest -uri "myuri" | Should Be "Ran Command"
}
It "throws when the last action was over 60 minutes ago" {
$script:zaLastActionTime = (Get-Date).AddMinutes(-61).Ticks
{ Invoke-ZARestRequest -uri "myuri" } | Should Throw "Authorization Token has Expired."
}
It "throws when the zaHeaders variable does not exits" {
Remove-Variable -Name zaHeaders -Scope Script
{ Invoke-ZARestRequest -uri "myuri" } | Should Throw "Zerto Analytics Connection does not Exist."
}
It "throws when the zaLastActionTime variable does not exist" {
Remove-Variable -Name zaLastActionTime -Scope Script
{ Invoke-ZARestRequest -uri "myuri" } | Should Throw "Zerto Analytics Connection does not Exist."
}
Assert-MockCalled -CommandName Invoke-RestMethod -ModuleName ZertoApiWrapper -Exactly 1
}
}
}
Remove-Variable -Name function -Scope Global
Remove-Variable -Name here -Scope Global
+88 -12
View File
@@ -1,17 +1,93 @@
$filePath = (Split-Path -Parent $MyInvocation.MyCommand.Path) -replace 'Tests', 'ZertoApiWrapper' #Requires -Modules Pester
$fileName = (Split-Path -Leaf $MyInvocation.MyCommand.Path ) -replace '.Tests.', '.' $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$file = Get-ChildItem "$filePath\$fileName" $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
. $file.FullName
Describe $file.BaseName -Tag Unit { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
it "file should exist" {
$file.FullName | should exist InModuleScope -ModuleName ZertoApiWrapper {
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-RestMethod {
"Ran Command"
} }
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file.FullName -ErrorAction Stop $thisCommand = Get-Command Invoke-ZertoRestRequest
$errors = $null $ParameterNameTestCases = @(
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) @{ParameterName = "uri"; Type = "String"; Mandatory = $true; DefaultValue = $null; TestName = "URI" }
$errors | Should -HaveCount 0 @{ParameterName = "method"; Type = "String"; Mandatory = $false; DefaultValue = 'GET'; TestName = "Method" }
@{ParameterName = "apiVersion"; Type = "String"; Mandatory = $false; DefaultValue = 'v1'; TestName = "API Version" }
@{ParameterName = "body"; Type = "String"; Mandatory = $false; DefaultValue = $null; TestName = "Body" }
@{ParameterName = "contentType"; Type = "String"; Mandatory = $false; DefaultValue = 'application/json'; TestName = "Content Type" }
@{ParameterName = "credential"; Type = "PSCredential"; Mandatory = $false; DefaultValue = $null; TestName = "Credential" }
@{ParameterName = "returnHeaders"; Type = "Switch"; Mandatory = $false; DefaultValue = $null; TestName = "Return Headers" }
)
It "<TestName> parameter has the right Type, Default Value, and Mandatory Setting" -TestCases $ParameterNameTestCases {
param($ParameterName, $Type, $DefaultValue, $Mandatory)
if ($Mandatory) {
$thisCommand | Should -HaveParameter $ParameterName -Type $Type -Mandatory
} else {
$thisCommand | Should -HaveParameter $ParameterName -Type $Type
$thisCommand | Should -HaveParameter $ParameterName -Not -Mandatory
}
if ($null -ne $DefaultValue) {
$thisCommand | Should -HaveParameter $ParameterName -DefaultValue $DefaultValue
} }
} }
$ParameterValidationTestCases = @(
@{ParameterName = "URI"; TestName = "URI" }
@{ParameterName = "apiVersion"; TestName = "Api Version" }
@{ParameterName = "body"; TestName = "Body" }
@{ParameterName = "contentType"; TestName = "Content Type" }
)
It "<TestName> parameter cannot be null or empty" -TestCases $ParameterValidationTestCases {
param($ParameterName)
$thisParameter = $thisCommand.Parameters[$ParameterName]
$thisParameter.Attributes.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should Be 1
}
It "Method parameter can only be 'GET', 'POST', 'PUT', 'DELETE'" {
$thisParameter = $thisCommand.Parameters['method']
$thisParameter.Attributes.Where{ $_ -is [ValidateSet] }.Count | Should Be 1
$thisParameter.Attributes.Where{ $_ -is [ValidateSet] }.validValues -contains 'GET' | Should -BeTrue
$thisParameter.Attributes.Where{ $_ -is [ValidateSet] }.validValues -contains 'PUT' | Should -BeTrue
$thisParameter.Attributes.Where{ $_ -is [ValidateSet] }.validValues -contains 'POST' | Should -BeTrue
$thisParameter.Attributes.Where{ $_ -is [ValidateSet] }.validValues -contains 'DELETE' | Should -BeTrue
$thisParameter.Attributes.Where{ $_ -is [ValidateSet] }.validValues.Count | Should -Be 4
}
}
Context "$global:function::Function Unit Tests" {
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-RestMethod {
"Ran Command"
}
BeforeEach {
Set-Variable -Name zvmHeaders -Scope Script -Value (@{ "Accept" = "application/json" })
Set-Variable -Name zvmLastAction -Scope Script -Value $(Get-Date).Ticks
Set-Variable -Name zvmServer -Scope Script -Value "192.168.1.100"
Set-Variable -Name zvmPort -Scope Script -Value 9669
}
It "runs when called" {
Invoke-ZertoRestRequest -uri "MyUri" | Should -Be "Ran Command"
}
It "throws an error when zvmLastAction was more than 30 minutes ago" {
Set-Variable -Name zvmLastAction -Scope Script -Value $(Get-Date).AddMinutes(-31).Ticks
{ Invoke-ZertoRestRequest -uri "MyUri" } | Should Throw "Authorization Token has Expired"
}
It "throws an error when the zvmServer variable does not exist" {
Remove-Variable -Name zvmServer -Scope Script
{ Invoke-ZertoRestRequest -uri "MyUri" } | Should Throw "Zerto Connection does not Exist."
}
Assert-MockCalled -CommandName Invoke-RestMethod -ModuleName ZertoApiWrapper -Exactly 1
}
}
}
Remove-Variable -Name function -Scope Global
Remove-Variable -Name here -Scope Global
+15
View File
@@ -0,0 +1,15 @@
[
{
"VMname": "ExchangeMailbox",
"VMIdentifier": "vmid.12"
},
{
"VMName": "ExchangeApplication",
"VmIdentifier": "vmid.13"
},
{
"VMName": "ExchangeWeb",
"VmIdentifier": "vmid.14"
}
]
+41 -46
View File
@@ -1,45 +1,35 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
BeforeAll {
It "Is valid Powershell (Has no script errors)" { $script:ScriptBlock = (Get-Command $global:function).ScriptBlock
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
Context "$($file.BaseName)::Parameter Unit Tests" { Context "$global:function::Parameter Unit Tests" {
it "Has a mandatory string parameter for the target host" { It "Has a mandatory string parameter for the target host" {
Get-Command $file.BaseName | Should -HaveParameter TargetHost -Mandatory -Type String Get-Command $global:function | Should -HaveParameter TargetHost -Mandatory -Type String
} }
it "Will not take a non-ip address as a 'TargetHost'" { It "Will not take a non-ip address as a 'TargetHost'" {
{Add-ZertoPeerSite -targetHost 'MyZVMHost' -targetPort '9081'} | should -Throw { Add-ZertoPeerSite -targetHost 'MyZVMHost' -targetPort '9081' } | Should -Throw
{Add-ZertoPeerSite -targetHost '192.168.1.266' -targetPort '9081'} | should -Throw { Add-ZertoPeerSite -targetHost '192.168.1.266' -targetPort '9081' } | Should -Throw
{Add-ZertoPeerSite -targetHost '192.168.1' -targetPort '9081'} | should -Throw { Add-ZertoPeerSite -targetHost '192.168.1' -targetPort '9081' } | Should -Throw
{Add-ZertoPeerSite -targetHost $null -targetPort '9081'} | should -Throw { Add-ZertoPeerSite -targetHost $null -targetPort '9081' } | Should -Throw
} }
it "Has a non-mandatory string parameter for the target port with default value of 9081" { It "Has a non-mandatory string parameter for the target port with default value of 9081" {
Get-Command $file.BaseName | Should -HaveParameter TargetPort -Not -Mandatory Get-Command Add-ZertoPeerSite | Should -HaveParameter TargetPort -Not -Mandatory
Get-Command $file.BaseName | Should -HaveParameter TargetPort -Type Int32 Get-Command Add-ZertoPeerSite | Should -HaveParameter TargetPort -Type Int32
Get-Command $file.BaseName | Should -HaveParameter TargetPort -DefaultValue 9081 Get-Command Add-ZertoPeerSite | Should -HaveParameter TargetPort -DefaultValue 9081
} }
it "Will not take a non-int as a port" { It "Will not take a non-int as a port" {
{Add-ZertoPeerSite -targetHost '192.168.1.100' -targetPort 'string'} | should -Throw { Add-ZertoPeerSite -targetHost '192.168.1.100' -targetPort 'string' } | Should -Throw
{Add-ZertoPeerSite -targetHost '192.168.1.100' -targetPort $true} | should -Throw { Add-ZertoPeerSite -targetHost '192.168.1.100' -targetPort $true } | Should -Throw
{Add-ZertoPeerSite -targetHost '192.168.1.100' -targetPort $null} | should -Throw { Add-ZertoPeerSite -targetHost '192.168.1.100' -targetPort $null } | Should -Throw
} }
It "Will fail if the specified port is outside of the range 1024 - 65535" { It "Will fail if the specified port is outside of the range 1024 - 65535" {
@@ -49,28 +39,33 @@ Describe $file.BaseName -Tag 'Unit' {
{ Add-ZertoPeerSite -targetHost '192.168.1.100' -targetPort -1 } | Should -Throw { Add-ZertoPeerSite -targetHost '192.168.1.100' -targetPort -1 } | Should -Throw
} }
it "Supports 'SupportsShouldProcess'" { It "Supports 'SupportsShouldProcess'" {
Get-Command $file.BaseName | Should -HaveParameter WhatIf Get-Command $global:function | Should -HaveParameter WhatIf
Get-Command $file.BaseName | Should -HaveParameter Confirm Get-Command $global:function | Should -HaveParameter Confirm
$file | Should -FileContentMatch 'SupportsShouldProcess' $script:ScriptBlock | Should -match 'SupportsShouldProcess'
$file | Should -FileContentMatch '\$PSCmdlet\.ShouldProcess\(.+\)' $script:ScriptBlock | Should -match '\$PSCmdlet\.ShouldProcess\(.+\)'
} }
} }
Context "$($file.BaseName)::Function Unit Tests" { Context "Add-ZertoPeerSite::Functional Unit Tests" {
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest {
Mock -ModuleName ZertoApiWrapper Invoke-ZertoRestRequest { return (Get-Content "$global:here\Mocks\TaskId.txt")
return "9a49f42e-2bbd-4bf8-b571-77908a2e5e98.928a122b-1763-4664-ad37-cc00bb883f2f"
} }
it "Returns a string value" { It "Returns a string value" {
$results = Add-ZertoPeerSite -targetHost '192.168.1.100' -targetPort '9081' $results = Add-ZertoPeerSite -targetHost '192.168.1.100' -targetPort '9081'
$results | should -Not -BeNullOrEmpty $results | Should -Not -BeNullOrEmpty
$results | should -BeOfType "String" $results | Should -BeOfType "String"
$results | Should -BeExactly "9a49f42e-2bbd-4bf8-b571-77908a2e5e98.928a122b-1763-4664-ad37-cc00bb883f2f" $results | Should -BeExactly "7e79035e-fb8c-47fe-815c-12ddd41708e6.3e4cdd0d-1064-4022-921f-6265ad6d335a"
} }
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest It "Does not return a taskId if '-whatif' is used" {
} $results = Add-ZertoPeerSite -targetHost '192.168.1.100' -targetPort '9081' -WhatIf
$results | Should -BeNullOrEmpty
} }
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -Exactly 1
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+34 -37
View File
@@ -1,66 +1,63 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
BeforeAll {
It "is valid Powershell (Has no script errors)" { $script:ScriptBlock = (Get-Command $global:function).ScriptBlock
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest { Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest {
return "3b687246-ac63-40da-9a59-b99863769eb0.928a122b-1763-4664-ad37-cc00bb883f2f" return (Get-Content "$global:here\Mocks\TaskId.txt")
} }
Mock -ModuleName ZertoApiWrapper -CommandName get-zertovpg { Mock -ModuleName ZertoApiWrapper -CommandName get-zertovpg -ParameterFilter { $VpgName -eq "MyVpg" } {
return @{vpgIdentifier = "dddf2fa8-79e2-4e4f-a83b-f66676afea64"} return (Get-Content "$global:here\Mocks\VPGInfo.json" -Raw | ConvertFrom-Json)
} }
Context "$($file.BaseName)::Parameter Unit Tests" { Context "$($global:function)::Parameter Unit Tests" {
it "Has a parameter for the VpgName that is Mandatory" { It "Has a parameter for the VpgName that is Mandatory" {
Get-Command $file.BaseName | Should -HaveParameter vpgName -Mandatory -Type String Get-Command $global:function | Should -HaveParameter vpgName -Mandatory -Type String
} }
it "Has a parameter for the CheckpointName that is Mandatory" { It "Has a parameter for the CheckpointName that is Mandatory" {
Get-Command $file.BaseName | Should -HaveParameter CheckpointName -Mandatory -Type String Get-Command $global:function | Should -HaveParameter CheckpointName -Mandatory -Type String
} }
it "Throws and error when an empty or null checkpointName is specified" { It "Throws and error when an empty or null checkpointName is specified" {
{ Checkpoint-ZertoVpg -vpgName "MyVpg" -checkpointName "" } | Should -Throw { Checkpoint-ZertoVpg -vpgName "MyVpg" -checkpointName "" } | Should -Throw
{ Checkpoint-ZertoVpg -vpgName "MyVpg" -checkpointName $null } | Should -Throw { Checkpoint-ZertoVpg -vpgName "MyVpg" -checkpointName $null } | Should -Throw
} }
it "Throws an error when an empty or null vpgName is specified" { It "Throws an error when an empty or null vpgName is specified" {
{ Checkpoint-ZertoVpg -vpgName "" -checkpointName "MyCheckPoint" } | Should -Throw { Checkpoint-ZertoVpg -vpgName "" -checkpointName "MyCheckPoint" } | Should -Throw
{ Checkpoint-ZertoVpg -vpgName $null -checkpointName "MyCheckPoint" } | Should -Throw { Checkpoint-ZertoVpg -vpgName $null -checkpointName "MyCheckPoint" } | Should -Throw
} }
it "Does not support 'SupportsShouldProcess'" { It "Does not support 'SupportsShouldProcess'" {
Get-Command $file.BaseName | Should -Not -HaveParameter WhatIf Get-Command $global:function | Should -Not -HaveParameter WhatIf
Get-Command $file.BaseName | Should -Not -HaveParameter Confirm Get-Command $global:function | Should -Not -HaveParameter Confirm
$file | Should -Not -FileContentMatch 'SupportsShouldProcess' $script:ScriptBlock | Should -not -match 'SupportsShouldProcess'
$file | Should -Not -FileContentMatch '\$PSCmdlet\.ShouldProcess\(.+\)' $script:ScriptBlock | Should -not -match '\$PSCmdlet\.ShouldProcess\(.+\)'
} }
} }
Context "$($file.BaseName)::Function Unit Tests" { Context "$($global:function)::Function Unit Tests" {
it "should return a not null or empty string" { It "should return a not null or empty string" {
$results = Checkpoint-ZertoVpg -vpgName "MyVpg" -checkpointName "My Checkpoint Name" $results = Checkpoint-ZertoVpg -vpgName "MyVpg" -checkpointName "My Checkpoint Name"
$results | should -not -BeNullOrEmpty $results | Should -not -BeNullOrEmpty
$results | should -BeOfType "String" $results | Should -BeOfType "String"
$results | should -BeExactly "3b687246-ac63-40da-9a59-b99863769eb0.928a122b-1763-4664-ad37-cc00bb883f2f" $results | Should -BeExactly "7e79035e-fb8c-47fe-815c-12ddd41708e6.3e4cdd0d-1064-4022-921f-6265ad6d335a"
}
It "does not return anything when a invalid VPG is defined" {
$results = Checkpoint-ZertoVpg -vpgName "DoesNotExist" -checkpointName "My Checkpoint Name"
$results | Should -Be "Cannot find VPG named DoesNotExist. Please check the name and try again."
} }
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -Exactly 2
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Get-ZertoVpg Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Get-ZertoVpg -Exactly 1
} }
} }
Remove-Variable -Name function -Scope Global
Remove-Variable -Name here -Scope Global
+70 -14
View File
@@ -1,19 +1,75 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
BeforeAll {
$script:ScriptBlock = (Get-Command $global:function).ScriptBlock
}
It "is valid Powershell (Has no script errors)" { Context "$($global:function)::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "Has a parameter for the Required Credentials that is Mandatory" {
$errors = $null Get-Command $global:function | Should -HaveParameter credential -Mandatory -Type PSCredential
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Context "$($global:function)::Function Unit Tests" {
InModuleScope -ModuleName ZertoApiWrapper {
Mock -CommandName Invoke-ZARestRequest {
return (Get-Content "$global:here\Mocks\ZAToken.json"-Raw | ConvertFrom-Json)
}
$password = 'NotARealPassword' | ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object pscredential('NotARealUser', $password)
$results = Connect-ZertoAnalytics -credential $cred
It "Creates a Script Level Hashtable Variable for the ZertoAnalytics Headers" {
$script:zaHeaders | Should -BeOfType Hashtable
}
It "the ZertoAnalytics Headers variable contains 2 items" {
$script:zaHeaders.keys | Should -HaveCount 2
}
It "the ZertoAnalytics Headers variable has an 'Accept' key" {
$script:zaHeaders.keys | Should -Contain 'Accept'
}
It "thh ZertoAnalytics headers variable 'Accept' key should be JSON" {
$script:zaHeaders['Accept'] | Should -match 'application/json'
}
It "the ZertoAnalytics Headers variable has an 'Authorization' key" {
$script:zaHeaders.keys | Should -Contain 'Authorization'
}
It "the ZertoAnalytics Headers variable 'Authorization' key should start with 'Bearer'" {
$script:zaHeaders['Authorization'] | Should -Match '^Bearer '
}
It "Creates a Script Level Variable for the LastActionTime" {
$script:zaLastActionTime | Should -BeOfType Long
}
It "LastActionTime Variable should be in the past" {
$script:zaLastActionTime | Should -BeLessThan (Get-Date).Ticks
}
It "Returns Header Information" {
$results | Should -not -BeNullOrEmpty
$results['Authorization'] | Should -MatchExactly 'Bearer N074r34l70k3n'
$results['Accept'] | Should -Match 'application/json'
}
}
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZARestRequest -Exactly 1
}
}
Remove-Variable -Name function -Scope Global
Remove-Variable -Name here -Scope Global
+56 -116
View File
@@ -1,128 +1,94 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
$userName = "zerto\build"
$password = ConvertTo-SecureString -String "ZertoBuild" -AsPlainText -Force
$credential = New-Object -TypeName System.Management.Automation.PSCredential($userName, $password)
$Server = "192.168.1.100"
$zertoPort = "7669"
Describe $file.BaseName -Tag Unit { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
BeforeAll {
It "is valid Powershell (Has no script errors)" { $script:ScriptBlock = (Get-Command $global:function).ScriptBlock
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
Context "$($file.BaseName)::Parameter Unit Tests" { Context "$($global:function)::Parameter Unit Tests" {
it "server vairable has a mandatory String parameter" { It "server vairable has a mandatory String parameter" {
Get-Command $file.BaseName | Should -HaveParameter zertoserver -Mandatory -Type String Get-Command $global:function | Should -HaveParameter zertoserver -Mandatory -Type String
} }
it "server variable does not accecpt an empty or null input" { It "server variable does not accecpt an empty or null input" {
{ Connect-ZertoServer -zertoServer $null -credential $credential } | Should -Throw { Connect-ZertoServer -zertoServer $null -credential $credential } | Should -Throw
{ Connect-ZertoServer -zertoServer "" -credential $credential } | Should -Throw { Connect-ZertoServer -zertoServer "" -credential $credential } | Should -Throw
} }
it "port variable has a non-mandatory String parameter" { It "port variable has a non-mandatory String parameter" {
Get-Command $file.BaseName | Should -HaveParameter zertoPort -Not -Mandatory Get-Command $global:function | Should -HaveParameter zertoPort -Not -Mandatory
Get-Command $file.BaseName | Should -HaveParameter zertoPort -Type String Get-Command $global:function | Should -HaveParameter zertoPort -Type String
Get-Command $file.BaseName | Should -HaveParameter zertoPort -DefaultValue "9669" Get-Command $global:function | Should -HaveParameter zertoPort -DefaultValue "9669"
} }
it "port variable does not accecpt an empty or null input" { It "port variable does not accecpt an empty or null input" {
{ Connect-ZertoServer -zertoServer "192.168.1.100" -zertoPort "" -credential $credential } | Should -Throw { Connect-ZertoServer -zertoServer "192.168.1.100" -zertoPort "" -credential $credential } | Should -Throw
{ Connect-ZertoServer -zertoServer "192.168.1.100" -zertoPort $null -credential $credential } | Should -Throw { Connect-ZertoServer -zertoServer "192.168.1.100" -zertoPort $null -credential $credential } | Should -Throw
} }
it "port variable should fall between 1024 and 65535" { It "port variable should fall between 1024 and 65535" {
{ Connect-ZertoServer -zertoServer $Server -zertoPort 1023 -credential $credential } | Should -Throw { Connect-ZertoServer -zertoServer $Server -zertoPort 1023 -credential $credential } | Should -Throw
{ Connect-ZertoServer -zertoServer $Server -zertoPort 65536 -credential $credential } | Should -Throw { Connect-ZertoServer -zertoServer $Server -zertoPort 65536 -credential $credential } | Should -Throw
{ Connect-ZertoServer -zertoServer $Server -zertoPort 0 -credential $credential } | Should -Throw { Connect-ZertoServer -zertoServer $Server -zertoPort 0 -credential $credential } | Should -Throw
{ Connect-ZertoServer -zertoServer $Server -zertoPort -1 -credential $credential } | Should -Throw { Connect-ZertoServer -zertoServer $Server -zertoPort -1 -credential $credential } | Should -Throw
} }
it "has a mandatory PSCredential parameter for the credential vairable" { It "has a mandatory PSCredential parameter for the credential vairable" {
Get-Command $file.BaseName | Should -HaveParameter credential -Mandatory -Type PSCredential Get-Command $global:function | Should -HaveParameter credential -Mandatory -Type PSCredential
} }
it "should require a PSCredentialObject for the credentials" { It "should require a PSCredentialObject for the credentials" {
{ Connect-ZertoServer -zertoServer -credential "MyUsername" } | Should -Throw { Connect-ZertoServer -zertoServer -credential "MyUsername" } | Should -Throw
{ Connect-ZertoServer -zertoServer -credential 1234 } | Should -Throw { Connect-ZertoServer -zertoServer -credential 1234 } | Should -Throw
{ Connect-ZertoServer -zertoServer -credential $(@{Username = "zerto\build"; Password = 'SecureString' }) } | Should -Throw { Connect-ZertoServer -zertoServer -credential $(@{Username = "zerto\build"; Password = 'SecureString' }) } | Should -Throw
} }
} }
InModuleScope ZertoApiWrapper { InModuleScope -ModuleName ZertoApiWrapper {
Context "$($file.BaseName)::InModuleScope Function Unit Tests" {
$server = '192.168.1.100'
$userName = "zerto\build"
$password = ConvertTo-SecureString -String "ZertoBuild" -AsPlainText -Force
$credential = New-Object -TypeName System.Management.Automation.PSCredential($userName, $password)
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest { Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest {
$xZertoSession = @("7ecf544d-e7ed-4108-86f3-fb355c51cdfa") # Attempted to Mock this per the Mock Below and it blew up. Auth Headers Returns a Dictionary
# and does not index the same way when imported from a JSON file. Need addtional investigation.
$xZertoSession = @("e34da0b0-4bc2-4cda-b316-0384e35bdca5")
$Headers = @{'x-zerto-session' = $xZertoSession } $Headers = @{'x-zerto-session' = $xZertoSession }
$results = @{'Headers' = $Headers } $results = @{'Headers' = $Headers }
return $results return $results
} }
Mock -ModuleName ZertoApiWrapper -CommandName Get-ZertoLocalSite { Mock -ModuleName ZertoApiWrapper -CommandName Get-ZertoLocalSite {
$results = @{ return (Get-Content -Path "$global:here\Mocks\LocalSiteInfo.json" -Raw | ConvertFrom-Json)
BandwidthThrottlingInMBs = -1
ContactEmail = "vSphere-Site01@zerto.com"
ContactName = "vSphere-Site01@zerto.com"
ContactPhone = "066-6666666"
IpAddress = "192.168.200.1"
IsReplicationToSelfEnabled = $True
Link = @{
href = "https://192.168.24.1:7669/v1/localsite"
identifier = "928a122b-1763-4664-ad37-cc00bb883f2f"
rel = $null
type = "LocalSiteApi"
}
Location = "vSphere-Site01"
SiteName = "vSphere-Site01 at Zerto"
SiteType = "VCenter"
UtcOffsetInMinutes = -240
Version = "7.0.0"
SiteIdentifier = "928a122b-1763-4664-ad37-cc00bb883f2f"
}
return $results
} }
Context "$($global:function)::InModuleScope Function Unit Tests" {
BeforeAll {
$server = '192.168.1.100'
$password = ConvertTo-SecureString -String "NotARealPassword" -AsPlainText -Force
$credential = New-Object pscredential('NotARealUser', $password)
$now = $(Get-Date).ticks $now = $(Get-Date).ticks
Connect-ZertoServer -zertoServer $server -credential $credential Connect-ZertoServer -zertoServer $server -credential $credential
}
it "Module Scope zvmServer variable tests" { It "Module Scope zvmServer variable tests" {
$script:zvmServer | Should -Not -BeNullOrEmpty $script:zvmServer | Should -Not -BeNullOrEmpty
$script:zvmServer | Should -Be $server $script:zvmServer | Should -Be $server
} }
it "Module Scope zvmPort variable tests" { It "Module Scope zvmPort variable tests" {
$script:zvmPort | Should -Not -BeNullOrEmpty $script:zvmPort | Should -Not -BeNullOrEmpty
$script:zvmPort | Should -Be '9669' $script:zvmPort | Should -Be '9669'
} }
it "Module Scope zvmLastAction variable tests" { It "Module Scope zvmLastAction variable tests" {
$script:zvmLastAction | Should -Not -BeNullOrEmpty $script:zvmLastAction | Should -Not -BeNullOrEmpty
$script:zvmLastAction | Should -BeGreaterOrEqual $now $script:zvmLastAction | Should -BeGreaterOrEqual $now
} }
it "Module Scope zvmHeaders variable tests" { It "Module Scope zvmHeaders variable tests" {
$script:zvmHeaders | Should -Not -BeNullOrEmpty $script:zvmHeaders | Should -Not -BeNullOrEmpty
$script:zvmHeaders | Should -BeOfType Hashtable $script:zvmHeaders | Should -BeOfType PSCustomObject
$script:zvmHeaders.keys.count | Should -BeExactly 2 $script:zvmHeaders.keys.count | Should -BeExactly 2
$script:zvmHeaders.ContainsKey('x-zerto-session') | Should -BeTrue $script:zvmHeaders.ContainsKey('x-zerto-session') | Should -BeTrue
$script:zvmHeaders.ContainsKey('Accept') | Should -BeTrue $script:zvmHeaders.ContainsKey('Accept') | Should -BeTrue
@@ -130,74 +96,48 @@ Describe $file.BaseName -Tag Unit {
$script:zvmHeaders['Accept'] | Should -BeOfType String $script:zvmHeaders['Accept'] | Should -BeOfType String
} }
it "Module Scope zvmLocalInfo variable tests" { It "Module Scope zvmLocalInfo variable tests" {
$script:zvmLocalInfo | Should -Not -BeNullOrEmpty $script:zvmLocalInfo | Should -Not -BeNullOrEmpty
$script:zvmLocalInfo | Should -BeOfType Hashtable $script:zvmLocalInfo | Should -BeOfType PSCustomObject
$script:zvmLocalInfo['SiteIdentifier'] | Should -BeOfType String $script:zvmLocalInfo.SiteIdentifier | Should -BeOfType String
$script:zvmLocalInfo.ContainsKey('SiteIdentifier') | Should -BeTrue
$script:zvmLocalInfo['SiteIdentifier'] | Should -BeOfType String
} }
$headers = Connect-ZertoServer -zertoServer $Server -credential $credential -returnHeaders $headers = Connect-ZertoServer -zertoServer $Server -credential $credential -returnHeaders
it "returns a Hashtable with 2 keys" { It "returns a Hashtable with 2 keys" {
$headers | Should -BeOfType Hashtable $headers | Should -BeOfType Hashtable
$headers.keys.count | should be 2 $headers.keys.count | Should be 2
} }
it "return value has a key called 'x-zerto-session'" { It "return value has a key called 'x-zerto-session'" {
$headers.ContainsKey('x-zerto-session') | should be $true $headers.ContainsKey('x-zerto-session') | Should be $true
} }
it "return key 'x-zerto-session' value should be a string" { It "return key 'x-zerto-session' value should be a string" {
$headers['x-zerto-session'] | should -BeOfType "String" $headers['x-zerto-session'] | Should -BeOfType "String"
$headers['x-zerto-session'] | Should -BeExactly "7ecf544d-e7ed-4108-86f3-fb355c51cdfa" $headers['x-zerto-session'] | Should -BeExactly "e34da0b0-4bc2-4cda-b316-0384e35bdca5"
} }
it "return value has a key called 'accept'" { It "return value has a key called 'accept'" {
$headers.ContainsKey('accept') | should be $true $headers.ContainsKey('accept') | Should be $true
} }
it "return key 'accept' value should be 'application/json'" { It "return key 'accept' value should be 'application/json'" {
$headers['accept'] | should be 'application/json' $headers['accept'] | Should be 'application/json'
} }
it "should not require a port to be specified" { It "should not require a port to be specified" {
Connect-ZertoServer -zertoServer $Server -credential $credential Connect-ZertoServer -zertoServer $Server -credential $credential
} }
it "returns null when -ReturnHeaders is not used" { It "returns null when -ReturnHeaders is not used" {
Connect-ZertoServer -zertoServer $Server -credential $credential | Should -BeNullOrEmpty Connect-ZertoServer -zertoServer $Server -credential $credential | Should -BeNullOrEmpty
} }
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -Exactly 4
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Get-ZertoLocalSite Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Get-ZertoLocalSite -Exactly 4
} }
} }
} }
<#
Describe "Connect-ZertoServer" -Tag Integration { Remove-Variable -Name function -Scope Global
it "file should exist" { Remove-Variable -Name here -Scope Global
"$filePath\$fileName" | should exist
}
it "has a function called Connect-ZertoServer" {
get-command Connect-ZertoServer | should be $true
}
$headers = Connect-ZertoServer -zertoServer $Server -zertoPort $zertoPort -credential $credential -returnHeaders
it "returns a Hashtable with 2 keys" {
$headers.keys.count | should be 2
}
it "return value has a key called 'x-zerto-session'" {
$headers.ContainsKey('x-zerto-session') | should be $true
}
it "return key 'x-zerto-session' value should be a string" {
$headers['x-zerto-session'].gettype().name | should be "String"
}
it "return value has a key called 'accept'" {
$headers.ContainsKey('accept') | should be $true
}
it "return key 'accept' value should be 'application/json'" {
$headers['accept'] | should be 'application/json'
}
Disconnect-ZertoServer
}
#>
+27 -24
View File
@@ -1,37 +1,40 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$($global:function)::Parameter Unit Tests" {
It "Does not take any parameters" {
(Get-Command disconnect-zertoserver).parameters.count | Should -BeExactly 11
}
}
Context "$($global:function)::Function Unit Tests" {
InModuleScope -ModuleName ZertoApiWrapper {
Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest { Mock -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest {
$null # Attempted to Mock this per the Mock Below and it blew up. Auth Headers Returns a Dictionary
} # and does not index the same way when imported from a JSON file. Need addtional investigation.
Mock -ModuleName ZertoApiWrapper -CommandName Remove-Variable { $xZertoSession = @("e34da0b0-4bc2-4cda-b316-0384e35bdca5")
$Headers = @{'x-zerto-session' = $xZertoSession }
$results = @{'Headers' = $Headers }
return $results
} }
It "is valid Powershell (Has no script errors)" { Mock -ModuleName ZertoApiWrapper -CommandName Get-ZertoLocalSite {
$contents = Get-Content -Path $file -ErrorAction Stop return (Get-Content -Path "$global:here\Mocks\LocalSiteInfo.json" -Raw | ConvertFrom-Json)
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
Context "$($file.BaseName)::Parameter Unit Tests" { BeforeAll {
it "Does not take any parameters" { Connect-ZertoServer
(get-command disconnect-zertoserver).parameters.count | Should -BeExactly 11
}
} }
Context "$($file.BaseName)::Function Unit Tests" { It "Does not return anything" {
it "Does not return anything" {
Disconnect-ZertoServer | Should -BeNullOrEmpty Disconnect-ZertoServer | Should -BeNullOrEmpty
} }
} }
} }
}
Remove-Variable -Name function -Scope Global
Remove-Variable -Name here -Scope Global
+66 -156
View File
@@ -1,187 +1,97 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path) -Replace "Tests", "ZertoApiWrapper" $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Mock -ModuleName ZertoApiWrapper Invoke-ZertoRestRequest { Mock -ModuleName ZertoApiWrapper Invoke-ZertoRestRequest {
return "8dcfdc8e-e5d2-4ba4-9885-f9eb57d92b14.928a122b-1763-4664-ad37-cc00bb883f2f" Get-Content $global:here\Mocks\TaskId.txt
} }
Mock -ModuleName ZertoApiWrapper Get-ZertoVra { Mock -ModuleName ZertoApiWrapper Get-ZertoVra -ParameterFilter { $vraIdentifier -eq "MyVraIdentifier" } {
$vraInformation = @{ Get-Content $global:here\Mocks\GetSingleVra.json -Raw | ConvertFrom-Json
DatastoreClusterIdentifier = $null
DatastoreClusterName = $null
DatastoreIdentifier = "840f99fb-4689-2f8b-ea10-2a47a5bb00cc.Prod_Datastore"
DatastoreName = "Prod_Datastore"
HostIdentifier = "840f99fb-4689-2f8b-ea10-2a47a5bb00cc.znest82esxus-1"
HostVersion = 6.5
IpAddress = 192.168.1.100
Link = @{
href = "https://192.168.1.200:7669/v1/vras/2609816293328110468"
identifier = "269816293328110468"
rel = $null
type = "VraApi"
}
MemoryInGB = 3
NetworkIdentifier = "840f99fb-4689-2f8b-ea10-2a47a5bb00cc.network-1"
NetworkName = "Test Network"
Progress = 0
ProtectedCounters = @{
Vms = 0
Volumes = 0
Vpgs = 0
}
RecoveryCounters = @{
Vms = 0
Volumes = 0
Vpgs = 0
}
SelfProtectedVpgs = 0
Status = 0
VraAlerts = @{
VraAlertStatus = 0
}
VraGroup = "default_group"
VraIdentifier = 269816293328110468
VraIdentifierStr = "269816293328110468"
VraName = "VRA-znest82esxus-1"
VraNetworkDataApi = @{
DefaultGateway = "192.168.1.1"
SubnetMask = "255.255.255.0"
VraIpAddress = "192.168.1.100"
VraIpConfigurationTypeApi = "Dhcp"
}
VraVersion = 7.0
}
return $vraInformation
} }
It "is valid Powershell (Has no script errors)" { Mock -ModuleName ZertoApiWrapper Get-ZertoVra -ParameterFilter { $vraIdentifier -eq "DoesNotExist" } {
$contents = Get-Content -Path $file -ErrorAction Stop $null
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
Context "$($File.BaseName)::Parameter Unit Tests" { Mock -ModuleName ZertoApiWrapper Get-ZertoVra -ParameterFilter { $vraIdentifier -eq "DhcpVraIdentifier" } {
Get-Content $global:here\Mocks\GetDhcpVra.json -Raw | ConvertFrom-Json
It "has a mandatory String variable for the vraIdentifier" {
Get-Command $file.BaseName | Should -HaveParameter vraIdentifier -Mandatory -Type String
{Edit-ZertoVra}
} }
It "has a non-mandatory String variable for the Bandwidth Group" { Context "$($global:function)::Parameter Unit Tests" {
Get-Command $file.BaseName | Should -HaveParameter groupName -Not -Mandatory
Get-Command $file.BaseName | Should -HaveParameter groupName -Type String $ParameterTestCases = @(
@{ParameterName = 'vraIdentifier'; Type = 'String'; Mandatory = $true }
@{ParameterName = 'groupName'; Type = 'String'; Mandatory = $false }
@{ParameterName = 'vraIpAddress'; Type = 'String'; Mandatory = $false }
@{ParameterName = 'defaultGateway'; Type = 'String'; Mandatory = $false }
@{ParameterName = 'subnetMask'; Type = 'String'; Mandatory = $false }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
} }
it "has a non-mandatory String variable for the staticIp Address" { $StringTestCases = @(
Get-Command $file.BaseName | Should -HaveParameter vraIpAddress -Not -Mandatory @{ ParameterName = 'vraIdentifier' }
Get-Command $file.BaseName | Should -HaveParameter vraIpAddress -Type String @{ ParameterName = 'groupName' }
)
it "<ParameterName> validates against null or empty values" -TestCases $StringTestCases {
param($ParameterName)
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
} }
it "has a non-mandatory String variable for the default gateway" { $IpAddrTestCases = @(
Get-Command $file.BaseName | Should -HaveParameter defaultGateway -Not -Mandatory @{ParameterName = 'vraIpAddress' }
Get-Command $file.BaseName | Should -HaveParameter defaultGateway -Type String @{ParameterName = 'defaultGateway' }
} @{ParameterName = 'subnetMask' }
)
it "has a non-mandatory String variable for the subnetmask" { it "<ParameterName> validates string for a valid IP Address" -TestCases $IpAddrTestCases {
Get-Command $file.BaseName | Should -HaveParameter subnetMask -Not -Mandatory param($ParameterName)
Get-Command $file.BaseName | Should -HaveParameter subnetMask -Type String $attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
} $attrs.Where{ $_ -is [ValidateScript] }.Count | Should -Be 1
$attrs.Where{ $_ -is [ValidateScript] }.ScriptBlock | Should -Match '^\$_ \-match \[IPAddress\]\$_'
it "supports WhatIf" {
Get-Command $file.BaseName | Should -HaveParameter WhatIf -Not -Mandatory
}
$cases = `
@{vraIpAddress = "192.168.1.256"}, `
@{vraIpAddress = "192.168.1"}, `
@{vraIpAddress = "String"}, `
@{vraIpAddress = 192.168.1}, `
@{vraIpAddress = 192.168.1.246}, `
@{vraIpAddress = 32}, `
@{vraIpAddress = ""}, `
@{vraIpAddress = $null}
It "IpAddress field require valid IP addresses as a String" -TestCases $cases {
param ( $vraIpAddress )
{Edit-ZertoVra -vraIdentifier "MyVraIdentifier" -vraIpaddress $vraIpAddress} | Should -Throw
}
$cases = `
@{subnetMask = "192.168.1.256"}, `
@{subnetMask = "192.168.1"}, `
@{subnetMask = "String"}, `
@{subnetMask = 192.168.1}, `
@{subnetMask = 192.168.1.246}, `
@{subnetMask = 32}, `
@{subnetMask = ""}, `
@{subnetMask = $null}
It "subnetMask field require valid IP addresses as a String" -TestCases $cases {
param ( $vraIpAddress )
{Edit-ZertoVra -vraIdentifier "MyVraIdentifier" -subnetMask $subnetMask} | Should -Throw
}
$cases = `
@{defaultGateway = "192.168.1.256"}, `
@{defaultGateway = "192.168.1"}, `
@{defaultGateway = "String"}, `
@{defaultGateway = 192.168.1}, `
@{defaultGateway = 192.168.1.246}, `
@{defaultGateway = 32}, `
@{defaultGateway = ""}, `
@{defaultGateway = $null}
It "defaultGateway field require valid IP addresses as a String" -TestCases $cases {
param ( $vraIpAddress )
{Edit-ZertoVra -vraIdentifier "MyVraIdentifier" -defaultGateway $defaultGateway} | Should -Throw
}
$cases = `
@{vraIdentifier = ""; paramName = "vraIdentifier"; paramValue = ""}, `
@{vraIdentifier = $null; paramName = "vraIdentifier"; paramValue = ""}, `
@{vraIdentifier = "MyVraIdentifier"; paramName = "groupName"; paramValue = ""}, `
@{vraIdentifier = "MyVraIdentifier"; paramName = "groupName"; paramValue = $null}, `
@{vraIdentifier = "MyVraIdentifier"; paramName = "vraIpAddress"; paramValue = ""}, `
@{vraIdentifier = "MyVraIdentifier"; paramName = "vraIpAddress"; paramValue = $null}, `
@{vraIdentifier = "MyVraIdentifier"; paramName = "subnetMask"; paramValue = ""}, `
@{vraIdentifier = "MyVraIdentifier"; paramName = "subnetMask"; paramValue = $null}, `
@{vraIdentifier = "MyVraIdentifier"; paramName = "defaultGateway"; paramValue = ""}, `
@{vraIdentifier = "MyVraIdentifier"; paramName = "defaultGateway"; paramValue = $null}
It "<paramName> does not take empty or null" -TestCases $cases {
param($vraIdentifier, $paramValue, $paramName )
if ([String]::IsNullOrEmpty($vraIdentifier)) {
{Edit-ZertoVra -vraIdentifier $vraIdentifier} | Should -Throw
} else {
{Edit-ZertoVra -vraIdentifier $vraIdentifier -$paramName $paramValue} | should -Throw
}
} }
} }
Context "$($File.BaseName)::Function Unit Tests" { Context "$($global:function)::Function Unit Tests" {
It "Returns a string" { It "Returns a task id string" {
$results = Edit-ZertoVra -vraIdentifier "MyVraIdentifier" -groupName "MyGroup" $results = Edit-ZertoVra -vraIdentifier "MyVraIdentifier" -groupName "MyGroup"
$results | should not benullorempty $results | should not benullorempty
$results | should -BeOfType "String" $results | should -BeOfType "String"
$results | Should -BeExactly "8dcfdc8e-e5d2-4ba4-9885-f9eb57d92b14.928a122b-1763-4664-ad37-cc00bb883f2f" $results | Should -BeExactly "7e79035e-fb8c-47fe-815c-12ddd41708e6.3e4cdd0d-1064-4022-921f-6265ad6d335a"
}
It "Throws an error when the VPG does not exist" {
{ Edit-ZertoVra -vraIdentifier "DoesNotExist" -groupName "MyNewGroup" } | Should Throw "VRA with Identifier:"
}
It "Runs when passed static IP information" {
Edit-ZertoVra -vraIdentifier "MyVraIdentifier" -vraIpAddress "192.168.1.250" -defaultGateway "192.168.1.254" -subnetMask "255.255.255.0"
}
It "Processes a VRA with a DHCP address" {
Edit-ZertoVra -vraIdentifier "DhcpVraIdentifier" -groupName "MyNewGroup" | Should -BeExactly "7e79035e-fb8c-47fe-815c-12ddd41708e6.3e4cdd0d-1064-4022-921f-6265ad6d335a"
} }
it "Supports 'SupportsShouldProcess'" { it "Supports 'SupportsShouldProcess'" {
Get-Command $file.BaseName | Should -HaveParameter WhatIf Get-Command $global:function | Should -HaveParameter WhatIf
Get-Command $file.BaseName | Should -HaveParameter Confirm Get-Command $global:function | Should -HaveParameter Confirm
$file | Should -FileContentMatch 'SupportsShouldProcess' (Get-Command $global:function).ScriptBlock | Should -Match 'SupportsShouldProcess'
$file | Should -FileContentMatch '\$PSCmdlet\.ShouldProcess\(.+\)' (Get-Command $global:function).ScriptBlock | Should -Match '\$PSCmdlet\.ShouldProcess\(.+\)'
} }
} }
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Invoke-ZertoRestRequest -Exactly 3
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Get-ZertoVra Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Get-ZertoVra -Exactly 4
} }
Remove-Variable -Name function -Scope Global
Remove-Variable -Name here -Scope Global
+23 -33
View File
@@ -1,42 +1,32 @@
#Requires -Modules Pester #Requires -Modules Pester
#Region - Test Setup $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$moduleFileName = "ZertoApiWrapper.psd1" $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper")
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
#EndRegion
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null $ParameterTestCases = @(
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) @{ParameterName = 'OutputFile'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
$errors | Should -HaveCount 0 @{ParameterName = 'vpgName'; Type = 'String[]'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
} }
Context "$($file.BaseName)::Parameter Unit Tests" { it "<ParameterName> has <Validation> validation set" -TestCases $ParameterTestCases {
It "has a mantatory string parameter for the output file" { param($ParameterName)
Get-Command $file.BaseName | Should -HaveParameter OutputFile -Type String -Mandatory $attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
} }
It "has a non-mandatory string array parameter for vpgName(s) to export" { Context "$global:function::Function Unit Tests" {
Get-Command $file.BaseName | Should -HaveParameter vpgName -Type String[]
Get-Command $file.BaseName | Should -HaveParameter vpgName -Not -Mandatory }
} }
It "Output File does not take null or empty string" { Remove-Variable -Name function -Scope Global
{ Export-ZertoVpg -outputFile "" } | Should -Throw Remove-Variable -Name here -Scope Global
{ Export-ZertoVpg -outputFile $null } | Should -Throw
}
It "Vpg Name parameter does not take null or empty string" {
{ Export-ZertoVpg -outputFile ".\ExportedInfo.csv" -vpgName = "" } | Should -Throw
{ Export-ZertoVpg -outputFile ".\ExportedInfo.csv" -vpgName = $null } | Should -Throw
}
}
}
+27 -38
View File
@@ -1,53 +1,39 @@
#Requires -Modules Pester #Requires -Modules Pester
#Region - Test Setup $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$moduleFileName = "ZertoApiWrapper.psd1" $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper")
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
#EndRegion
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null $ParameterTestCases = @(
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) @{ParameterName = 'OutputPath'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
$errors | Should -HaveCount 0 @{ParameterName = 'vpgName'; Type = 'String[]'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'allVpgs'; Type = 'Switch'; Mandatory = $true; Validation = $null }
)
It "<ParameterName> parameter is of <Type> type, with correct validation" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
} }
Context "$($file.BaseName)::Parameter Unit Tests" { It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
it "has a mantatory string parameter for the output path" { param($ParameterName, $Validation)
Get-Command $file.BaseName | Should -HaveParameter outputPath -Type String -Mandatory Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
} }
it "has a non-mandatory string array parameter for vpgName(s) to export" { $null {
Get-Command $file.BaseName | Should -HaveParameter vpgName -Type String[] -Mandatory $attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.TypeId.Count | Should -Be 2
} }
it "has a non-mandatory switch parameter to export all vpgs" {
Get-Command $file.BaseName | Should -HaveParameter allVpgs -Type Switch -Mandatory
} }
it "No defined vpgName or AllVpg switch should throw an error" {
{Export-ZertoVpg -outputPath "."} | Should -Throw
}
it "Output path does not take null or empty string" {
{Export-ZertoVpg -outputPath "" -allVpgs} | Should -Throw
{Export-ZertoVpg -outputPath $null -allVpgs} | Should -Throw
}
it "Vpg Name parameter does not take null or empty string" {
{Export-ZertoVpg -outputPath "." -vpgName = ""} | Should -Throw
{Export-ZertoVpg -outputPath "." -vpgName = $null} | Should -Throw
} }
} }
Context "$($file.BaseName)::Function Unit Tests" { Context "$($global:function)::Function Unit Tests" {
Mock -ModuleName ZertoApiWrapper -CommandName Get-ZertoVpg { Mock -ModuleName ZertoApiWrapper -CommandName Get-ZertoVpg {
$returnObj = @{ $returnObj = @{
VpgName = "HRIS" VpgName = "HRIS"
@@ -247,3 +233,6 @@ Describe $file.BaseName -Tag 'Unit' {
Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Get-ZertoVpgSetting Assert-MockCalled -ModuleName ZertoApiWrapper -CommandName Get-ZertoVpgSetting
} }
} }
Remove-Variable -Name function -Scope Global
Remove-Variable -Name here -Scope Global
+53 -14
View File
@@ -1,19 +1,58 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null it "$global:function should have exactly 14 parameters defined" {
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) (get-command $global:function).Parameters.Count | Should -Be 14
$errors | Should -HaveCount 0 }
$ParameterTestCases = @(
@{ParameterName = 'zOrgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'limitTo'; Type = 'int'; Mandatory = $false; Validation = 'Range' }
@{ParameterName = 'alertIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "LimitTo Parameter should have a Min value of 1" {
(Get-Command $global:function).Parameters['limitTo'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 1
}
It "LimitTo Parameter should have a Max value of 1000000" {
(Get-Command $global:function).Parameters['limitTo'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 1000000
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+39 -14
View File
@@ -1,19 +1,44 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 14 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'datastoreIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'clusterIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'siteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+72 -14
View File
@@ -1,19 +1,77 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null it "$global:function should have exactly 16 parameters defined" {
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) (get-command $global:function).Parameters.Count | Should -Be 16
$errors | Should -HaveCount 0 }
$ParameterTestCases = @(
@{ParameterName = 'zOrgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'limitTo'; Type = 'int'; Mandatory = $false; Validation = 'Range' }
@{ParameterName = 'category'; Type = 'String'; Mandatory = $false; Validation = 'Set' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
'Set' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateSet] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "LimitTo Parameter should have a Min value of 1" {
(Get-Command $global:function).Parameters['limitTo'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 1
}
It "LimitTo Parameter should have a Max value of 1000000" {
(Get-Command $global:function).Parameters['limitTo'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 1000000
}
It "Category parameter should only have 2 options" {
(Get-Command $global:function).Parameters['category'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues.Count | Should Be 2
}
It "Category parameter should take 'events'" {
(Get-Command $global:function).Parameters['category'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'events'
}
It "Category parameter should take 'alertsHistory'" {
(Get-Command $global:function).Parameters['category'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'alertsHistory'
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,59 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null it "$global:function should have exactly 15 parameters defined" {
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) (get-command $global:function).Parameters.Count | Should -Be 15
$errors | Should -HaveCount 0 }
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'interval'; Type = 'Int32'; Mandatory = $false; Validation = 'Range' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "Interval Parameter should have a Min value of 60" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 60
}
It "Interval Parameter should have a Max value of 2678400" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 2678400
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+53 -14
View File
@@ -1,19 +1,58 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 15 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 15
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'interval'; Type = 'Int32'; Mandatory = $false; Validation = 'Range' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "Interval Parameter should have a Min value of 60" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 60
}
It "Interval Parameter should have a Max value of 2678400" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 2678400
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+39 -14
View File
@@ -1,19 +1,44 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 14 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+39 -14
View File
@@ -1,19 +1,44 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 14 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,58 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 15 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 15
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'recoverySiteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'interval'; Type = 'Int32'; Mandatory = $false; Validation = 'Range' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "Interval Parameter should have a Min value of 60" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 60
}
It "Interval Parameter should have a Max value of 2678400" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 2678400
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,58 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 15 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 15
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'recoverySiteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'interval'; Type = 'Int32'; Mandatory = $false; Validation = 'Range' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "Interval Parameter should have a Min value of 60" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 60
}
It "Interval Parameter should have a Max value of 2678400" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 2678400
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,58 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 15 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 15
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'recoverySiteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'interval'; Type = 'Int32'; Mandatory = $false; Validation = 'Range' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "Interval Parameter should have a Min value of 60" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 60
}
It "Interval Parameter should have a Max value of 2678400" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 2678400
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,58 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 15 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 15
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'recoverySiteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'interval'; Type = 'Int32'; Mandatory = $false; Validation = 'Range' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "Interval Parameter should have a Min value of 60" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 60
}
It "Interval Parameter should have a Max value of 2678400" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 2678400
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,58 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 15 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 15
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'recoverySiteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'interval'; Type = 'Int32'; Mandatory = $false; Validation = 'Range' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "Interval Parameter should have a Min value of 60" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 60
}
It "Interval Parameter should have a Max value of 2678400" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 2678400
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,44 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 14 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+39 -14
View File
@@ -1,19 +1,44 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 14 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+39 -14
View File
@@ -1,19 +1,44 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 14 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+14 -14
View File
@@ -1,19 +1,19 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 11 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 11
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+19 -14
View File
@@ -1,19 +1,24 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 12 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 12
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
it "$global:function has a non-mandatory string parameter for the zOrgIdentifier" {
Get-Command $global:function | Should -HaveParameter zOrgIdentifier -Type String
Get-Command $global:function | Should -HaveParameter zOrgIdentifier -not -Mandatory
} }
} }
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,60 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 17 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 17
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'protectedSiteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'recoverySiteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'zOrgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'interval'; Type = 'Int32'; Mandatory = $false; Validation = 'Range' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "Interval Parameter should have a Min value of 60" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 60
}
It "Interval Parameter should have a Max value of 2678400" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 2678400
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,60 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 17 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 17
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'protectedSiteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'recoverySiteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'zOrgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'interval'; Type = 'Int32'; Mandatory = $false; Validation = 'Range' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "Interval Parameter should have a Min value of 60" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 60
}
It "Interval Parameter should have a Max value of 2678400" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 2678400
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+46 -14
View File
@@ -1,19 +1,51 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 16 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 16
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'protectedSiteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'recoverySiteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'zOrgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+46 -14
View File
@@ -1,19 +1,51 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 16 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 16
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'protectedSiteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'recoverySiteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'zOrgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,58 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 15 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 15
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'interval'; Type = 'Int32'; Mandatory = $false; Validation = 'Range' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "Interval Parameter should have a Min value of 60" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 60
}
It "Interval Parameter should have a Max value of 2678400" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 2678400
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,58 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 15 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 15
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'interval'; Type = 'Int32'; Mandatory = $false; Validation = 'Range' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "Interval Parameter should have a Min value of 60" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 60
}
It "Interval Parameter should have a Max value of 2678400" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 2678400
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+44 -14
View File
@@ -1,19 +1,49 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 14 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+44 -14
View File
@@ -1,19 +1,49 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 14 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+39 -14
View File
@@ -1,19 +1,44 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 14 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'zOrgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+53 -14
View File
@@ -1,19 +1,58 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 15 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 15
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'Interval'; Type = 'Int32'; Mandatory = $false; Validation = 'Range' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "Interval Parameter should have a Min value of 60" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 60
}
It "Interval Parameter should have a Max value of 2678400" {
(Get-Command $global:function).Parameters['Interval'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 2678400
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+39 -14
View File
@@ -1,19 +1,44 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 14 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+39 -14
View File
@@ -1,19 +1,44 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 14 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,44 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 14 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+39 -14
View File
@@ -1,19 +1,44 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 14 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+23 -14
View File
@@ -1,19 +1,28 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
It "$global:function should have exactly 12 parameters defined" {
(Get-Command $global:function).Parameters.Count | Should -Be 12
}
It "zOrgIdentifier Parameter should be present and of 'String' Type" {
Get-Command $global:function | Should -HaveParameter zOrgIdentifier -Type String -Mandatory:$false
}
It "zOrgIdentifier has the NotNullOrEmpty Validator" {
(Get-Command $global:function).Parameters['zOrgIdentifier'].Attributes.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should Be 1
}
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+39 -14
View File
@@ -1,19 +1,44 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 14 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'zOrgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+37 -14
View File
@@ -1,19 +1,42 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 12 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 12
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'zOrgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+52 -14
View File
@@ -1,19 +1,57 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 14 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'zOrgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'limitTo'; Type = 'Int'; Mandatory = $false; Validation = 'Range' }
@{ParameterName = 'taskIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Range' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "Interval Parameter should have a Min value of 1" {
(Get-Command $global:function).Parameters['limitTo'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should Be 1
}
It "Interval Parameter should have a Max value of 1000000" {
(Get-Command $global:function).Parameters['limitTo'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should Be 1000000
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+40 -14
View File
@@ -1,19 +1,45 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 15 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 15
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'siteIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'clusterIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'datastoreIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
Context "$global:function::Parameter Functional Tests" {
}
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+38 -14
View File
@@ -1,19 +1,43 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 13 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 13
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'zOrgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
Context "$global:function::Parameter Functional Tests" {
}
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+14 -14
View File
@@ -1,19 +1,19 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 11 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 11
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+39 -72
View File
@@ -1,84 +1,51 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null $ParameterTestCases = @(
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) @{ParameterName = 'alertId'; Type = 'String[]'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
$errors | Should -HaveCount 0 @{ParameterName = 'entities'; Type = 'Switch'; Mandatory = $false; Validation = $null }
@{ParameterName = 'helpIdentifiers'; Type = 'Switch'; Mandatory = $false; Validation = $null }
@{ParameterName = 'levels'; Type = 'Switch'; Mandatory = $false; Validation = $null }
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'siteIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'zOrgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'level'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'helpIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'isDismissed'; Type = 'bool'; Mandatory = $false; Validation = $null }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
} }
Context "$($file.BaseName)::Parameter Unit Tests" { It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
it "Has a mandatory string parameter for the Alert identifier" { Switch ($Validation) {
Get-Command $file.BaseName | Should -HaveParameter alertId 'NotNullOrEmpty' {
Get-Command $file.BaseName | Should -HaveParameter alertId -Mandatory $attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
Get-Command $file.BaseName | Should -HaveParameter alertId -Type String[] $attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
} }
it "Has a non-mandatory switch parameter for the entities" { $null {
Get-Command $file.BaseName | Should -HaveParameter entities $attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
Get-Command $file.BaseName | Should -HaveParameter entities -Type switch $attrs.TypeId.Count | Should -Be 2
} }
it "Has a non-mandatory switch parameter for the helpIdentifiers" {
Get-Command $file.BaseName | Should -HaveParameter helpIdentifiers
Get-Command $file.BaseName | Should -HaveParameter helpIdentifiers -Type switch
}
it "Has a non-mandatory switch parameter for the levels" {
Get-Command $file.BaseName | Should -HaveParameter levels
Get-Command $file.BaseName | Should -HaveParameter levels -Type switch
}
it "Has a non-mandatory string parameter for the startDate" {
Get-Command $file.BaseName | Should -HaveParameter startDate
Get-Command $file.BaseName | Should -HaveParameter startDate -Type string
}
it "Has a non-mandatory string parameter for the endDate" {
Get-Command $file.BaseName | Should -HaveParameter endDate
Get-Command $file.BaseName | Should -HaveParameter endDate -Type string
}
it "Has a non-mandatory string parameter for the vpgIdentifier" {
Get-Command $file.BaseName | Should -HaveParameter vpgIdentifier
Get-Command $file.BaseName | Should -HaveParameter vpgIdentifier -Type string
}
it "Has a non-mandatory string parameter for the siteIdentifier" {
Get-Command $file.BaseName | Should -HaveParameter siteIdentifier
Get-Command $file.BaseName | Should -HaveParameter siteIdentifier -Type string
}
it "Has a non-mandatory string parameter for the zorgIdentifier" {
Get-Command $file.BaseName | Should -HaveParameter zorgIdentifier
Get-Command $file.BaseName | Should -HaveParameter zorgIdentifier -Type string
}
it "Has a non-mandatory string parameter for the level" {
Get-Command $file.BaseName | Should -HaveParameter level
Get-Command $file.BaseName | Should -HaveParameter level -Type string
}
it "Has a non-mandatory string parameter for the helpIdentifier" {
Get-Command $file.BaseName | Should -HaveParameter helpIdentifier
Get-Command $file.BaseName | Should -HaveParameter helpIdentifier -Type string
}
it "Has a non-mandatory bool parameter for the isDismissed" {
Get-Command $file.BaseName | Should -HaveParameter isDismissed
Get-Command $file.BaseName | Should -HaveParameter isDismissed -Type bool
} }
} }
} }
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+18 -17
View File
@@ -1,24 +1,25 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
}
It "has a non-mandatory string parameter for the datacenterIdentifier" { It "has a non-mandatory string parameter for the datacenterIdentifier" {
Get-Command $file.BaseName | Should -HaveParameter datastoreIdentifier Get-Command $global:function | Should -HaveParameter datastoreIdentifier
Get-Command $file.BaseName | Should -HaveParameter datastoreIdentifier -Type String[] Get-Command $global:function | Should -HaveParameter datastoreIdentifier -Type String[]
}
It "datastoreIdentifier parameter does not take null or empty values" {
(Get-Command $global:function).Parameters['datastoreIdentifier'].Attributes.Where{ $_ -is [ValidateNotNullOrEmpty] }.count | Should Be 1
} }
} }
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+115 -14
View File
@@ -1,19 +1,120 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 28 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 28
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'startDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'endDate'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'vpg'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'vpgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'eventType'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'siteName'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'siteIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'zOrgIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'entityType'; Type = 'String'; Mandatory = $false; Validation = 'Set' }
@{ParameterName = 'userName'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'category'; Type = 'String'; Mandatory = $false; Validation = 'Set' }
@{ParameterName = 'eventCategory'; Type = 'String'; Mandatory = $false; Validation = 'Set' }
@{ParameterName = 'alertIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'eventId'; Type = 'String[]'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'categories'; Type = 'Switch'; Mandatory = $true; Validation = $null }
@{ParameterName = 'entities'; Type = 'Switch'; Mandatory = $true; Validation = $null }
@{ParameterName = 'types'; Type = 'Switch'; Mandatory = $true; Validation = $null }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'Set' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateSet] }.Count | Should -Be 1
}
$null {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.TypeId.Count | Should -Be 2
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
It "entityType parameter only accecpts 4 different values" {
(Get-Command $global:function).Parameters['entityType'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues.Count | Should be 4
}
It "entityType parameter accecpts 'VPG' as a Value" {
(Get-Command $global:function).Parameters['entityType'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'VPG'
}
It "entityType parameter accecpts 'VRA' as a Value" {
(Get-Command $global:function).Parameters['entityType'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'VRA'
}
It "entityType parameter accecpts 'Unknown' as a Value" {
(Get-Command $global:function).Parameters['entityType'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'Unknown'
}
It "entityType parameter accecpts 'Site' as a Value" {
(Get-Command $global:function).Parameters['entityType'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'Site'
}
It "category parameter only accecpts 3 different values" {
(Get-Command $global:function).Parameters['category'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues.Count | Should be 3
}
It "category parameter accecpts 'All' as a Value" {
(Get-Command $global:function).Parameters['category'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'All'
}
It "category parameter accecpts 'events' as a Value" {
(Get-Command $global:function).Parameters['category'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'events'
}
It "category parameter accecpts 'alerts' as a Value" {
(Get-Command $global:function).Parameters['category'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'alerts'
}
It "eventCategory parameter only accecpts 3 different values" {
(Get-Command $global:function).Parameters['eventCategory'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues.Count | Should be 3
}
It "eventCategory parameter accecpts 'All' as a Value" {
(Get-Command $global:function).Parameters['eventCategory'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'All'
}
It "eventCategory parameter accecpts 'events' as a Value" {
(Get-Command $global:function).Parameters['eventCategory'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'events'
}
It "eventCategory parameter accecpts 'alerts' as a Value" {
(Get-Command $global:function).Parameters['eventCategory'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'alerts'
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+14 -14
View File
@@ -1,19 +1,19 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 11 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 11
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+16 -19
View File
@@ -1,27 +1,24 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 12 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 12
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
Context "$($file.BaseName)::Parameter Unit Tests" { It "Has a non-mandatory switch parameter for the pairing Statuses" {
Get-Command $global:function | Should -HaveParameter pairingstatuses
Get-Command $global:function | Should -HaveParameter pairingstatuses -Type switch
}
}
Context "$global:function::Parameter Functional Tests" {
it "Has a non-mandatory switch parameter for the pairing Statuses" {
Get-Command $file.BaseName | Should -HaveParameter pairingstatuses
Get-Command $file.BaseName | Should -HaveParameter pairingstatuses -Type switch
}
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+48 -14
View File
@@ -1,19 +1,53 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop It "$global:function should have exactly 18 parameters defined" {
$errors = $null (Get-Command $global:function).Parameters.Count | Should -Be 18
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) }
$errors | Should -HaveCount 0
$ParameterTestCases = @(
@{ParameterName = 'pairingStatuses'; Type = 'Switch'; Mandatory = $true; Validation = $null }
@{ParameterName = 'siteIdentifier'; Type = 'String[]'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'peerName'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'paringStatus'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'location'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'hostName'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'port'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
}
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
$null {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.TypeId.Count | Should -Be 2
}
default {
$true | Should be $false -Because "No Validation Selected. Review test cases"
} }
} }
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+13 -14
View File
@@ -1,19 +1,18 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+16 -25
View File
@@ -1,39 +1,30 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 11 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 14
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
Context "$($file.BaseName)::Parameter Unit Tests" {
It "Has a mandatory string array parameter for the settings file to import" { It "Has a mandatory string array parameter for the settings file to import" {
Get-Command $file.BaseName | Should -HaveParameter InputFile Get-Command $global:function | Should -HaveParameter InputFile
Get-Command $file.BaseName | Should -HaveParameter InputFile -Mandatory Get-Command $global:function | Should -HaveParameter InputFile -Mandatory
Get-Command $file.BaseName | Should -HaveParameter InputFile -Type String Get-Command $global:function | Should -HaveParameter InputFile -Type String
} }
It "Will not accecpt a Null or Empty string for the settings file" { It "Will not accecpt a Null or Empty string for the settings file" {
{ Import-ZertoVpg -InputFile $null } | Should -Throw $attrs = (Get-Command $global:function).Parameters['InputFile'].Attributes
{ Import-ZertoVpg -InputFile "" } | Should -Throw $attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
{ Import-ZertoVpg -InputFile @() } | Should -Throw }
} }
} Context "$global:function::Parameter Functional Tests" {
Context "$($file.BaseName)::Function Unit Tests" {
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+16 -25
View File
@@ -1,39 +1,30 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 12 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 12
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
Context "$($file.BaseName)::Parameter Unit Tests" {
It "Has a mandatory string array parameter for the settings file to import" { It "Has a mandatory string array parameter for the settings file to import" {
Get-Command $file.BaseName | Should -HaveParameter settingsFile Get-Command $global:function | Should -HaveParameter settingsFile
Get-Command $file.BaseName | Should -HaveParameter settingsFile -Mandatory Get-Command $global:function | Should -HaveParameter settingsFile -Mandatory
Get-Command $file.BaseName | Should -HaveParameter settingsFile -Type String[] Get-Command $global:function | Should -HaveParameter settingsFile -Type String[]
} }
It "Will not accecpt a Null or Empty string for the settings file" { It "Will not accecpt a Null or Empty string for the settings file" {
{Import-ZertoVpg -settingsFile $null} | Should -Throw $attrs = (Get-Command $global:function).Parameters['settingsFile'].Attributes
{Import-ZertoVpg -settingsFile ""} | Should -Throw $attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
{Import-ZertoVpg -settingsFile @()} | Should -Throw }
} }
} Context "$global:function::Parameter Functional Tests" {
Context "$($file.BaseName)::Function Unit Tests" {
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+37 -90
View File
@@ -1,108 +1,55 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 22 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 22
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
Context "$($file.BaseName)::Parameter Unit Tests" { $ParameterTestCases = @(
@{ParameterName = 'hostName'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'datastoreName'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'networkName'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'Dhcp'; Type = 'Switch'; Mandatory = $true; Validation = $null }
@{ParameterName = 'vraIpAddress'; Type = 'String'; Mandatory = $true; Validation = 'IpAddr' }
@{ParameterName = 'subnetMask'; Type = 'String'; Mandatory = $true; Validation = 'IpAddr' }
@{ParameterName = 'defaultGateway'; Type = 'String'; Mandatory = $true; Validation = 'IpAddr' }
)
It "Has a mandatory string host name parameter" { It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
Get-Command $file.BaseName | Should -HaveParameter hostName param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $file.BaseName | Should -HaveParameter hostName -Mandatory Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
Get-Command $file.BaseName | Should -HaveParameter hostName -Type String
} }
It "Will not accecpt a Null or Empty string for the host name" { It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
{Install-ZertoVra -hostName $null -datastoreName "DS01" -networkName "MyNetwork" -Dhcp } | Should -Throw "The argument is null or empty" param($ParameterName, $Validation)
{Install-ZertoVra -hostName "" -datastoreName "DS01" -networkName "MyNetwork" -Dhcp } | Should -Throw "The argument is null or empty" Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
} }
It "Has a mandatory string datastore parameter" { 'IpAddr' {
Get-Command $file.BaseName | Should -HaveParameter datastoreName $attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
Get-Command $file.BaseName | Should -HaveParameter datastoreName -Mandatory $attrs.Where{ $_ -is [ValidateScript] }.Count | Should -Be 1
Get-Command $file.BaseName | Should -HaveParameter datastoreName -Type String $attrs.Where{ $_ -is [ValidateScript] }.ScriptBlock | Should -Match '^\$_ \-match \[IPAddress\]\$_'
} }
It "Will not accecpt a Null or Empty string for the datastore" { $null {
{Install-ZertoVra -hostName "MyfirstHost" -datastoreName $null -networkName "MyNetwork" -Dhcp } | Should -Throw "The argument is null or empty" $attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
{Install-ZertoVra -hostName "MyfirstHost" -datastoreName "" -networkName "MyNetwork" -Dhcp } | Should -Throw "The argument is null or empty" $attrs.TypeId.Count | Should -Be 2
}
}
}
} }
It "Has a mandatory string network parameter" { Context "$global:function::Parameter Functional Tests" {
Get-Command $file.BaseName | Should -HaveParameter networkName
Get-Command $file.BaseName | Should -HaveParameter networkName -Mandatory
Get-Command $file.BaseName | Should -HaveParameter networkName -Type String
}
It "Will not accecpt a Null or Empty string for the datastore" {
{Install-ZertoVra -hostName "MyfirstHost" -datastoreName "DS01" -networkName $null -Dhcp } | Should -Throw "The argument is null or empty"
{Install-ZertoVra -hostName "MyfirstHost" -datastoreName "DS01" -networkName "" -Dhcp } | Should -Throw "The argument is null or empty"
}
it "Has a switch parameter for setting DHCP" {
Get-Command $file.BaseName | Should -HaveParameter Dhcp
Get-Command $file.BaseName | Should -HaveParameter Dhcp -Mandatory
Get-Command $file.BaseName | Should -HaveParameter Dhcp -Type 'Switch'
} }
it "Has a mandatory string parameter for the static IP address" {
Get-Command $file.BaseName | Should -HaveParameter vraIpAddress
Get-Command $file.BaseName | Should -HaveParameter vraIpAddress -Mandatory
Get-Command $file.BaseName | Should -HaveParameter vraIpAddress -Type String
} }
it "Has a mandatory string parameter for the subnet mask" { Remove-Variable -Name here -Scope Global
Get-Command $file.BaseName | Should -HaveParameter subnetMask Remove-Variable -Name function -Scope Global
Get-Command $file.BaseName | Should -HaveParameter subnetMask -Mandatory
Get-Command $file.BaseName | Should -HaveParameter subnetMask -Type String
}
it "Has a mandatory string parameter for the default gateway" {
Get-Command $file.BaseName | Should -HaveParameter defaultGateway
Get-Command $file.BaseName | Should -HaveParameter defaultGateway -Mandatory
Get-Command $file.BaseName | Should -HaveParameter defaultGateway -Type String
}
$cases = `
@{invalidIpAddress = "192.168.1.256"}, `
@{invalidIpAddress = "192.168.1"}, `
@{invalidIpAddress = "String"}, `
@{invalidIpAddress = 192.168.1.246}, `
@{invalidIpAddress = 32}, `
@{invalidIpAddress = ""}, `
@{invalidIpAddress = $null}
It "IpAddress field require valid IP addresses as a String: <invalidIpAddress>" -TestCases $cases {
param ( $invalidIpAddress )
{Install-ZertoVra -hostName "MyFirstHost" -datastoreName "DS01" -networkName "MyNetwork" -vraIpAddress $invalidIpAddress -subnetMask "255.255.255.0" -defaultGateway "192.168.1.254"} | Should -Throw
}
It "Default Gateway field require valid IP addresses as a String: <invalidIpAddress>" -TestCases $cases {
param ( $invalidIpAddress )
{Install-ZertoVra -hostName "MyFirstHost" -datastoreName "DS01" -networkName "MyNetwork" -vraIpAddress '192.168.1.100' -subnetMask "255.255.255.0" -defaultGateway $invalidIpAddress} | Should -Throw
}
It "Subnet Mask field require valid IP addresses as a String: <invalidIpAddress>" -TestCases $cases {
param ( $invalidIpAddress )
{Install-ZertoVra -hostName "MyFirstHost" -datastoreName "DS01" -networkName "MyNetwork" -vraIpAddress '192.168.1.100' -subnetMask $invalidIpAddress -defaultGateway "192.168.1.254"} | Should -Throw
}
}
Context "$($file.BaseName)::Function Unit Tests" {
#TODO
}
}
+78 -54
View File
@@ -1,77 +1,101 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 20 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 20
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
Context "$($file.BaseName)::Parameter Unit Tests" { $ParameterTestCases = @(
it "has a mandatory string parameter for the vpgName" { @{ParameterName = 'vpgName'; Type = 'String'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
Get-Command $file.BaseName | Should -HaveParameter vpgName @{ParameterName = 'checkpointIdentifier'; Type = 'String'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
Get-Command $file.BaseName | Should -HaveParameter vpgName -Type string @{ParameterName = 'commitPolicy'; Type = 'String'; Mandatory = $false; Validation = 'Set' }
Get-Command $file.BaseName | Should -HaveParameter vpgName -Mandatory @{ParameterName = 'shutdownPolicy'; Type = 'Int'; Mandatory = $false; Validation = 'Set' }
@{ParameterName = 'timeToWaitBeforeShutdownInSec'; Type = 'Int'; Mandatory = $false; Validation = 'Range' }
@{ParameterName = 'reverseProtection'; Type = 'bool'; Mandatory = $false; Validation = $null }
@{ParameterName = 'vmName'; Type = 'String[]'; Mandatory = $false; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'whatIf'; Type = 'Switch'; Mandatory = $false; Validation = 'ShouldProcess' }
)
It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
} }
it "has a non-mandatory string parameter for the checkpoint" { It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
Get-Command $file.BaseName | Should -HaveParameter checkpointIdentifier param($ParameterName, $Validation)
Get-Command $file.BaseName | Should -HaveParameter checkpointIdentifier -Type string Switch ($Validation) {
Get-Command $file.BaseName | Should -HaveParameter checkpointIdentifier -Not -Mandatory 'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
} }
it "has a non-mandatory string parameter for the commit policy" { 'Set' {
Get-Command $file.BaseName | Should -HaveParameter commitPolicy $attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
Get-Command $file.BaseName | Should -HaveParameter commitPolicy -Type string $attrs.Where{ $_ -is [ValidateSet] }.Count | Should -Be 1
Get-Command $file.BaseName | Should -HaveParameter commitPolicy -Not -Mandatory
Get-Command $file.BaseName | Should -HaveParameter commitPolicy -DefaultValue "Rollback"
} }
it "has a non-mandatory int parameter for the shutdown policy" { 'Range' {
Get-Command $file.BaseName | Should -HaveParameter shutdownPolicy $attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
Get-Command $file.BaseName | Should -HaveParameter shutdownPolicy -Type int $attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
Get-Command $file.BaseName | Should -HaveParameter shutdownPolicy -Not -Mandatory
Get-Command $file.BaseName | Should -HaveParameter shutdownPolicy -DefaultValue 0
} }
it "has a non-mandatory int parameter for the time to wait before force shutdown" { 'ShouldProcess' {
Get-Command $file.BaseName | Should -HaveParameter timeToWaitBeforeShutdownInSec $scriptBlock = (Get-Command $global:function).ScriptBlock
Get-Command $file.BaseName | Should -HaveParameter timeToWaitBeforeShutdownInSec -Type int $scriptBlock | Should -match 'SupportsShouldProcess'
Get-Command $file.BaseName | Should -HaveParameter timeToWaitBeforeShutdownInSec -Not -Mandatory $scriptBlock | Should -match '\$PSCmdlet\.ShouldProcess\(.+\)'
Get-Command $file.BaseName | Should -HaveParameter timeToWaitBeforeShutdownInSec -DefaultValue 3600
} }
it "has a non-mandatory bool parameter for the reverse protection policy" { $null {
Get-Command $file.BaseName | Should -HaveParameter reverseProtection $attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
Get-Command $file.BaseName | Should -HaveParameter reverseProtection -Type bool $attrs.TypeId.Count | Should -Be 2
Get-Command $file.BaseName | Should -HaveParameter reverseProtection -Not -Mandatory
} }
it "has a non-mandatory array string parameter for the named VMs to be failed over" { default {
Get-Command $file.BaseName | Should -HaveParameter vmName $true | should be $false -Because "No Validation Selected. Review test cases"
Get-Command $file.BaseName | Should -HaveParameter vmName -Type string[]
Get-Command $file.BaseName | Should -HaveParameter vmName -Not -Mandatory
} }
it "Supports 'SupportsShouldProcess'" {
Get-Command $file.BaseName | Should -HaveParameter WhatIf
Get-Command $file.BaseName | Should -HaveParameter Confirm
$file | Should -FileContentMatch 'SupportsShouldProcess'
$file | Should -FileContentMatch '\$PSCmdlet\.ShouldProcess\(.+\)'
} }
} }
Context "$($file.BaseName)::Function Unit Tests" { It "Commit Policy Default Value is 'RollBack'" {
#TODO Get-Command $global:function | Should -HaveParameter commitPolicy -DefaultValue "Rollback"
}
It "Commit Policy Only Accecpts 'RollBack', 'Commit', or 'None'" {
(Get-Command $global:function).Parameters['commitPolicy'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -HaveCount 3
(Get-Command $global:function).Parameters['commitPolicy'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'RollBack'
(Get-Command $global:function).Parameters['commitPolicy'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'Commit'
(Get-Command $global:function).Parameters['commitPolicy'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'None'
}
It "Shutdown Policy Default Value is '0'" {
Get-Command $global:function | Should -HaveParameter shutdownPolicy -DefaultValue 0
}
It "Shutdown Policy Only Accecpts 'RollBack', 'Commit', or 'None'" {
(Get-Command $global:function).Parameters['shutdownPolicy'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -HaveCount 3
(Get-Command $global:function).Parameters['shutdownPolicy'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 0
(Get-Command $global:function).Parameters['shutdownPolicy'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 1
(Get-Command $global:function).Parameters['shutdownPolicy'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 2
}
it "Time to wait before shutdown in sec should have a default value of 3600" {
Get-Command $global:function | Should -HaveParameter timeToWaitBeforeShutdownInSec -DefaultValue 3600
}
it "Time to wait before shutdown in sec should have a minimum value of 300 and max value of 86400" {
(Get-Command $global:function).Parameters['timeToWaitBeforeShutdownInSec'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should -Be 300
(Get-Command $global:function).Parameters['timeToWaitBeforeShutdownInSec'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should -Be 86400
} }
} }
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,44 +1,56 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null it "$global:function should have exactly 15 parameters defined" {
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) (get-command $global:function).Parameters.Count | Should -Be 15
$errors | Should -HaveCount 0
} }
Context "$($file.BaseName)::Parameter Unit Tests" { $ParameterTestCases = @(
@{ParameterName = 'vpgName'; Type = 'String[]'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'reverseProtection'; Type = 'switch'; Mandatory = $false; Validation = $null }
@{ParameterName = 'whatIf'; Type = 'Switch'; Mandatory = $false; Validation = 'ShouldProcess' }
)
it "Supports 'ShouldProcess'" { It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
Get-Command $file.BaseName | Should -HaveParameter WhatIf param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $file.BaseName | Should -HaveParameter Confirm Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
$file | Should -FileContentMatch 'SupportsShouldProcess'
$file | Should -FileContentMatch '\$PSCmdlet\.ShouldProcess\(.+\)'
} }
it "has a mandatory string parameter for the vpgName" { It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
Get-Command $file.BaseName | Should -HaveParameter vpgName param($ParameterName, $Validation)
Get-Command $file.BaseName | Should -HaveParameter vpgName -Type string[] Switch ($Validation) {
Get-Command $file.BaseName | Should -HaveParameter vpgName -Mandatory 'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
} }
it "has a switch parameter for reverse protection" { 'ShouldProcess' {
Get-Command $file.BaseName | Should -HaveParameter reverseProtection $scriptBlock = (Get-Command $global:function).ScriptBlock
Get-Command $file.BaseName | Should -HaveParameter reverseProtection -Type switch $scriptBlock | Should -match 'SupportsShouldProcess'
$scriptBlock | Should -match '\$PSCmdlet\.ShouldProcess\(.+\)'
}
$null {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.TypeId.Count | Should -Be 2
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
}
}
} }
} }
Context "$($file.BaseName)::Function Unit Tests" { Context "$global:function::Parameter Functional Tests" {
#TODO
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,28 +1,25 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null it "$global:function should have exactly 12 parameters defined" {
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) (get-command $global:function).Parameters.Count | Should -Be 12
$errors | Should -HaveCount 0
} }
Context "$($file.BaseName)::Parameter Unit Tests" {
it "has a mandatory string parameter for the vpgName" { it "has a mandatory string parameter for the vpgName" {
Get-Command $file.BaseName | Should -HaveParameter vpgName Get-Command $global:function | Should -HaveParameter vpgName
Get-Command $file.BaseName | Should -HaveParameter vpgName -Type string[] Get-Command $global:function | Should -HaveParameter vpgName -Type string[]
Get-Command $file.BaseName | Should -HaveParameter vpgName -Mandatory Get-Command $global:function | Should -HaveParameter vpgName -Mandatory
} }
} }
Context "$global:function::Parameter Functional Tests" {
} }
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+17 -19
View File
@@ -1,28 +1,26 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null it "$global:function should have exactly 12 parameters defined" {
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) (get-command $global:function).Parameters.Count | Should -Be 12
$errors | Should -HaveCount 0
} }
Context "$($file.BaseName)::Parameter Unit Tests" {
it "has a mandatory string parameter for the vpgName" { it "has a mandatory string parameter for the vpgName" {
Get-Command $file.BaseName | Should -HaveParameter vpgName Get-Command $global:function | Should -HaveParameter vpgName
Get-Command $file.BaseName | Should -HaveParameter vpgName -Type string[] Get-Command $global:function | Should -HaveParameter vpgName -Type string[]
Get-Command $file.BaseName | Should -HaveParameter vpgName -Mandatory Get-Command $global:function | Should -HaveParameter vpgName -Mandatory
} }
} }
Context "$global:function::Parameter Functional Tests" {
} }
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+61 -53
View File
@@ -1,74 +1,82 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop it "$global:function should have exactly 20 parameters defined" {
$errors = $null (get-command $global:function).Parameters.Count | Should -Be 20
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
Context "$($file.BaseName)::Parameter Unit Tests" { $ParameterTestCases = @(
@{ParameterName = 'vpgName'; Type = 'String[]'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'commitPolicy'; Type = 'String'; Mandatory = $false; Validation = 'Set' }
@{ParameterName = 'commitPolicyTimeout'; Type = 'Int'; Mandatory = $false; Validation = 'Range' }
@{ParameterName = 'forceShutdown'; Type = 'Switch'; Mandatory = $false; Validation = $null }
@{ParameterName = 'disableReverseProtection'; Type = 'Switch'; Mandatory = $true; Validation = $null }
@{ParameterName = 'keepSourceVms'; Type = 'Switch'; Mandatory = $true; Validation = $null }
@{ParameterName = 'ContinueOnPreScriptFailure'; Type = 'Switch'; Mandatory = $false; Validation = $null }
@{ParameterName = 'whatIf'; Type = 'Switch'; Mandatory = $false; Validation = 'ShouldProcess' }
)
it "has a mandatory string parameter for the vpgName" { It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
Get-Command $file.BaseName | Should -HaveParameter vpgName param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $file.BaseName | Should -HaveParameter vpgName -Type string[] Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
Get-Command $file.BaseName | Should -HaveParameter vpgName -Mandatory
} }
it "has a non-mandatory string parameter for commitPolicy" { It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
Get-Command $file.BaseName | Should -HaveParameter commitPolicy param($ParameterName, $Validation)
Get-Command $file.BaseName | Should -HaveParameter commitPolicy -Type string Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
} }
it "CommitPolicy only accecpts 'Rollback', 'Commit', or 'None'" { 'Set' {
{ Invoke-ZertoMove -vpgName "MyVpg" -commitPolicy "Rollbackk" } | Should -Throw $attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
{ Invoke-ZertoMove -vpgName "MyVpg" -commitPolicy "" } | Should -Throw $attrs.Where{ $_ -is [ValidateSet] }.Count | Should -Be 1
{ Invoke-ZertoMove -vpgName "MyVpg" -commitPolicy $null } | Should -Throw
} }
it "has a non-mandatory int parameter for commitPolicyTimeout" { 'Range' {
Get-Command $file.BaseName | Should -HaveParameter commitPolicyTimeout $attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
Get-Command $file.BaseName | Should -HaveParameter commitPolicyTimeout -Type Int $attrs.Where{ $_ -is [ValidateRange] }.Count | Should -Be 1
} }
it "Commit Policy Timeout will only accecpt an int value between 5 minutes and 24 Hours" { 'ShouldProcess' {
{ Invoke-ZertoMove -vpgName "MyVpg" -commitPolicyTimeout 150 } | Should -Throw $scriptBlock = (Get-Command $global:function).ScriptBlock
{ Invoke-ZertoMove -vpgName "MyVpg" -commitPolicyTimeout 15000000 } | Should -Throw $scriptBlock | Should -match 'SupportsShouldProcess'
{ Invoke-ZertoMove -vpgName "MyVpg" -commitPolicyTimeout -1350 } | Should -Throw $scriptBlock | Should -match '\$PSCmdlet\.ShouldProcess\(.+\)'
{ Invoke-ZertoMove -vpgName "MyVpg" -commitPolicyTimeout $null } | Should -Throw
{ Invoke-ZertoMove -vpgName "MyVpg" -commitPolicyTimeout "" } | Should -Throw
} }
it "has a non-mandatory switch parameter for forceShutdown" { $null {
Get-Command $file.BaseName | Should -HaveParameter forceShutdown $attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
Get-Command $file.BaseName | Should -HaveParameter forceShutdown -Type Switch $attrs.TypeId.Count | Should -Be 2
} }
it "has a mandatory switch parameter for disableReverseProtection" { default {
Get-Command $file.BaseName | Should -HaveParameter disableReverseProtection $true | should be $false -Because "No Validation Selected. Review test cases"
Get-Command $file.BaseName | Should -HaveParameter disableReverseProtection -Type Switch
Get-Command $file.BaseName | Should -HaveParameter disableReverseProtection -Mandatory
}
it "has a non-mandatory switch parameter for keepSourceVms" {
Get-Command $file.BaseName | Should -HaveParameter keepSourceVms
Get-Command $file.BaseName | Should -HaveParameter keepSourceVms -Type Switch
Get-Command $file.BaseName | Should -HaveParameter keepSourceVms -Mandatory
}
it "has a non-mandatory switch parameter for ContinueOnPreScriptFailure" {
Get-Command $file.BaseName | Should -HaveParameter ContinueOnPreScriptFailure
Get-Command $file.BaseName | Should -HaveParameter ContinueOnPreScriptFailure -Type Switch
} }
} }
} }
It "Commit Policy Only Accecpts 'RollBack', 'Commit', or 'None'" {
(Get-Command $global:function).Parameters['commitPolicy'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -HaveCount 3
(Get-Command $global:function).Parameters['commitPolicy'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'RollBack'
(Get-Command $global:function).Parameters['commitPolicy'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'Commit'
(Get-Command $global:function).Parameters['commitPolicy'].Attributes.Where{ $_ -is [ValidateSet] }.ValidValues | Should -Contain 'None'
}
it "Commit Policy Timeout should have a minimum value of 300 and max value of 86400" {
(Get-Command $global:function).Parameters['commitPolicyTimeout'].Attributes.Where{ $_ -is [ValidateRange] }.MinRange | Should -Be 300
(Get-Command $global:function).Parameters['commitPolicyTimeout'].Attributes.Where{ $_ -is [ValidateRange] }.MaxRange | Should -Be 86400
}
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+47 -19
View File
@@ -1,28 +1,56 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null it "$global:function should have exactly 16 parameters defined" {
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) (get-command $global:function).Parameters.Count | Should -Be 16
$errors | Should -HaveCount 0
} }
Context "$($file.BaseName)::Parameter Unit Tests" { $ParameterTestCases = @(
@{ParameterName = 'vpgName'; Type = 'String[]'; Mandatory = $true; Validation = 'NotNullOrEmpty' }
@{ParameterName = 'reverseProtection'; Type = 'switch'; Mandatory = $false; Validation = $null }
@{ParameterName = 'whatIf'; Type = 'Switch'; Mandatory = $false; Validation = 'ShouldProcess' }
)
it "has a mandatory string parameter for the vpgName" { It "<ParameterName> parameter is of <Type> type" -TestCases $ParameterTestCases {
Get-Command $file.BaseName | Should -HaveParameter vpgName param($ParameterName, $Type, $Mandatory, $Validation)
Get-Command $file.BaseName | Should -HaveParameter vpgName -Type string[] Get-Command $global:function | Should -HaveParameter $ParameterName -Mandatory:$Mandatory -Type $Type
Get-Command $file.BaseName | Should -HaveParameter vpgName -Mandatory }
It "<ParameterName> parameter has correct validation setting" -TestCases $ParameterTestCases {
param($ParameterName, $Validation)
Switch ($Validation) {
'NotNullOrEmpty' {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.Where{ $_ -is [ValidateNotNullOrEmpty] }.Count | Should -Be 1
}
'ShouldProcess' {
$scriptBlock = (Get-Command $global:function).ScriptBlock
$scriptBlock | Should -match 'SupportsShouldProcess'
$scriptBlock | Should -match '\$PSCmdlet\.ShouldProcess\(.+\)'
}
$null {
$attrs = (Get-Command $global:function).Parameters[$ParameterName].Attributes
$attrs.TypeId.Count | Should -Be 2
}
default {
$true | should be $false -Because "No Validation Selected. Review test cases"
} }
} }
} }
}
Context "$global:function::Parameter Functional Tests" {
}
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+16 -19
View File
@@ -1,28 +1,25 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
It "is valid Powershell (Has no script errors)" { Context "$global:function::Parameter Unit Tests" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null it "$global:function should have exactly 14 parameters defined" {
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors) (get-command $global:function).Parameters.Count | Should -Be 14
$errors | Should -HaveCount 0
} }
Context "$($file.BaseName)::Parameter Unit Tests" {
it "has a mandatory string parameter for the vpgName" { it "has a mandatory string parameter for the vpgName" {
Get-Command $file.BaseName | Should -HaveParameter vpgName Get-Command $global:function | Should -HaveParameter vpgName
Get-Command $file.BaseName | Should -HaveParameter vpgName -Type string[] Get-Command $global:function | Should -HaveParameter vpgName -Type string[]
Get-Command $file.BaseName | Should -HaveParameter vpgName -Mandatory Get-Command $global:function | Should -HaveParameter vpgName -Mandatory
} }
} }
Context "$global:function::Parameter Functional Tests" {
} }
}
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+23
View File
@@ -0,0 +1,23 @@
{
"apiRequestResults": "",
"Headers": {
"Cache-Control": [
"no-cache"
],
"Server": [
"Microsoft-HTTPAPI/2.0"
],
"x-zerto-session": [
"e34da0b0-4bc2-4cda-b316-0384e35bdca5"
],
"X-Content-Type-Options": [
"nosniff"
],
"Date": [
"Thu, 11 Jul 2019 19:05:40 GMT"
],
"Content-Length": [
"0"
]
}
}
+50
View File
@@ -0,0 +1,50 @@
{
"DatastoreClusterIdentifier": null,
"DatastoreClusterName": null,
"DatastoreIdentifier": "d4a6a1d5-79e9-4308-990a-7c3e616f0908.datastore-21",
"DatastoreName": "datastore1 (2)",
"HostIdentifier": "d4a6a1d5-79e9-4308-990a-7c3e616f0908.host-18",
"HostVersion": "6.7",
"IpAddress": "192.168.10.110",
"Link": {
"href": "https://192.168.10.20:9669/v1/vras/5377857665828094938",
"identifier": "5377857665828094938",
"rel": null,
"type": "VraApi"
},
"Link_{0}": {
"href": "https://192.168.10.20:9669/v1/vras/5377857665828094938",
"rel": "self",
"type": "VraApi"
},
"MemoryInGB": 1,
"NetworkIdentifier": "d4a6a1d5-79e9-4308-990a-7c3e616f0908.network-22",
"NetworkName": "VM Network",
"Progress": 0,
"ProtectedCounters": {
"Vms": 0,
"Volumes": 0,
"Vpgs": 0
},
"RecoveryCounters": {
"Vms": 0,
"Volumes": 0,
"Vpgs": 0
},
"SelfProtectedVpgs": 0,
"Status": 0,
"VraAlerts": {
"VraAlertsStatus": 0
},
"VraGroup": "default_group",
"VraIdentifier": 5377857665828094938,
"VraIdentifierStr": "5377857665828094938",
"VraName": "Z-VRA-ncesx1.nc.lab",
"VraNetworkDataApi": {
"DefaultGateway": "",
"SubnetMask": "255.255.255.0",
"VraIPAddress": "192.168.10.110",
"VraIPConfigurationTypeApi": "Dhcp"
},
"VraVersion": "7.0"
}
+50
View File
@@ -0,0 +1,50 @@
{
"DatastoreClusterIdentifier": null,
"DatastoreClusterName": null,
"DatastoreIdentifier": "d4a6a1d5-79e9-4308-990a-7c3e616f0908.datastore-19",
"DatastoreName": "datastore1",
"HostIdentifier": "d4a6a1d5-79e9-4308-990a-7c3e616f0908.host-15",
"HostVersion": "6.7",
"IpAddress": "192.168.10.15",
"Link": {
"href": "https://192.168.10.20:9669/v1/vras/5377857665828093654",
"identifier": "5377857665828093654",
"rel": null,
"type": "VraApi"
},
"Link_{0}": {
"href": "https://192.168.10.20:9669/v1/vras/5377857665828093654",
"rel": "self",
"type": "VraApi"
},
"MemoryInGB": 1,
"NetworkIdentifier": "d4a6a1d5-79e9-4308-990a-7c3e616f0908.network-22",
"NetworkName": "VM Network",
"Progress": 0,
"ProtectedCounters": {
"Vms": 0,
"Volumes": 0,
"Vpgs": 0
},
"RecoveryCounters": {
"Vms": 0,
"Volumes": 0,
"Vpgs": 0
},
"SelfProtectedVpgs": 0,
"Status": 0,
"VraAlerts": {
"VraAlertsStatus": 0
},
"VraGroup": "default_group",
"VraIdentifier": 5377857665828093654,
"VraIdentifierStr": "5377857665828093654",
"VraName": "Z-VRA-ncesx2.nc.lab",
"VraNetworkDataApi": {
"DefaultGateway": "192.168.10.254",
"SubnetMask": "255.255.255.0",
"VraIPAddress": "192.168.10.15",
"VraIPConfigurationTypeApi": "Static"
},
"VraVersion": "7.0"
}
+75
View File
@@ -0,0 +1,75 @@
{
"ActiveProcessesApi": {
"RunningFailOverTestApi": null
},
"ActualRPO": 7,
"BackupEnabled": false,
"ConfiguredRpoSeconds": 300,
"Entities": {
"Protected": 0,
"Recovery": 0,
"Source": 0,
"Target": 0
},
"FailSafeHistory": {
"ActualFailSafeHistory": 60,
"ConfiguredFailSafeHistory": 240,
"FailSafeDescription": ""
},
"HistoryStatusApi": {
"ActualHistoryInMinutes": 92,
"ConfiguredHistoryInMinutes": 1440,
"EarliestCheckpoint": {
"CheckpointIdentifier": "786",
"Tag": null,
"TimeStamp": "2019-07-20T19:30:19Z"
}
},
"IOPs": 13,
"LastTest": null,
"Link": {
"href": "https://192.168.10.20:9669/v1/vpgs/57f502ff-3c41-4aff-b20a-6638205b73cd",
"identifier": "57f502ff-3c41-4aff-b20a-6638205b73cd",
"rel": null,
"type": "VpgApi"
},
"Link_{0}": {
"href": "https://192.168.10.20:9669/v1/vpgs/57f502ff-3c41-4aff-b20a-6638205b73cd",
"rel": "self",
"type": "VpgApi"
},
"OrganizationName": "",
"Priority": 1,
"ProgressPercentage": 0,
"ProtectedSite": {
"href": "https://192.168.10.20:9669/v1/localsite",
"identifier": "9e09efa0-0d00-46ed-929b-f86273b28205",
"rel": null,
"type": "LocalSiteApi"
},
"ProvisionedStorageInMB": 336118,
"RecoverySite": {
"href": "https://192.168.10.20:9669/v1/peersites/057cab27-f02a-443a-989d-7f14341fa9c3",
"identifier": "057cab27-f02a-443a-989d-7f14341fa9c3",
"rel": null,
"type": "PeerSiteApi"
},
"ServiceProfile": null,
"ServiceProfileIdentifier": null,
"ServiceProfileName": "",
"SourceSite": "WCHL - NC",
"Status": 1,
"SubStatus": 0,
"TargetSite": "WCHL - CA",
"ThroughputInMB": 0.27197265625,
"UsedStorageInMB": 245465,
"VmsCount": 4,
"VpgIdentifier": "57f502ff-3c41-4aff-b20a-6638205b73cd",
"VpgName": "ExportStuff",
"Zorg": {
"href": "https://192.168.10.20:9669/v1/zorgs/00000000-0000-0000-0000-000000000000",
"identifier": "00000000-0000-0000-0000-000000000000",
"rel": null,
"type": "ZorgApi"
}
}
+20
View File
@@ -0,0 +1,20 @@
{
"BandwidthThrottlingInMBs": -1,
"ContactEmail": "vSphere-Site01@zerto.com",
"ContactName": "vSphere-Site01@zerto.com",
"ContactPhone": "066-6666666",
"IpAddress": "192.168.200.1",
"IsReplicationToSelfEnabled": true,
"Link": {
"href": "https://192.168.222.1:7669/v1/localsite",
"identifier": "63a62dc2-ef6f-45aa-809f-9dbaeb8c06cf",
"rel": null,
"type": "LocalSiteApi"
},
"Location": "vSphere-Site01",
"SiteIdentifier": "63a62dc2-ef6f-45aa-809f-9dbaeb8c06cf",
"SiteName": "vSphere-Site01 at Zerto",
"SiteType": "VCenter",
"UtcOffsetInMinutes": -240,
"Version": "7.0.0"
}
+274
View File
@@ -0,0 +1,274 @@
[
{
"ActualRPO": 7,
"EnabledActions": {
"IsFlrEnabled": true
},
"Entities": {
"Protected": 0,
"Recovery": 0,
"Source": 0,
"Target": 0
},
"HardwareVersion": "vmx-15",
"IOPs": 2,
"IsVmExists": true,
"JournalHardLimit": {
"LimitType": 1,
"LimitValue": 153600
},
"JournalUsedStorageMb": 640,
"JournalWarningThreshold": {
"LimitType": 1,
"LimitValue": 115200
},
"LastTest": null,
"Link": {
"href": "https://192.168.10.20:9669/v1/vms/d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-38?VpgIdentifier=57f502ff-3c41-4aff-b20a-6638205b73cd",
"identifier": "d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-38?VpgIdentifier=57f502ff-3c41-4aff-b20a-6638205b73cd",
"rel": null,
"type": "VmApi"
},
"Link_{0}": {
"href": "https://192.168.10.20:9669/v1/vms/d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-38?VpgIdentifier=57f502ff-3c41-4aff-b20a-6638205b73cd",
"rel": "self",
"type": "VmApi"
},
"OrganizationName": "",
"OutgoingBandWidthInMbps": 0.001953125,
"Priority": 1,
"ProtectedSite": {
"href": "https://192.168.10.20:9669/v1/localsite",
"identifier": "9e09efa0-0d00-46ed-929b-f86273b28205",
"rel": null,
"type": "LocalSiteApi"
},
"ProvisionedStorageInMB": 77906,
"RecoveryHostIdentifier": "f45d81e4-4ff5-4376-a5c8-20ffe8d52431.host-15",
"RecoverySite": {
"href": "https://192.168.10.20:9669/v1/peersites/057cab27-f02a-443a-989d-7f14341fa9c3",
"identifier": "057cab27-f02a-443a-989d-7f14341fa9c3",
"rel": null,
"type": "PeerSiteApi"
},
"SourceSite": "WCHL - NC",
"Status": 1,
"SubStatus": 0,
"TargetSite": "WCHL - CA",
"ThroughputInMB": 0,
"UsedStorageInMB": 77906,
"VmIdentifier": "d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-38",
"VmName": "ncesx3.nc.lab",
"Volumes": [
{
"VmVolumeIdentifier": "scsi:0:0"
}
],
"VpgIdentifier": "57f502ff-3c41-4aff-b20a-6638205b73cd",
"VpgName": "ExportStuff"
},
{
"ActualRPO": 7,
"EnabledActions": {
"IsFlrEnabled": true
},
"Entities": {
"Protected": 0,
"Recovery": 0,
"Source": 0,
"Target": 0
},
"HardwareVersion": "vmx-15",
"IOPs": 1,
"IsVmExists": true,
"JournalHardLimit": {
"LimitType": 1,
"LimitValue": 153600
},
"JournalUsedStorageMb": 609,
"JournalWarningThreshold": {
"LimitType": 1,
"LimitValue": 115200
},
"LastTest": null,
"Link": {
"href": "https://192.168.10.20:9669/v1/vms/d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-37?VpgIdentifier=57f502ff-3c41-4aff-b20a-6638205b73cd",
"identifier": "d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-37?VpgIdentifier=57f502ff-3c41-4aff-b20a-6638205b73cd",
"rel": null,
"type": "VmApi"
},
"Link_{0}": {
"href": "https://192.168.10.20:9669/v1/vms/d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-37?VpgIdentifier=57f502ff-3c41-4aff-b20a-6638205b73cd",
"rel": "self",
"type": "VmApi"
},
"OrganizationName": "",
"OutgoingBandWidthInMbps": 0.0009765625,
"Priority": 1,
"ProtectedSite": {
"href": "https://192.168.10.20:9669/v1/localsite",
"identifier": "9e09efa0-0d00-46ed-929b-f86273b28205",
"rel": null,
"type": "LocalSiteApi"
},
"ProvisionedStorageInMB": 77906,
"RecoveryHostIdentifier": "f45d81e4-4ff5-4376-a5c8-20ffe8d52431.host-15",
"RecoverySite": {
"href": "https://192.168.10.20:9669/v1/peersites/057cab27-f02a-443a-989d-7f14341fa9c3",
"identifier": "057cab27-f02a-443a-989d-7f14341fa9c3",
"rel": null,
"type": "PeerSiteApi"
},
"SourceSite": "WCHL - NC",
"Status": 1,
"SubStatus": 0,
"TargetSite": "WCHL - CA",
"ThroughputInMB": 0,
"UsedStorageInMB": 77906,
"VmIdentifier": "d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-37",
"VmName": "ncesx2.nc.lab",
"Volumes": [
{
"VmVolumeIdentifier": "scsi:0:0"
}
],
"VpgIdentifier": "57f502ff-3c41-4aff-b20a-6638205b73cd",
"VpgName": "ExportStuff"
},
{
"ActualRPO": 7,
"EnabledActions": {
"IsFlrEnabled": true
},
"Entities": {
"Protected": 0,
"Recovery": 0,
"Source": 0,
"Target": 0
},
"HardwareVersion": "vmx-15",
"IOPs": 2,
"IsVmExists": true,
"JournalHardLimit": {
"LimitType": 1,
"LimitValue": 153600
},
"JournalUsedStorageMb": 634,
"JournalWarningThreshold": {
"LimitType": 1,
"LimitValue": 115200
},
"LastTest": null,
"Link": {
"href": "https://192.168.10.20:9669/v1/vms/d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-36?VpgIdentifier=57f502ff-3c41-4aff-b20a-6638205b73cd",
"identifier": "d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-36?VpgIdentifier=57f502ff-3c41-4aff-b20a-6638205b73cd",
"rel": null,
"type": "VmApi"
},
"Link_{0}": {
"href": "https://192.168.10.20:9669/v1/vms/d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-36?VpgIdentifier=57f502ff-3c41-4aff-b20a-6638205b73cd",
"rel": "self",
"type": "VmApi"
},
"OrganizationName": "",
"OutgoingBandWidthInMbps": 0.00146484375,
"Priority": 1,
"ProtectedSite": {
"href": "https://192.168.10.20:9669/v1/localsite",
"identifier": "9e09efa0-0d00-46ed-929b-f86273b28205",
"rel": null,
"type": "LocalSiteApi"
},
"ProvisionedStorageInMB": 77906,
"RecoveryHostIdentifier": "f45d81e4-4ff5-4376-a5c8-20ffe8d52431.host-15",
"RecoverySite": {
"href": "https://192.168.10.20:9669/v1/peersites/057cab27-f02a-443a-989d-7f14341fa9c3",
"identifier": "057cab27-f02a-443a-989d-7f14341fa9c3",
"rel": null,
"type": "PeerSiteApi"
},
"SourceSite": "WCHL - NC",
"Status": 1,
"SubStatus": 0,
"TargetSite": "WCHL - CA",
"ThroughputInMB": 0,
"UsedStorageInMB": 77906,
"VmIdentifier": "d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-36",
"VmName": "ncesx1.nc.lab",
"Volumes": [
{
"VmVolumeIdentifier": "scsi:0:0"
}
],
"VpgIdentifier": "57f502ff-3c41-4aff-b20a-6638205b73cd",
"VpgName": "ExportStuff"
},
{
"ActualRPO": 7,
"EnabledActions": {
"IsFlrEnabled": true
},
"Entities": {
"Protected": 0,
"Recovery": 0,
"Source": 0,
"Target": 0
},
"HardwareVersion": "vmx-14",
"IOPs": 5,
"IsVmExists": true,
"JournalHardLimit": {
"LimitType": 1,
"LimitValue": 153600
},
"JournalUsedStorageMb": 642,
"JournalWarningThreshold": {
"LimitType": 1,
"LimitValue": 115200
},
"LastTest": null,
"Link": {
"href": "https://192.168.10.20:9669/v1/vms/d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-26?VpgIdentifier=57f502ff-3c41-4aff-b20a-6638205b73cd",
"identifier": "d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-26?VpgIdentifier=57f502ff-3c41-4aff-b20a-6638205b73cd",
"rel": null,
"type": "VmApi"
},
"Link_{0}": {
"href": "https://192.168.10.20:9669/v1/vms/d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-26?VpgIdentifier=57f502ff-3c41-4aff-b20a-6638205b73cd",
"rel": "self",
"type": "VmApi"
},
"OrganizationName": "",
"OutgoingBandWidthInMbps": 0.01953125,
"Priority": 1,
"ProtectedSite": {
"href": "https://192.168.10.20:9669/v1/localsite",
"identifier": "9e09efa0-0d00-46ed-929b-f86273b28205",
"rel": null,
"type": "LocalSiteApi"
},
"ProvisionedStorageInMB": 102400,
"RecoveryHostIdentifier": "f45d81e4-4ff5-4376-a5c8-20ffe8d52431.host-15",
"RecoverySite": {
"href": "https://192.168.10.20:9669/v1/peersites/057cab27-f02a-443a-989d-7f14341fa9c3",
"identifier": "057cab27-f02a-443a-989d-7f14341fa9c3",
"rel": null,
"type": "PeerSiteApi"
},
"SourceSite": "WCHL - NC",
"Status": 1,
"SubStatus": 0,
"TargetSite": "WCHL - CA",
"ThroughputInMB": 0,
"UsedStorageInMB": 11747,
"VmIdentifier": "d4a6a1d5-79e9-4308-990a-7c3e616f0908.vm-26",
"VmName": "nczvm.nc.lab",
"Volumes": [
{
"VmVolumeIdentifier": "scsi:0:0"
}
],
"VpgIdentifier": "57f502ff-3c41-4aff-b20a-6638205b73cd",
"VpgName": "ExportStuff"
}
]
+1
View File
@@ -0,0 +1 @@
7e79035e-fb8c-47fe-815c-12ddd41708e6.3e4cdd0d-1064-4022-921f-6265ad6d335a
+75
View File
@@ -0,0 +1,75 @@
{
"ActiveProcessesApi": {
"RunningFailOverTestApi": null
},
"ActualRPO": 6,
"BackupEnabled": false,
"ConfiguredRpoSeconds": 300,
"Entities": {
"Protected": 0,
"Recovery": 0,
"Source": 0,
"Target": 0
},
"FailSafeHistory": {
"ActualFailSafeHistory": 60,
"ConfiguredFailSafeHistory": 60,
"FailSafeDescription": ""
},
"HistoryStatusApi": {
"ActualHistoryInMinutes": 225,
"ConfiguredHistoryInMinutes": 60,
"EarliestCheckpoint": {
"CheckpointIdentifier": "166834",
"Tag": null,
"TimeStamp": "2019-07-11T13:47:23Z"
}
},
"IOPs": 8,
"LastTest": "2019-07-11T16:51:07.022Z",
"Link": {
"href": "https://192.168.222.1:7669/v1/vpgs/99c460c1-a4ec-48dd-8921-bbcca9cd29b9",
"identifier": "99c460c1-a4ec-48dd-8921-bbcca9cd29b9",
"rel": null,
"type": "VpgApi"
},
"Link_{0}": {
"href": "https://192.168.222.1:7669/v1/vpgs/99c460c1-a4ec-48dd-8921-bbcca9cd29b9",
"rel": "self",
"type": "VpgApi"
},
"OrganizationName": "",
"Priority": 1,
"ProgressPercentage": 0,
"ProtectedSite": {
"href": "https://192.168.222.1:7669/v1/localsite",
"identifier": "63a62dc2-ef6f-45aa-809f-9dbaeb8c06cf",
"rel": null,
"type": "LocalSiteApi"
},
"ProvisionedStorageInMB": 400,
"RecoverySite": {
"href": "https://192.168.222.1:7669/v1/peersites/3e4cdd0d-1064-4022-921f-6265ad6d335a",
"identifier": "3e4cdd0d-1064-4022-921f-6265ad6d335a",
"rel": null,
"type": "PeerSiteApi"
},
"ServiceProfile": null,
"ServiceProfileIdentifier": null,
"ServiceProfileName": "",
"SourceSite": "vSphere-Site01 at Zerto",
"Status": 1,
"SubStatus": 0,
"TargetSite": "vSphere-Site02 at Zerto",
"ThroughputInMB": 58.55859375,
"UsedStorageInMB": 400,
"VmsCount": 4,
"VpgIdentifier": "99c460c1-a4ec-48dd-8921-bbcca9cd29b9",
"VpgName": "Exchange",
"Zorg": {
"href": "https://192.168.222.1:7669/v1/zorgs/00000000-0000-0000-0000-000000000000",
"identifier": "00000000-0000-0000-0000-000000000000",
"rel": null,
"type": "ZorgApi"
}
}
+4
View File
@@ -0,0 +1,4 @@
{
"type": "Bearer",
"token": "N074r34l70k3n"
}
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global
+12 -14
View File
@@ -1,19 +1,17 @@
#Requires -Modules Pester #Requires -Modules Pester
$moduleFileName = "ZertoApiWrapper.psd1" $global:here = (Split-Path -Parent $MyInvocation.MyCommand.Path)
$here = (Split-Path -Parent $MyInvocation.MyCommand.Path).Replace("Tests", "ZertoApiWrapper") $global:function = ((Split-Path -leaf $MyInvocation.MyCommand.Path).Split('.'))[0]
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".")
$file = Get-ChildItem "$here\$sut"
$modulePath = $here -replace "Public", ""
$moduleFile = Get-ChildItem "$modulePath\$moduleFileName"
Get-Module -Name ZertoApiWrapper | Remove-Module -Force
Import-Module $moduleFile -Force
Describe $file.BaseName -Tag 'Unit' { Describe $global:function -Tag 'Unit', 'Source', 'Built' {
Context "$global:function::Parameter Unit Tests" {
}
Context "$global:function::Parameter Functional Tests" {
It "is valid Powershell (Has no script errors)" {
$contents = Get-Content -Path $file -ErrorAction Stop
$errors = $null
$null = [System.Management.Automation.PSParser]::Tokenize($contents, [ref]$errors)
$errors | Should -HaveCount 0
} }
} }
Remove-Variable -Name here -Scope Global
Remove-Variable -Name function -Scope Global

Some files were not shown because too many files have changed in this diff Show More