Test/NanoServerPackage.Install.Tests.ps1
# # # you need to modify # 1. $vhdPath to match your Nano Vm # 2. $requiredVersion needs to be updated if there are new packages published # # $vhdPath = "C:\test\rtmRefreshStdEdition.vhd" $culture = (Get-Culture).Name $dcbPackage = "Microsoft-NanoServer-DCB-Package" $computePackage = "Microsoft-NanoServer-Compute-Package" $containersPackage = "Microsoft-NanoServer-Containers-Package" $providerName = "NanoServerPackage" $requiredVersion = "10.0.14393.0" Describe "Install-NanoServerPackage Stand-Alone" { It "ERROR: Install with no name" { { Install-NanoServerPackage -Name '' } | should throw } It "ERROR: Install with wrong culture" { { Install-NanoServerPackage -Name $dcbPackage -Culture wrong } | should throw } It "ERROR: Install unknown packages" { { Install-NanoServerPackage -Name 'wrong package name' } | should throw } It "Install DCB package" { $package = Install-NanoServerPackage -Name $dcbPackage -Force $package.Name | should match $dcbPackage $package.Culture | should match $culture $getPackage = Get-Package -ProviderName $providerName -Name $package.Name -Culture $package.Culture $getPackage.Name | should match $package.Name $getPackage.Culture | should match $package.Culture } It "Install DCB package to vhd" { $package = Install-NanoServerPackage -Name $dcbPackage -ToVhd $vhdPath -Force $package.Name | should match $dcbPackage $package.Culture | should match $culture $getPackage = Get-Package -ProviderName $providerName -Name $package.Name -Culture $package.Culture -FromVhd $vhdPath $getPackage.Name | should match $package.Name $getPackage.Culture | should match $package.Culture } It "Install compute package with wrong culture" { $locale="it-it" $package = Install-NanoServerPackage -Name $dcbPackage -Culture $locale -Force $package.Name | should match $dcbPackage $package.Culture | should match $locale } It "Install compute package with correct culture" { $package = Install-NanoServerPackage -Name $computePackage -Culture $culture -Force $package.Name | should match $computePackage $package.Culture | should match $culture $getPackage = Get-Package -ProviderName $providerName -Name $package.Name -Culture $package.Culture $getPackage.Name | should match $package.Name $getPackage.Culture | should match $package.Culture } It "Install compute package with correct culture to vhd" { $package = Install-NanoServerPackage -Name $computePackage -Culture $culture -ToVhd $vhdPath -Force $package.Name | should match $computePackage $package.Culture | should match $culture $getPackage = Get-Package -ProviderName $providerName -Name $package.Name -Culture $package.Culture -FromVhd $vhdPath $getPackage.Name | should match $package.Name $getPackage.Culture | should match $package.Culture } It "Install compute package by piping from find" { $package = (Find-NanoServerPackage -Name *nanoserver-compute* | Install-NanoServerPackage -Force) $package.Name | should match $computePackage $package.Culture | should match $culture $getPackage = Get-Package -ProviderName $providerName -Name $package.Name -Culture $package.Culture $getPackage.Name | should match $package.Name $getPackage.Culture | should match $package.Culture } It "Install containers package with required version" { $package = Install-NanoServerPackage -Name $containersPackage -Culture $culture -RequiredVersion $requiredVersion -Force $package.Name | should match $containersPackage $package.Culture | should match $culture $package.Version.ToString() | should match $requiredVersion $getPackage = Get-Package -ProviderName $providerName -Name $package.Name -Culture $package.Culture -RequiredVersion $requiredVersion $getPackage.Name | should match $package.Name $getPackage.Culture | should match $package.Culture $getPackage.Version.ToString() | should match $requiredVersion } It "Install containers package with required version to vhd" { $package = Install-NanoServerPackage -Name $containersPackage -Culture $culture -RequiredVersion $requiredVersion -ToVhd $vhdPath -Force $package.Name | should match $containersPackage $package.Culture | should match $culture $package.Version | should match $requiredVersion $getPackage = Get-Package -ProviderName $providerName -Name $package.Name -Culture $package.Culture -RequiredVersion $requiredVersion -FromVhd $vhdPath $getPackage.Name | should match $package.Name $getPackage.Culture | should match $package.Culture } It "Install multiple packages to VHD" { $packages = Install-NanoServerPackage -Name $containersPackage,$computePackage -Culture $culture -Force $packages.Count | should be 2 $packages.Name -contains $containersPackage | should be $true $packages.Name -contains $computePackage | should be $true } It "Install multiple packages to VHD" { $packages = Install-NanoServerPackage -Name $containersPackage,$computePackage -Culture $culture -Force -ToVhd $vhdPath $packages.Count | should be 2 $packages.Name -contains $containersPackage | should be $true $packages.Name -contains $computePackage | should be $true } } Describe "Install-NanoServerPackage With OneGet" { It "ERROR: Install with wildcard name" { $Error.Clear() Install-Package -Name '*' -ProviderName $providerName -Force -ErrorAction SilentlyContinue $Error[0].FullyQualifiedErrorId | should match 'WildCardCharsAreNotSupported,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage' } It "ERROR: Install with wrong culture" { $Error.Clear() Install-Package -Name $dcbPackage -Culture wrong -ProviderName $providerName -Force -ErrorAction SilentlyContinue $Error[0].FullyQualifiedErrorId | should match 'NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage' } It "ERROR: Install unknown packages" { $Error.Clear() Install-Package -ProviderName $providerName -Name 'wrong package name' -Force -ErrorAction SilentlyContinue $Error[0].FullyQualifiedErrorId | should match 'NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage' } It "Install DCB package" { $package = Install-Package -ProviderName $providerName -Name $dcbPackage -Force $package.Name | should match $dcbPackage $package.Culture | should match $culture $getPackage = Get-Package -ProviderName $providerName -Name $package.Name -Culture $package.Culture $getPackage.Name | should match $package.Name $getPackage.Culture | should match $package.Culture } It "Install DCB package to vhd" { $package = Install-Package -ProviderName $providerName -Name $dcbPackage -ToVhd $vhdPath -Force $package.Name | should match $dcbPackage $package.Culture | should match $culture $getPackage = Get-Package -ProviderName $providerName -Name $package.Name -Culture $package.Culture -FromVhd $vhdPath $getPackage.Name | should match $package.Name $getPackage.Culture | should match $package.Culture } It "Install compute package with wrong culture" { $locale="it-it" $package = Install-Package -ProviderName $providerName -Name $dcbPackage -Culture $locale -Force -ErrorAction SilentlyContinue $package.Culture | should match $locale } It "Install compute package with correct culture" { $package = Install-Package -ProviderName $providerName -Name $computePackage -Culture $culture -Force $package.Name | should match $computePackage $package.Culture | should match $culture $getPackage = Get-Package -ProviderName $providerName -Name $package.Name -Culture $package.Culture $getPackage.Name | should match $package.Name $getPackage.Culture | should match $package.Culture } It "Install compute package with correct culture to vhd" { $package = Install-Package -ProviderName $providerName -Name $computePackage -Culture $culture -ToVhd $vhdPath -Force $package.Name | should match $computePackage $package.Culture | should match $culture $getPackage = Get-Package -ProviderName $providerName -Name $package.Name -Culture $package.Culture -FromVhd $vhdPath $getPackage.Name | should match $package.Name $getPackage.Culture | should match $package.Culture } It "Install compute package by piping from find" { $package = (Find-Package -ProviderName $providerName -Name $computePackage | Install-Package -Force) $package.Name | should match $computePackage $package.Culture | should match $culture $getPackage = Get-Package -ProviderName $providerName -Name $package.Name -Culture $package.Culture $getPackage.Name | should match $package.Name $getPackage.Culture | should match $package.Culture } It "Install containers package with required version" { $package = Install-Package -ProviderName $providerName -Name $containersPackage -Culture $culture -RequiredVersion $requiredVersion -Force $package.Name | should match $containersPackage $package.Culture | should match $culture $package.Version.ToString() | should match $requiredVersion $getPackage = Get-Package -ProviderName $providerName -Name $package.Name -Culture $package.Culture -RequiredVersion $requiredVersion $getPackage.Name | should match $package.Name $getPackage.Culture | should match $package.Culture $getPackage.Version.ToString() | should match $requiredVersion } It "Install containers package with required version to vhd" { $package = Install-Package $containersPackage -ProviderName $providerName -Culture $culture -RequiredVersion $requiredVersion -ToVhd $vhdPath -Force $package.Name | should match $containersPackage $package.Culture | should match $culture $package.Version | should match $requiredVersion $getPackage = Get-Package -ProviderName $providerName -Name $package.Name -Culture $package.Culture -RequiredVersion $requiredVersion -FromVhd $vhdPath $getPackage.Name | should match $package.Name $getPackage.Culture | should match $package.Culture } It "Install multiple packages to VHD" { $packages = Install-Package -ProviderName $providerName -Name $containersPackage,$computePackage -Culture $culture -Force $packages.Count | should be 2 $packages.Name -contains $containersPackage | should be $true $packages.Name -contains $computePackage | should be $true } It "Install multiple packages to VHD" { $packages = Install-Package -ProviderName $providerName -Name $containersPackage,$computePackage -Culture $culture -Force -ToVhd $vhdPath $packages.Count | should be 2 $packages.Name -contains $containersPackage | should be $true $packages.Name -contains $computePackage | should be $true } } |