Tests/Public/Update-OnypheFacetsFilters.Tests.ps1
|
BeforeDiscovery { Import-Module (Join-Path $PSScriptRoot '..\..\Use-Onyphe.psd1') -DisableNameChecking -Force } Describe 'Update-OnypheFacetsFilters' -Tag 'Unit' { BeforeEach { Mock -ModuleName Use-Onyphe Read-OnypheConfigFile { [PSCustomObject]@{ version = '1.0' DataModel = [PSCustomObject]@{ apis = $null; filters = $null; functions = $null } } } Mock -ModuleName Use-Onyphe Save-OnypheConfigFile { } Mock -ModuleName Use-Onyphe Set-OnypheAPIKey { } Mock -ModuleName Use-Onyphe Get-OnypheUserInfo { [PSCustomObject]@{ results = [PSCustomObject]@{ apis = @('user', 'simple/ctl') filters = @('ip') functions = @('exists') } } } } It 'writes apis/filters/functions from Get-OnypheUserInfo into Config.DataModel' { Update-OnypheFacetsFilters Should -Invoke -ModuleName Use-Onyphe Save-OnypheConfigFile -Times 1 -Exactly -ParameterFilter { (@($Config.DataModel.apis) -join ',') -eq 'user,simple/ctl' -and (@($Config.DataModel.filters) -join ',') -eq 'ip' -and (@($Config.DataModel.functions) -join ',') -eq 'exists' } } It 'calls Set-OnypheAPIKey when -APIKey is supplied' { Update-OnypheFacetsFilters -APIKey ('a' * 40) Should -Invoke -ModuleName Use-Onyphe Set-OnypheAPIKey -Times 1 -Exactly -ParameterFilter { $APIKey -eq ('a' * 40) } } It 'does not call Set-OnypheAPIKey when -APIKey is omitted' { Update-OnypheFacetsFilters Should -Invoke -ModuleName Use-Onyphe Set-OnypheAPIKey -Times 0 } It 'passes -UseBetaFeatures through to Get-OnypheUserInfo' { Update-OnypheFacetsFilters -UseBetaFeatures Should -Invoke -ModuleName Use-Onyphe Get-OnypheUserInfo -Times 1 -Exactly -ParameterFilter { $UseBetaFeatures -eq $true } } It 'does not write the config file when -WhatIf is used' { Update-OnypheFacetsFilters -WhatIf Should -Invoke -ModuleName Use-Onyphe Save-OnypheConfigFile -Times 0 } } |