summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/functional/resource/windows_task_spec.rb58
-rw-r--r--spec/unit/resource/windows_task_spec.rb81
2 files changed, 112 insertions, 27 deletions
diff --git a/spec/functional/resource/windows_task_spec.rb b/spec/functional/resource/windows_task_spec.rb
index 9b355d37ed..a2e1163a88 100644
--- a/spec/functional/resource/windows_task_spec.rb
+++ b/spec/functional/resource/windows_task_spec.rb
@@ -1599,26 +1599,70 @@ describe Chef::Resource::WindowsTask, :windows_only do
end
context "when start_day is passed with frequency :onstart" do
- it "not raises error" do
+ it "does not raises error" do
subject.frequency :onstart
subject.start_day "09/20/2017"
expect { subject.after_created }.not_to raise_error
end
end
- context "when a non-system user is passed without password" do
+ context "when a non system user is passed without password" do
it "raises error" do
- subject.user "Administrator"
+ subject.user "USER"
subject.frequency :onstart
- expect { subject.after_created }.to raise_error(%q{Cannot specify a user other than the system users without specifying a password!. Valid passwordless users: 'SYSTEM', 'NT AUTHORITY\SYSTEM', 'LOCAL SERVICE', 'NT AUTHORITY\LOCAL SERVICE', 'NETWORK SERVICE', 'NT AUTHORITY\NETWORK SERVICE', 'ADMINISTRATORS', 'BUILTIN\ADMINISTRATORS', 'USERS', 'BUILTIN\USERS', 'GUESTS', 'BUILTIN\GUESTS'})
+ expect { subject.after_created }.to raise_error(%q{Please provide a password or check if this task needs to be interactive! Valid passwordless users are: 'SYSTEM', 'NT AUTHORITY\SYSTEM', 'LOCAL SERVICE', 'NT AUTHORITY\LOCAL SERVICE', 'NETWORK SERVICE', 'NT AUTHORITY\NETWORK SERVICE', 'ADMINISTRATORS', 'BUILTIN\ADMINISTRATORS', 'USERS', 'BUILTIN\USERS', 'GUESTS', 'BUILTIN\GUESTS'})
+ end
+ it "does not raises error when task is interactive" do
+ subject.user "USER"
+ subject.frequency :onstart
+ subject.interactive_enabled true
+ expect { subject.after_created }.not_to raise_error
end
end
- context "when interactive_enabled is passed for a System user without password" do
- it "raises error" do
+ context "when a system user is passed without password" do
+ it "does not raises error" do
+ subject.user "ADMINISTRATORS"
+ subject.frequency :onstart
+ expect { subject.after_created }.not_to raise_error
+ end
+ it "does not raises error when task is interactive" do
+ subject.user "ADMINISTRATORS"
+ subject.frequency :onstart
+ subject.interactive_enabled true
+ expect { subject.after_created }.not_to raise_error
+ end
+ end
+
+ context "when a non system user is passed with password" do
+ it "does not raises error" do
+ subject.user "USER"
+ subject.password "XXXX"
+ subject.frequency :onstart
+ expect { subject.after_created }.not_to raise_error
+ end
+ it "does not raises error when task is interactive" do
+ subject.user "USER"
+ subject.password "XXXX"
+ subject.frequency :onstart
subject.interactive_enabled true
+ expect { subject.after_created }.not_to raise_error
+ end
+ end
+
+ context "when a system user is passed with password" do
+ it "raises error" do
+ subject.user "ADMINISTRATORS"
+ subject.password "XXXX"
subject.frequency :onstart
- expect { subject.after_created }.to raise_error("Please provide the password when attempting to set interactive/non-interactive.")
+ expect { subject.after_created }.to raise_error("Password is not required for system users.")
+ end
+ it "raises error when task is interactive" do
+ subject.user "ADMINISTRATORS"
+ subject.password "XXXX"
+ subject.frequency :onstart
+ subject.interactive_enabled true
+ expect { subject.after_created }.to raise_error("Password is not required for system users.")
end
end
diff --git a/spec/unit/resource/windows_task_spec.rb b/spec/unit/resource/windows_task_spec.rb
index efbc1b1846..96482d3d56 100644
--- a/spec/unit/resource/windows_task_spec.rb
+++ b/spec/unit/resource/windows_task_spec.rb
@@ -67,23 +67,70 @@ describe Chef::Resource::WindowsTask, :windows_only do
end
end
- context "when user is set but password is not" do
- before do
- resource.frequency :hourly
- end
- it "raises an error if the user is a non-system user" do
- resource.user "bob"
- expect { resource.after_created }.to raise_error(ArgumentError, %q{Cannot specify a user other than the system users without specifying a password!. Valid passwordless users: 'SYSTEM', 'NT AUTHORITY\SYSTEM', 'LOCAL SERVICE', 'NT AUTHORITY\LOCAL SERVICE', 'NETWORK SERVICE', 'NT AUTHORITY\NETWORK SERVICE', 'ADMINISTRATORS', 'BUILTIN\ADMINISTRATORS', 'USERS', 'BUILTIN\USERS', 'GUESTS', 'BUILTIN\GUESTS'})
- end
+ describe "#validate_user_and_password" do
+ context "a System User" do
+ before do
+ resource.frequency :hourly
+ resource.user 'NT AUTHORITY\SYSTEM'
+ end
- it "does not raise an error if the user is a system user" do
- resource.user 'NT AUTHORITY\SYSTEM'
- expect { resource.after_created }.to_not raise_error
+ context "for an interactive task" do
+ before { resource.interactive_enabled true }
+ it "does not require a password" do
+ expect { resource.after_created }.to_not raise_error
+ end
+ it "raises an error when a password is given" do
+ resource.password "XXXX"
+ expect { resource.after_created }.to raise_error(ArgumentError, "Password is not required for system users.")
+ end
+ it "does not raises an error even when user is in lowercase" do
+ resource.user 'nt authority\system'
+ expect { resource.after_created }.to_not raise_error
+ end
+ end
+
+ context "for a non-interactive task" do
+ before { resource.interactive_enabled false }
+ it "does not require a password" do
+ expect { resource.after_created }.to_not raise_error
+ end
+ it "raises an error when a password is given" do
+ resource.password "XXXX"
+ expect { resource.after_created }.to raise_error(ArgumentError, "Password is not required for system users.")
+ end
+ it "does not raises an error even when user is in lowercase" do
+ resource.user 'nt authority\system'
+ expect { resource.after_created }.to_not raise_error
+ end
+ end
end
- it "does not raise an error if the user is a system user even if lowercase" do
- resource.user 'nt authority\system'
- expect { resource.after_created }.to_not raise_error
+ context "a Non-System User" do
+ before do
+ resource.frequency :hourly
+ resource.user "bob"
+ end
+ context "for an interactive task" do
+ before { resource.interactive_enabled true }
+ it "does not require a password" do
+ expect { resource.after_created }.to_not raise_error
+ end
+ it "does not raises an error when a password is given" do
+ resource.password "XXXX"
+ expect { resource.after_created }.to_not raise_error
+ end
+ end
+
+ context "for a non-interactive task" do
+ before { resource.interactive_enabled false }
+ it "require a password" do
+ expect { resource.after_created }.to raise_error(ArgumentError, %q{Please provide a password or check if this task needs to be interactive! Valid passwordless users are: 'SYSTEM', 'NT AUTHORITY\SYSTEM', 'LOCAL SERVICE', 'NT AUTHORITY\LOCAL SERVICE', 'NETWORK SERVICE', 'NT AUTHORITY\NETWORK SERVICE', 'ADMINISTRATORS', 'BUILTIN\ADMINISTRATORS', 'USERS', 'BUILTIN\USERS', 'GUESTS', 'BUILTIN\GUESTS'})
+ end
+ it "does not raises an error when a password is given" do
+ resource.password "XXXX"
+ expect { resource.after_created }.to_not raise_error
+ end
+ end
end
end
@@ -231,12 +278,6 @@ describe Chef::Resource::WindowsTask, :windows_only do
end
end
- context "#validate_interactive_setting" do
- it "raises error when interactive_enabled is passed without password" do
- expect { resource.send(:validate_interactive_setting, true, nil) }.to raise_error("Please provide the password when attempting to set interactive/non-interactive.")
- end
- end
-
context "#validate_create_frequency_modifier" do
context "when frequency is :minute" do
it "raises error if frequency_modifier > 1439" do