bsdcapsicum.rb/test/capsicum_test.rb
2024-06-23 21:46:08 -03:00

46 lines
1,006 B
Ruby

require 'test_helper'
class CapsicumTest < Minitest::Test
# This is going to get awkward...
i_suck_and_my_tests_are_order_dependent!
def test_that_it_has_a_version_number
refute_nil ::Capsicum::VERSION
end
def test_1_within_sandbox
skip if RUBY_ENGINE == 'jruby' # fork not supported
refute Capsicum.sandboxed?
result = Capsicum.within_sandbox do
begin
Capsicum.sandboxed? == true || Process.exit!(1)
File.new("/dev/null")
rescue Errno::ECAPMODE
Process.exit!(0)
else
Process.exit!(2)
end
end
assert result.exitstatus.zero?
refute Capsicum.sandboxed?
end
# After this test we're in capability mode and cannot escape.
def test_2_capsicum
refute Capsicum.sandboxed?
assert Capsicum.enter!
assert Capsicum.enter!
assert Capsicum.sandboxed?
assert_raises(Errno::ECAPMODE) do
File.new("/dev/null")
end
assert_raises(Errno::ENOENT) do
puts `ls`
end
end
end