Tests/Import-OriAzBopPsd.tests.ps1
. $PSScriptRoot\..\Private\Invoke-ResolveDependency.ps1 . $PSScriptRoot\..\Public\Wait-OriAzBopModuleComplete.ps1 . $PSScriptRoot\..\Public\Register-OriAzBopRepository.ps1 . $PSScriptRoot\..\Public\Install-OriAzBopPrerequisity.ps1 . $PSScriptRoot\..\Private\Invoke-OriAzExrExceptionRetry.ps1 . $PSScriptRoot\..\Public\Import-OriAzBopPsd.ps1 Describe 'OriAzBopBoostrapOriPsgallery\Import-OriAzBopPsd' { Context 'Succesfull excution Module is not yet installed, install with prefix' { Mock -CommandName Invoke-WebRequest -Verifiable -MockWith { # Some source for Invoke-Expression return ";" } $testPath = "TestDrive:\test.psd1" Set-Content $testPath -value "my test text." Mock -CommandName Install-OriAzBopPrerequisity -Verifiable Mock -CommandName Register-OriAzBopRepository -Verifiable Mock -CommandName Invoke-ResolveDependency -Verifiable Mock -CommandName Wait-OriAzBopModuleComplete -Verifiable Mock -CommandName Import-Module -Verifiable Mock -CommandName Write-Verbose -Verifiable it 'Should be succesfully processed' { { $password = ConvertTo-SecureString 'xbchuuuuhaaaatest' -AsPlainText -Force $RepositoryCredential = New-Object System.Management.Automation.PSCredential 'PackageManage@oriflame.net', $password $testPath = "TestDrive:\test.psd1" Import-OriAzBopPsd ` -Path $testPath ` -Credential $RepositoryCredential ` -Prefix "XXX" } | Should -Not -Throw } Assert-MockCalled Invoke-WebRequest -Times 1 -Exactly -ParameterFilter { $Uri -eq "https://raw.githubusercontent.com/microsoft/artifacts-credprovider/master/helpers/installcredprovider.ps1" } Assert-MockCalled Install-OriAzBopPrerequisity -Times 1 -Exactly -ParameterFilter { $Name -eq "PowerShellGet" -and $MinimumVersion -eq [Version]::new(2, 2, 5) } Assert-MockCalled Install-OriAzBopPrerequisity -Times 1 -Exactly -ParameterFilter { $Name -eq "PackageManagement" -and $MinimumVersion -eq [Version]::new(1, 4, 7) } Assert-MockCalled Register-OriAzBopRepository -Times 1 -Exactly -ParameterFilter { $PsProjectName.Contains("PackageManagementFeed") -and ` $NugetProjectName.Contains("DeploymentPackages") -and ` ![string]::IsNullOrEmpty($RepositoryCredential) } Assert-MockCalled Invoke-ResolveDependency -Times 1 -Exactly -ParameterFilter { $InstalledLocation -eq "TestDrive:\test.psd1" ` -and ![string]::IsNullOrEmpty($Credential) ` -and $Repository -eq "PackageManagementFeed" ` } Assert-MockCalled Wait-OriAzBopModuleComplete -Times 1 -Exactly Assert-MockCalled Import-Module -Times 1 -Exactly -ParameterFilter { $Prefix -eq "XXX" } Assert-MockCalled Write-Verbose -Times 1 -Exactly -ParameterFilter { $Message -eq "-- End of Import-OriAzBopPsd --" } Assert-VerifiableMock } Context 'Succesfull excution Module is not yet installed, install without prefix' { Mock -CommandName Invoke-WebRequest -Verifiable -MockWith { # Some source for Invoke-Expression return ";" } $testPath = "TestDrive:\test.psd1" Set-Content $testPath -value "my test text." Mock -CommandName Install-OriAzBopPrerequisity -Verifiable Mock -CommandName Register-OriAzBopRepository -Verifiable Mock -CommandName Invoke-ResolveDependency -Verifiable Mock -CommandName Wait-OriAzBopModuleComplete -Verifiable Mock -CommandName Import-Module -Verifiable Mock -CommandName Write-Verbose -Verifiable it 'Should be succesfully processed' { { $password = ConvertTo-SecureString 'xbchuuuuhaaaatest' -AsPlainText -Force $RepositoryCredential = New-Object System.Management.Automation.PSCredential 'PackageManage@oriflame.net', $password $testPath = "TestDrive:\test.psd1" Import-OriAzBopPsd ` -Path $testPath ` -Credential $RepositoryCredential } | Should -Not -Throw } Assert-MockCalled Invoke-WebRequest -Times 1 -Exactly -ParameterFilter { $Uri -eq "https://raw.githubusercontent.com/microsoft/artifacts-credprovider/master/helpers/installcredprovider.ps1" } Assert-MockCalled Install-OriAzBopPrerequisity -Times 1 -Exactly -ParameterFilter { $Name -eq "PowerShellGet" -and $MinimumVersion -eq [Version]::new(2, 2, 5) } Assert-MockCalled Install-OriAzBopPrerequisity -Times 1 -Exactly -ParameterFilter { $Name -eq "PackageManagement" -and $MinimumVersion -eq [Version]::new(1, 4, 7) } Assert-MockCalled Register-OriAzBopRepository -Times 1 -Exactly -ParameterFilter { $PsProjectName.Contains("PackageManagementFeed") -and ` $NugetProjectName.Contains("DeploymentPackages") -and ` ![string]::IsNullOrEmpty($RepositoryCredential) } Assert-MockCalled Invoke-ResolveDependency -Times 1 -Exactly -ParameterFilter { $InstalledLocation -eq "TestDrive:\test.psd1" ` -and ![string]::IsNullOrEmpty($Credential) ` -and $Repository -eq "PackageManagementFeed" ` } Assert-MockCalled Wait-OriAzBopModuleComplete -Times 1 -Exactly Assert-MockCalled Import-Module -Times 1 -Exactly -ParameterFilter { [string]::IsNullOrEmpty($Prefix) } Assert-MockCalled Write-Verbose -Times 1 -Exactly -ParameterFilter { $Message -eq "-- End of Import-OriAzBopPsd --" } Assert-VerifiableMock } Context 'Succesfull excution Module is not yet installed skip install credentail provider' { Mock -CommandName Invoke-WebRequest -MockWith { # Some source for Invoke-Expression return ";" } $testPath = "TestDrive:\test.psd1" Set-Content $testPath -value "my test text." Mock -CommandName Install-OriAzBopPrerequisity -Verifiable Mock -CommandName Register-OriAzBopRepository -Verifiable Mock -CommandName Invoke-ResolveDependency -Verifiable Mock -CommandName Wait-OriAzBopModuleComplete -Verifiable Mock -CommandName Import-Module -Verifiable Mock -CommandName Write-Verbose -Verifiable it 'Should be succesfully processed' { { $password = ConvertTo-SecureString 'xbchuuuuhaaaatest' -AsPlainText -Force $RepositoryCredential = New-Object System.Management.Automation.PSCredential 'PackageManage@oriflame.net', $password $testPath = "TestDrive:\test.psd1" Import-OriAzBopPsd ` -Path $testPath ` -Credential $RepositoryCredential ` -SkipInstallCredProvider } | Should -Not -Throw } Assert-MockCalled Invoke-WebRequest -Times 0 -Exactly -ParameterFilter { $Uri -eq "https://raw.githubusercontent.com/microsoft/artifacts-credprovider/master/helpers/installcredprovider.ps1" } Assert-MockCalled Install-OriAzBopPrerequisity -Times 1 -Exactly -ParameterFilter { $Name -eq "PowerShellGet" -and $MinimumVersion -eq [Version]::new(2, 2, 5) } Assert-MockCalled Install-OriAzBopPrerequisity -Times 1 -Exactly -ParameterFilter { $Name -eq "PackageManagement" -and $MinimumVersion -eq [Version]::new(1, 4, 7) } Assert-MockCalled Register-OriAzBopRepository -Times 1 -Exactly -ParameterFilter { $PsProjectName.Contains("PackageManagementFeed") -and ` $NugetProjectName.Contains("DeploymentPackages") -and ` ![string]::IsNullOrEmpty($RepositoryCredential) } Assert-MockCalled Invoke-ResolveDependency -Times 1 -Exactly -ParameterFilter { $InstalledLocation -eq "TestDrive:\test.psd1" ` -and ![string]::IsNullOrEmpty($Credential) ` -and $Repository -eq "PackageManagementFeed" ` } Assert-MockCalled Wait-OriAzBopModuleComplete -Times 1 -Exactly Assert-MockCalled Import-Module -Times 1 -Exactly Assert-MockCalled Write-Verbose -Times 1 -Exactly -ParameterFilter { $Message -eq "-- End of Import-OriAzBopPsd --" } Assert-VerifiableMock } Context 'Succesfull excution Module is not yet installed with skip import' { Mock -CommandName Invoke-WebRequest -Verifiable -MockWith { # Some source for Invoke-Expression return ";" } $testPath = "TestDrive:\test.psd1" Set-Content $testPath -value "my test text." Mock -CommandName Install-OriAzBopPrerequisity -Verifiable Mock -CommandName Register-OriAzBopRepository -Verifiable Mock -CommandName Invoke-ResolveDependency -Verifiable Mock -CommandName Wait-OriAzBopModuleComplete Mock -CommandName Import-Module Mock -CommandName Write-Verbose -Verifiable it 'Should be succesfully processed' { { $password = ConvertTo-SecureString 'xbchuuuuhaaaatest' -AsPlainText -Force $RepositoryCredential = New-Object System.Management.Automation.PSCredential 'PackageManage@oriflame.net', $password $testPath = "TestDrive:\test.psd1" Import-OriAzBopPsd ` -Path $testPath ` -Credential $RepositoryCredential ` -SkipImport } | Should -Not -Throw } Assert-MockCalled Invoke-WebRequest -Times 1 -Exactly -ParameterFilter { $Uri -eq "https://raw.githubusercontent.com/microsoft/artifacts-credprovider/master/helpers/installcredprovider.ps1" } Assert-MockCalled Install-OriAzBopPrerequisity -Times 1 -Exactly -ParameterFilter { $Name -eq "PowerShellGet" -and $MinimumVersion -eq [Version]::new(2, 2, 5) } Assert-MockCalled Install-OriAzBopPrerequisity -Times 1 -Exactly -ParameterFilter { $Name -eq "PackageManagement" -and $MinimumVersion -eq [Version]::new(1, 4, 7) } Assert-MockCalled Register-OriAzBopRepository -Times 1 -Exactly -ParameterFilter { $PsProjectName.Contains("PackageManagementFeed") -and ` $NugetProjectName.Contains("DeploymentPackages") -and ` ![string]::IsNullOrEmpty($RepositoryCredential) } Assert-MockCalled Invoke-ResolveDependency -Times 1 -Exactly -ParameterFilter { $InstalledLocation -eq "TestDrive:\test.psd1" ` -and ![string]::IsNullOrEmpty($Credential) ` -and $Repository -eq "PackageManagementFeed" ` } Assert-MockCalled Wait-OriAzBopModuleComplete -Times 0 -Exactly Assert-MockCalled Import-Module -Times 0 -Exactly Assert-MockCalled Write-Verbose -Times 1 -Exactly -ParameterFilter { $Message -eq "-- End of Import-OriAzBopPsd --" } Assert-VerifiableMock } } |