diff options
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/functional/resource/windows_task_spec.rb | 58 | ||||
| -rw-r--r-- | spec/unit/resource/windows_task_spec.rb | 81 |
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 |
