tests/Get-DbaDiskSpace.Tests.ps1
$commandName = $MyInvocation.MyCommand.Name.Replace(".Tests.ps1", "") Write-Host -Object "Running $PSCommandPath" -ForegroundColor Cyan . "$PSScriptRoot\constants.ps1" Describe "$commandName Integration Tests" -Tags "IntegrationTests" { Context "Disks are properly retrieved" { $results = Get-DbaDiskSpace -ComputerName $env:COMPUTERNAME It "returns at least the system drive" { $results.Name -contains "$env:SystemDrive\" | Should Be $true } $results = Get-DbaDiskSpace -ComputerName $env:COMPUTERNAME | Where-Object Name -eq "$env:SystemDrive\" It "has some valid properties" { $results.BlockSize -gt 0 | Should Be $true $results.SizeInGB -gt 0 | Should Be $true } } Context "CheckForSql works with mount points" { Mock -ModuleName 'dbatools' -CommandName 'Connect-SqlInstance' -ParameterFilter { $SqlInstance -in ('MadeUpServer', 'MadeUpServer\MadeUpInstance') } -MockWith { $object = [PSCustomObject] @{ Version = @{ Major = 13 } } $object | Add-Member -Name 'Query' -MemberType ScriptMethod -Value { return @{ SqlDisk = @('D:\Data\') } } return $object } Mock -ModuleName 'dbatools' -CommandName 'Get-DbaSqlService' -ParameterFilter { $ComputerName.ComputerName -eq 'MadeUpServer' } -MockWith { return @( @{ ComputerName = 'MadeUpServer' ServiceName = 'MSSQLSERVER' ServiceType = 'Engine' InstanceName = 'MSSQLSERVER' DisplayName = 'SQL Server (MSSQLSERVER)' StartName = 'FAKEDOMAIN\FAKEUSER' State = 'Running' StartMode = 'Automatic' }, @{ ComputerName = 'MadeUpServer' ServiceName = 'MSSQLSERVER$MADEUPINSTANCE' ServiceType = 'Engine' InstanceName = 'MadeUpInstance' DisplayName = 'SQL Server (MSSQLSERVER)' StartName = 'FAKEDOMAIN\FAKEUSER' State = 'Running' StartMode = 'Automatic' } ) } Mock -ModuleName 'dbatools' -CommandName 'Get-DbaCmObject' -ParameterFilter { $ComputerName::InputObject -eq 'MadeUpServer' -and $Query -like '*Win32_Volume*' } -MockWith { return @( @{ Name = 'D:\Data\' Label = 'Log' Capacity = 32209043456 Freespace = 11653545984 BlockSize = 65536 FileSystem = 'NTFS' DriveType = 3 DriveLetter = '' }, @{ Name = 'C:\' Label = 'OS' Capacity = 32209043456 Freespace = 11653545984 BlockSize = 4096 FileSystem = 'NTFS' DriveType = 2 DriveLetter = 'C:' } ) } It -Skip "SQL Server drive is found in there somewhere" { $results = Get-DbaDiskSpace -ComputerName 'MadeUpServer' -CheckForSql -EnableException $true | Should -BeIn $results.IsSqlDisk } Assert-MockCalled -ModuleName 'dbatools' -CommandName 'Get-DbaCmObject' -Times 0 Assert-MockCalled -ModuleName 'dbatools' -CommandName 'Get-DbaSqlService' -Times 0 Assert-MockCalled -ModuleName 'dbatools' -CommandName 'Connect-SqlInstance' -Times 0 } Context "CheckForSql returns IsSqlDisk property with a value (likely false)" { Mock -ModuleName 'dbatools' -CommandName 'Get-DbaCmObject' -ParameterFilter { $Query -like '*Win32_Volume*' } -MockWith { return @( @{ Name = 'D:\Data\' Label = 'Log' Capacity = 32209043456 Freespace = 11653545984 BlockSize = 65536 FileSystem = 'NTFS' DriveType = 3 DriveLetter = '' }, @{ Name = 'C:\' Label = 'OS' Capacity = 32209043456 Freespace = 11653545984 BlockSize = 4096 FileSystem = 'NTFS' DriveType = 2 DriveLetter = 'C:' }, @{ Name = 'T:\' Label = 'Data' Capacity = 32209043456 Freespace = 11653545984 BlockSize = 4096 FileSystem = 'NTFS' DriveType = 2 DriveLetter = 'T:' } ) } It "SQL Server drive is not found in there somewhere" { $results = Get-DbaDiskSpace -ComputerName $env:COMPUTERNAME -CheckForSql -WarningAction SilentlyContinue $false | Should BeIn $results.IsSqlDisk } } } |