Private/Document/Tests/Add-OpenApiFinding.Tests.ps1
|
BeforeAll { Import-Module -Name (Join-Path -Path $PSScriptRoot -ChildPath '../../../tcs.openapi.psd1') -Force } Describe 'Add-OpenApiFinding' { It 'adds a finding with the documented shape' { InModuleScope tcs.openapi { $context = Get-OpenApiNormalizationContext -Root $null -SourceVersion '3.0.0' Add-OpenApiFinding -Context $context -Severity Warning -Code 'OA010' -Pointer '/paths/~1a/get' -Message 'm' -Operation 'getA' $finding = $context.Findings[0] $finding.PSObject.TypeNames | Should -Contain 'Tcs.OpenApi.Finding' @($finding.PSObject.Properties.Name) | Should -Be @('Severity', 'Code', 'Pointer', 'Message', 'Operation') $finding.Severity | Should -Be 'Warning' $finding.Operation | Should -Be 'getA' } } It 'defaults Operation to the operation being normalised, and to null outside one' { InModuleScope tcs.openapi { $context = Get-OpenApiNormalizationContext -Root $null Add-OpenApiFinding -Context $context -Severity Error -Code 'OA021' -Pointer '/a' -Message 'm' $context.CurrentOperation = 'op1' Add-OpenApiFinding -Context $context -Severity Error -Code 'OA021' -Pointer '/b' -Message 'm' Add-OpenApiFinding -Context $context -Severity Error -Code 'OA021' -Pointer '/c' -Message 'm' -Operation $null $context.Findings[0].Operation | Should -BeNullOrEmpty $context.Findings[1].Operation | Should -Be 'op1' $context.Findings[2].Operation | Should -BeNullOrEmpty } } It 'adds each code, pointer and operation once' { InModuleScope tcs.openapi { $context = Get-OpenApiNormalizationContext -Root $null 1..3 | ForEach-Object { Add-OpenApiFinding -Context $context -Severity Information -Code 'OA022' -Pointer '/x' -Message 'm' } Add-OpenApiFinding -Context $context -Severity Information -Code 'OA022' -Pointer '/x' -Message 'm' -Operation 'other' $context.Findings.Count | Should -Be 2 } } It 'maps converted Swagger 2.0 pointers back to definitions and securityDefinitions' { InModuleScope tcs.openapi { $context = Get-OpenApiNormalizationContext -Root $null -SourceVersion '2.0' Add-OpenApiFinding -Context $context -Severity Error -Code 'OA021' -Pointer '/components/schemas/Pet/properties/a' -Message 'm' Add-OpenApiFinding -Context $context -Severity Warning -Code 'OA030' -Pointer '/components/securitySchemes/x' -Message 'm' $context.Findings[0].Pointer | Should -BeExactly '/definitions/Pet/properties/a' $context.Findings[1].Pointer | Should -BeExactly '/securityDefinitions/x' } } It 'rejects unknown severities' { InModuleScope tcs.openapi { $context = Get-OpenApiNormalizationContext -Root $null { Add-OpenApiFinding -Context $context -Severity Fatal -Code 'X' -Pointer '' -Message 'm' } | Should -Throw } } } |