MsrcSecurityUpdates.tests.ps1

#------------------------------------------------------
# Copyright (c) Microsoft. All rights reserved.
# Licensed under the MIT license. See LICENSE file in the project root for full license information.
#
# This project serves as example code on how to interact with the Microsoft Security Updates API.
#------------------------------------------------------

$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-MsrcCvrfDocumentAffectedSoftware
Get-Help Get-MsrcCvrfDocumentAffectedSoftware -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 
    }
}

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-MsrcCvrfDocumentAffectedSoftware' {
    It 'Get-MsrcCvrfDocumentAffectedSoftware by pipeline' {
        Get-MsrcCvrfDocument -ID 2016-Nov -ApiKey $msrcApiKey -Verbose |
        Get-MsrcCvrfDocumentAffectedSoftware -Verbose |
        Should Not BeNullOrEmpty
    }

    It 'Get-MsrcCvrfDocumentAffectedSoftware by parameters' {
        $cvrfDocument = Get-MsrcCvrfDocument -ID 2016-Nov -ApiKey $msrcApiKey -Verbose
        Get-MsrcCvrfDocumentAffectedSoftware -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
    }
}