diff options
Diffstat (limited to 'spec/ruby/core/process/euid_spec.rb')
| -rw-r--r-- | spec/ruby/core/process/euid_spec.rb | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/spec/ruby/core/process/euid_spec.rb b/spec/ruby/core/process/euid_spec.rb index a2f1bbf42e..da76f06e59 100644 --- a/spec/ruby/core/process/euid_spec.rb +++ b/spec/ruby/core/process/euid_spec.rb @@ -2,7 +2,7 @@ require_relative '../../spec_helper' describe "Process.euid" do it "returns the effective user ID for this process" do - Process.euid.should be_kind_of(Integer) + Process.euid.should.is_a?(Integer) end it "also goes by Process::UID.eid" do @@ -18,16 +18,26 @@ describe "Process.euid=" do platform_is_not :windows do it "raises TypeError if not passed an Integer" do - -> { Process.euid = Object.new }.should raise_error(TypeError) + -> { Process.euid = Object.new }.should.raise(TypeError) + end + + it "sets the effective user id to its own uid if given the username corresponding to its own uid" do + raise unless Process.uid == Process.euid + + require "etc" + user = Etc.getpwuid(Process.uid).name + + Process.euid = user + Process.euid.should == Process.uid end as_user do it "raises Errno::ERPERM if run by a non superuser trying to set the superuser id" do - -> { (Process.euid = 0)}.should raise_error(Errno::EPERM) + -> { Process.euid = 0 }.should.raise(Errno::EPERM) end it "raises Errno::ERPERM if run by a non superuser trying to set the superuser id from username" do - -> { Process.euid = "root" }.should raise_error(Errno::EPERM) + -> { Process.euid = "root" }.should.raise(Errno::EPERM) end end |
