Tests/Get-TacticCounter.Tests.ps1

#Import-Module
& "$PSScriptRoot\updateATAP.ps1"

InModuleScope ATAPHtmlReport {

    Describe "Testing Get-TacticCounter" {
        Context "When counting for a tactic without mapped tests" {
            It "Should return 0" {
                $AuditInfos = @{Id = "1.1.4"
                Status         = [AuditInfoStatus]::False
                    },
                @{Id       = "1.2.3"
                    Status = [AuditInfoStatus]::True
                },
                @{Id       = "1.2.4"
                Status = [AuditInfoStatus]::True
                },
                @{Id       = "1.2.6"
                Status = [AuditInfoStatus]::True
                },
                @{Id       = "1.2.5"
                    Status = [AuditInfoStatus]::False
                }, 
                @{Id       = "1.4.5"
                    Status = [AuditInfoStatus]::True
                }

                $Subsection = @{AuditInfos = $AuditInfos }

                $Section1 = @{Title = "Cis Benchmarks"
                    SubSections     = $Subsection
                }

                $Sections = $Section1


                $Mappings = $Sections | Where-Object { $_.Title -eq "CIS Benchmarks" } | ForEach-Object { return $_.SubSections } | ForEach-Object { return $_.AuditInfos } | Merge-CisAuditsToMitreMap
                
                $result = Get-TacticCounter -tactic $Mappings.Map["TA0042"] $Mappings.Map
                $result | Should -Be 0
            }
        }

        Context "Counter should be 1 if a technique is a 100% fullfilled" {
            It "Should be 1" {
                $AuditInfos = @{Id = "18.9.48.13"
                    Status = [AuditInfoStatus]::True
                },
                @{Id       = "18.9.87.1"
                    Status = [AuditInfoStatus]::True
                }

                $Subsection = @{AuditInfos = $AuditInfos }

                $Section1 = @{Title = "Cis Benchmarks"
                    SubSections     = $Subsection
                }

                $Sections = $Section1


                $Mappings = $Sections | Where-Object { $_.Title -eq "CIS Benchmarks" } | ForEach-Object { return $_.SubSections } | ForEach-Object { return $_.AuditInfos } | Merge-CisAuditsToMitreMap
                
                $Mappings.Map["TA0043"]["T1592"]["18.9.87.1"] | Should -Be True
                $Mappings.Map["TA0043"]["T1592"]["18.9.48.13"] | Should -Be True
                $Mappings.Map["TA0043"]["T1592"].count | Should -Be 2
                Get-TacticCounter "TA0043" $Mappings.Map | Should -Be 1
            }
        }
    }
}