MsrcSecurityUpdates.tests.ps1



$msrcApiKey = ''

Import-Module -Name MsrcSecurityUpdates -Force

Get-Help Get-MsrcSecurityUpdate
Get-Help Get-MsrcSecurityUpdate -Examples

Get-Help Get-MsrcCvrfDocument
Get-Help Get-MsrcCvrfDocument -Examples

Get-Help Get-MsrcSecurityBulletinHtml
Get-Help Get-MsrcSecurityBulletinHtml -Examples

Get-Help Get-MsrcCvrfAffectedSoftware
Get-Help Get-MsrcCvrfAffectedSoftware -Examples

Describe 'Function: Get-MsrcSecurityUpdateMSRC (calls the /Updates API)' {

    It "Get-MsrcSecurityUpdate - all" {
        Get-MsrcSecurityUpdate -ApiKey $msrcApiKey -Verbose | 
        Should Not BeNullOrEmpty 
    }

    It "Get-MsrcSecurityUpdate - by year" {
        Get-MsrcSecurityUpdate -ApiKey $msrcApiKey -Year 2017 -Verbose | 
        Should Not BeNullOrEmpty 
    }

    It "Get-MsrcSecurityUpdate - by vulnerability" {
        Get-MsrcSecurityUpdate -ApiKey $msrcApiKey -Vulnerability CVE-2017-0003 -Verbose | 
        Should Not BeNullOrEmpty 
    }

    It "Get-MsrcSecurityUpdate - by cvrf" {
        Get-MsrcSecurityUpdate -ApiKey $msrcApiKey -Cvrf 2017-Jan -Verbose | 
        Should Not BeNullOrEmpty 
    }

    It "Get-MsrcSecurityUpdate - by date - before" {
        Get-MsrcSecurityUpdate -ApiKey $msrcApiKey -Before 2017-01-01 -Verbose | 
        Should Not BeNullOrEmpty 
    }

    It "Get-MsrcSecurityUpdate - by date - after" {
        Get-MsrcSecurityUpdate -ApiKey $msrcApiKey -After 2017-01-01 -Verbose | 
        Should Not BeNullOrEmpty 
    }

    It "Get-MsrcSecurityUpdate - by date - before and after" {
        Get-MsrcSecurityUpdate -ApiKey $msrcApiKey -Before 2017-01-01 -After 2016-10-01 -Verbose | 
        Should Not BeNullOrEmpty 
    }
}

Describe 'Function: Get-MsrcCvrfDocument (calls the MSRC /cvrf API)' {

    It "Get-MsrcCvrfDocument - 2016-Nov" {
        Get-MsrcCvrfDocument -ID 2016-Nov -ApiKey $msrcApiKey -Verbose | 
        Should Not BeNullOrEmpty 
    }

    It "Get-MsrcCvrfDocument - 2016-Nov - as JSON" {
        Get-MsrcCvrfDocument -ID 2016-Nov -ApiKey $msrcApiKey -AsJson -Verbose | 
        Should Not BeNullOrEmpty 
    }

    It "Get-MsrcCvrfDocument - 2016-Nov - as XML" {
        Get-MsrcCvrfDocument -ID 2016-Nov -ApiKey $msrcApiKey -AsXml -Verbose | 
        Should Not BeNullOrEmpty 
    }

    Get-MsrcSecurityUpdate -ApiKey $msrcApiKey | 
    Foreach-Object {
        It "Get-MsrcCvrfDocument - none shall throw: $($PSItem.ID)" {
            {
                Get-MsrcCvrfDocument -ApiKey $msrcApiKey -ID $PSItem.ID | 
                Out-Null
            } |
            Should Not Throw
        }
    }
}

Describe 'Function: Get-MsrcSecurityBulletinHtml (generates the MSRC Security Bulletin HTML Report)' {
    It 'Security Bulletin Report' {
        Get-MsrcCvrfDocument -ID 2016-Nov -ApiKey $msrcApiKey -Verbose |
        Get-MsrcSecurityBulletinHtml -Verbose |
        Should Not BeNullOrEmpty
    }
}

Describe 'Function: Get-MsrcCvrfAffectedSoftware' {
    It 'Get-MsrcCvrfAffectedSoftware by pipeline' {
        Get-MsrcCvrfDocument -ID 2016-Nov -ApiKey $msrcApiKey -Verbose |
        Get-MsrcCvrfAffectedSoftware -Verbose |
        Should Not BeNullOrEmpty
    }

    It 'Get-MsrcCvrfAffectedSoftware by parameters' {
        $cvrfDocument = Get-MsrcCvrfDocument -ID 2016-Nov -ApiKey $msrcApiKey -Verbose
        Get-MsrcCvrfAffectedSoftware -Vulnerability $cvrfDocument.Vulnerability -ProductTree $cvrfDocument.ProductTree |
        Should Not BeNullOrEmpty
    }
}

Describe 'Function: Get-MsrcCvrfProductVulnerability' {
    It 'Get-MsrcCvrfProductVulnerability by pipeline' {
        Get-MsrcCvrfDocument -ID 2016-Nov -ApiKey $msrcApiKey -Verbose |
        Get-MsrcCvrfProductVulnerability -Verbose |
        Should Not BeNullOrEmpty
    }

    It 'Get-MsrcCvrfProductVulnerability by parameters' {
        $cvrfDocument = Get-MsrcCvrfDocument -ID 2016-Nov -ApiKey $msrcApiKey -Verbose
        Get-MsrcCvrfProductVulnerability -Vulnerability $cvrfDocument.Vulnerability -ProductTree $cvrfDocument.ProductTree -DocumentTracking $cvrfDocument.DocumentTracking -DocumentTitle $cvrfDocument.DocumentTitle  |
        Should Not BeNullOrEmpty
    }
}

Describe 'Function: Get-MsrcVulnerabilityReportHtml (generates the MSRC Vulnerability Summary HTML Report)' {
    It 'Vulnerability Summary Report - does not throw' {
        {
            Get-MsrcCvrfDocument -ID 2016-Nov -ApiKey $msrcApiKey |
            Get-MsrcVulnerabilityReportHtml -Verbose | Out-Null
        } |
        Should Not Throw
    }

    Get-MsrcSecurityUpdate -ApiKey $msrcApiKey | 
    Foreach-Object {
        It "Vulnerability Summary Report - none shall throw: $($PSItem.ID)" {
            {
                Get-MsrcCvrfDocument -ApiKey $msrcApiKey -ID $PSItem.ID |
                Get-MsrcVulnerabilityReportHtml | 
                Out-Null
            } |
            Should Not Throw
        }
    }
}