Tests/integration/default/pester/default.tests.ps1

describe "Hubot" {

    Context "File Paths and Installs" {
        $pathsToTest = @(
            'C:\Program Files\Git\bin\git.exe'
            'C:\Program Files\nodejs\node.exe'
            'C:\nssm'
            'C:\myhubot'
            'C:\myhubot\node_modules'
            'C:\myhubot\node_modules\edge'
            'C:\myhubot\node_modules\edge-ps'
            'C:\myhubot\node_modules\coffee-script'
        )

        ForEach ($p in $pathsToTest)
        {
            it "$($p) exists" {
                Test-Path -Path $p | Should Be $true
            }
        }
    }

    Context "Environment Variables" {
        $envVarsToTest = @(
            'HUBOT_ADAPTER'
            'HUBOT_LOG_LEVEL'
            'HUBOT_SLACK_TOKEN'
        )

        ForEach ($e in $envVarsToTest)
        {
            It "environment variable $($e) should exist" {
                Test-Path -Path "Env:\$($e)" | Should Be $true
            }

        }
    }

    Context "Hubot Service" {        
        It "should exist" {
            { Get-Service -Name Hubot_bender } | Should Not throw
        }
        It "should be running" {
            (Get-Service -Name Hubot_bender).Status | Should BeExactly 'Running'
        }

        $svc = Get-WMIObject -Class Win32_Service -Filter  "Name='hubot_bender'" | Select-Object *

        It "should have a description of Hubot Service" {
            $svc.Description | Should BeExactly 'Hubot Service' 
        }

        It "should be running under Hubot account" {
            $svc.StartName | Should BeExactly 'LocalSystem' 
        }

        It "should have a startmode of Auto" {
            $svc.StartMode | Should BeExactly 'Auto'
        }

        It "should create stdout log file at c:\myhubot\Logs\hubot_bender_log.txt" {
            'c:\myhubot\Logs\hubot_bender_log.txt' | Should Exist
        }

        It "should create stderr log file at c:\myhubot\Logs\hubot_bender_error.txt" {
            'c:\myhubot\Logs\hubot_bender_error.txt' | Should Exist
        }

    }
}