inspec/test/unit/resources/windows_task_test.rb
Jerry Aldrich 668b8d82bf windows_task: Fix handling of multiple triggers
When using `schtasks` a list is returned if the task has multiple
triggers. This merges that list with the last item taking precedence.
This is how `Get-ScheduledTask` behaves.

Initially, I was going to rewrite this resource to use
`Get-ScheduledTask` but the original author purposely did not do this
so that PowerShell v3 would be supported. We only support PowerShell
v5, but I don't want to break any current users and this change didn't
seem to controversial to me.

If it gives us trouble, I recommend rewriting it to use
`Get-ScheduledTask`.

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>
2019-06-28 00:27:53 -07:00

32 lines
1.5 KiB
Ruby

require "helper"
require "inspec/resource"
require "inspec/resources/windows_task"
describe "Inspec::Resources::WindowsTasks" do
it "can handle a Windows task that does not exist" do
resource_fail = MockLoader.new(:windows).load_resource("windows_task", "does-not-exist")
_(resource_fail.exists?).must_equal false
end
it "parses a windows task with one trigger correctly" do
resource = MockLoader.new(:windows).load_resource("windows_task", "WeLovePizza")
_(resource.enabled?).must_equal true
_(resource.disabled?).must_equal false
_(resource.logon_mode).must_equal "Interactive/Background"
_(resource.last_result).must_equal "1056"
_(resource.task_to_run).must_equal '%windir%\\system32\\sc.exe start w32time task_started'
_(resource.run_as_user).must_equal "LOCAL SERVICE"
_(resource.type).must_equal "windows-task"
_(resource.to_s).must_equal "Windows Task 'WeLovePizza'"
end
it "parses a windows task with more than one trigger correctly" do
resource = MockLoader.new(:windows).load_resource("windows_task", "WeLoveMultiplePizzas")
_(resource.enabled?).must_equal true
_(resource.disabled?).must_equal false
_(resource.logon_mode).must_equal "Interactive/Background"
_(resource.last_result).must_equal "1056"
_(resource.task_to_run).must_equal '%windir%\\system32\\sc.exe start w32time task_started'
_(resource.run_as_user).must_equal "LOCAL SERVICE"
_(resource.type).must_equal "windows-task"
_(resource.to_s).must_equal "Windows Task 'WeLoveMultiplePizzas'"
end
end