summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThom May <thom@may.lt>2018-01-18 14:16:28 +0000
committerGitHub <noreply@github.com>2018-01-18 14:16:28 +0000
commitd0a68f81fcd6fe8abe12dabfaaf16d995a933a76 (patch)
tree775c12e2c12543a47c071ba7f83388166f4d2ce2
parent23d1aed242c7933f85e6258cba47b9dc4e7e4521 (diff)
parent6cac5affe524a2fc481a944bebef4135a16a34b7 (diff)
downloadchef-d0a68f81fcd6fe8abe12dabfaaf16d995a933a76.tar.gz
Merge pull request #6714 from MsysTechnologiesllc/dh/update_validation_on_idle
[MSYS-735]fix validation for idle_time
-rw-r--r--lib/chef/resource/windows_task.rb6
-rw-r--r--spec/unit/resource/windows_task_spec.rb12
2 files changed, 16 insertions, 2 deletions
diff --git a/lib/chef/resource/windows_task.rb b/lib/chef/resource/windows_task.rb
index 14f5da46fa..10e8400c34 100644
--- a/lib/chef/resource/windows_task.rb
+++ b/lib/chef/resource/windows_task.rb
@@ -82,7 +82,7 @@ class Chef
validate_create_frequency_modifier(frequency, frequency_modifier)
validate_create_day(day, frequency) if day
validate_create_months(months, frequency) if months
- validate_idle_time(idle_time, frequency) if idle_time
+ validate_idle_time(idle_time, frequency) if ( !idle_time.nil? && ([:minute, :hourly, :daily, :weekly, :monthly].include? frequency)) || (idle_time.nil? || !(idle_time > 0 && idle_time <= 999)) && !([:minute, :hourly, :daily, :weekly, :monthly].include? frequency)
end
private
@@ -199,7 +199,9 @@ class Chef
unless [:on_idle].include?(frequency)
raise ArgumentError, "idle_time property is only valid for tasks that run on_idle"
end
-
+ if idle_time.nil?
+ raise ArgumentError, "idle_time value should be set for :on_idle frequency."
+ end
unless idle_time > 0 && idle_time <= 999
raise ArgumentError, "idle_time value #{idle_time} is invalid. Valid values for :on_idle frequency are 1 - 999."
end
diff --git a/spec/unit/resource/windows_task_spec.rb b/spec/unit/resource/windows_task_spec.rb
index 145063b53e..f570cc3192 100644
--- a/spec/unit/resource/windows_task_spec.rb
+++ b/spec/unit/resource/windows_task_spec.rb
@@ -111,6 +111,10 @@ describe Chef::Resource::WindowsTask do
resource.after_created
expect(resource.random_delay).to eq("PT60S")
end
+
+ it "raises error that random_delay is not supported" do
+ expect { resource.send(:validate_random_delay, 60, :on_idle) }.to raise_error(ArgumentError, "`random_delay` property is supported only for frequency :minute, :hourly, :daily, :weekly and :monthly")
+ end
end
context "when execution_time_limit isn't specified" do
@@ -278,6 +282,14 @@ describe Chef::Resource::WindowsTask do
it "raises error if idle_time > 999" do
expect { resource.send(:validate_idle_time, 1000, :on_idle) }.to raise_error(ArgumentError, "idle_time value 1000 is invalid. Valid values for :on_idle frequency are 1 - 999.")
end
+
+ it "raises error if idle_time < 0" do
+ expect { resource.send(:validate_idle_time, -5, :on_idle) }.to raise_error(ArgumentError, "idle_time value -5 is invalid. Valid values for :on_idle frequency are 1 - 999.")
+ end
+
+ it "raises error if idle_time is not set" do
+ expect { resource.send(:validate_idle_time, nil, :on_idle) }.to raise_error(ArgumentError, "idle_time value should be set for :on_idle frequency.")
+ end
end
context "#sec_to_dur" do