Update test/

This commit is contained in:
0x1eef 2024-05-12 22:32:55 -03:00
parent fafc20c06b
commit 5571ab8f3b
11 changed files with 58 additions and 128 deletions

1
.gitignore vendored
View file

@ -1,3 +1,4 @@
/.gems/ /.gems/
/tmp/ /tmp/
test/**/file
*.so *.so

View file

@ -3,3 +3,25 @@
require "bundler/setup" require "bundler/setup"
require "test/unit" require "test/unit"
require "bsdcontrol" require "bsdcontrol"
module BSD::Control
class Test < Test::Unit::TestCase
require "fileutils"
include FileUtils
def setup
File.exist?(file) ? rm(file) : nil
touch(file)
end
def teardown
File.exist?(file) ? rm(file) : nil
end
private
def file
File.join(__dir__, "file")
end
end
end

View file

@ -2,32 +2,19 @@
require_relative "../setup" require_relative "../setup"
module BSD::Control module BSD::Control
class DisableFeatureTest < Test::Unit::TestCase class DisableFeatureTest < BSD::Control::Test
require "fileutils"
include FileUtils
def test_disable_pageexec def test_disable_pageexec
touch(file) assert_equal true,
assert BSD::Control.feature(:pageexec).disable!(file), BSD::Control.feature(:pageexec).disable!(file)
"The disable! method should have returned true" assert_equal :disabled,
assert_equal(
:disabled,
BSD::Control.feature(:pageexec).status(file) BSD::Control.feature(:pageexec).status(file)
)
ensure
rm(file)
end end
def test_disable_pageexec_nonexistent_file def test_disable_pageexec_nonexistent_file
rm(file)
assert_raises(Errno::ENOENT) do assert_raises(Errno::ENOENT) do
BSD::Control.feature(:pageexec).disable!(file) BSD::Control.feature(:pageexec).disable!(file)
end end
end end
private
def file
File.join(__dir__, "file")
end
end end
end end

View file

@ -2,37 +2,23 @@
require_relative "../setup" require_relative "../setup"
module BSD::Control module BSD::Control
class EnableFeatureTest < Test::Unit::TestCase class EnableFeatureTest < BSD::Control::Test
require "fileutils"
include FileUtils
def test_enable_pageexec def test_enable_pageexec
touch(file) assert_equal true,
assert BSD::Control.feature(:pageexec).enable!(file), BSD::Control.feature(:pageexec).enable!(file)
"The enable! method should have returned true"
ensure
rm(file)
end end
def test_enable_pageexec_zero_permissions def test_enable_pageexec_mode_zero
touch(file)
chmod(0, file) chmod(0, file)
assert BSD::Control.feature(:pageexec).enable!(file), assert_equal true,
"The enable! method should have returned true" BSD::Control.feature(:pageexec).enable!(file)
ensure
rm(file)
end end
def test_enable_pageexec_nonexistent_file def test_enable_pageexec_nonexistent_file
rm(file)
assert_raises(Errno::ENOENT) do assert_raises(Errno::ENOENT) do
BSD::Control.feature(:pageexec).enable!(file) BSD::Control.feature(:pageexec).enable!(file)
end end
end end
private
def file
File.join(__dir__, "file")
end
end end
end end

View file

@ -2,40 +2,22 @@
require_relative "../setup" require_relative "../setup"
module BSD::Control module BSD::Control
class FeatureStatusTest < Test::Unit::TestCase class FeatureStatusTest < BSD::Control::Test
require "fileutils"
include FileUtils
def test_pageexec_sysdef_status def test_pageexec_sysdef_status
touch(file)
assert_equal :sysdef, assert_equal :sysdef,
BSD::Control.feature(:pageexec).status(file) BSD::Control.feature(:pageexec).status(file)
ensure
rm(file)
end end
def test_pageexec_enabled_status def test_pageexec_enabled_status
touch(file)
BSD::Control.feature(:pageexec).enable!(file) BSD::Control.feature(:pageexec).enable!(file)
assert_equal :enabled, assert_equal :enabled,
BSD::Control.feature(:pageexec).status(file) BSD::Control.feature(:pageexec).status(file)
ensure
rm(file)
end end
def test_pageexec_disabled_status def test_pageexec_disabled_status
touch(file)
BSD::Control.feature(:pageexec).disable!(file) BSD::Control.feature(:pageexec).disable!(file)
assert_equal :disabled, assert_equal :disabled,
BSD::Control.feature(:pageexec).status(file) BSD::Control.feature(:pageexec).status(file)
ensure
rm(file)
end
private
def file
File.join(__dir__, "file")
end end
end end
end end

View file

@ -2,38 +2,23 @@
require_relative "../setup" require_relative "../setup"
module BSD::Control module BSD::Control
class SysDefFeatureTest < Test::Unit::TestCase class SysDefFeatureTest < BSD::Control::Test
require "fileutils"
include FileUtils
def test_sysdef_pageexec def test_sysdef_pageexec
touch(file) assert_equal true,
assert BSD::Control.feature(:pageexec).enable!(file), BSD::Control.feature(:pageexec).enable!(file)
"The enable! method should have returned true" assert_equal :enabled,
assert_equal(
:enabled,
BSD::Control.feature(:pageexec).status(file) BSD::Control.feature(:pageexec).status(file)
) assert_equal true,
assert BSD::Control.feature(:pageexec).sysdef!(file), BSD::Control.feature(:pageexec).sysdef!(file)
"The sysdef! method should have returned true" assert_equal :sysdef,
assert_equal(
:sysdef,
BSD::Control.feature(:pageexec).status(file) BSD::Control.feature(:pageexec).status(file)
)
ensure
rm(file)
end end
def test_enable_pageexec_nonexistent_file def test_enable_pageexec_nonexistent_file
rm(file)
assert_raises(Errno::ENOENT) do assert_raises(Errno::ENOENT) do
BSD::Control.feature(:pageexec).sysdef!(file) BSD::Control.feature(:pageexec).sysdef!(file)
end end
end end
private
def file
File.join(__dir__, "file")
end
end end
end end

View file

@ -2,15 +2,14 @@
require_relative "../setup" require_relative "../setup"
module BSD::Control module BSD::Control
class AvailableFeaturesTest < Test::Unit::TestCase class AvailableFeaturesTest < BSD::Control::Test
def test_available_features_not_empty def test_available_features_not_empty
refute available_features.empty?, assert_equal false, available_features.empty?
"There should have been at least one available feature"
end end
def test_available_features_instance_of def test_available_features_instance_of
assert available_features.all? { _1.instance_of?(BSD::Control::Feature) }, assert_equal true,
"All available features should be an instance of `BSD::Control::Feature`" available_features.all? { _1.instance_of?(BSD::Control::Feature) }
end end
private private

View file

@ -2,20 +2,12 @@
require_relative "../setup" require_relative "../setup"
module BSD::Control module BSD::Control
class DisableFeatureTest < Test::Unit::TestCase class DisableFeatureTest < BSD::Control::Test
require "fileutils"
include FileUtils
def test_disable_pageexec_nonexistent_file def test_disable_pageexec_nonexistent_file
rm(file)
assert_raises(Errno::ENOENT) do assert_raises(Errno::ENOENT) do
BSD::Control.feature(:pageexec).disable!(file) BSD::Control.feature(:pageexec).disable!(file)
end end
end end
private
def file
File.join(__dir__, "file")
end
end end
end end

View file

@ -2,23 +2,11 @@
require_relative "../setup" require_relative "../setup"
module BSD::Control module BSD::Control
class EnableFeatureTest < Test::Unit::TestCase class EnableFeatureTest < BSD::Control::Test
require "fileutils" def test_enable_feature_insufficient_permissions
include FileUtils
def test_enable_feature_lacks_privileges
touch(file)
assert_raises(Errno::EPERM) do assert_raises(Errno::EPERM) do
BSD::Control.feature(:pageexec).enable!(file) BSD::Control.feature(:pageexec).enable!(file)
end end
ensure
rm(file)
end
private
def file
File.join(__dir__, "file")
end end
end end
end end

View file

@ -2,7 +2,7 @@
require_relative "../setup" require_relative "../setup"
module BSD::Control module BSD::Control
class FeatureTest < Test::Unit::TestCase class FeatureTest < BSD::Control::Test
def test_pageexec_feature def test_pageexec_feature
assert_instance_of BSD::Control::Feature, assert_instance_of BSD::Control::Feature,
BSD::Control.feature(:pageexec) BSD::Control.feature(:pageexec)

View file

@ -2,23 +2,11 @@
require_relative "../setup" require_relative "../setup"
module BSD::Control module BSD::Control
class SysDefTest < Test::Unit::TestCase class SysDefTest < BSD::Control::Test
require "fileutils" def test_sysdef!_insufficient_permissions
include FileUtils
def test_sysdef!_lacks_privileges
touch(file)
assert_raises(Errno::EPERM) do assert_raises(Errno::EPERM) do
BSD::Control.feature(:pageexec).sysdef!(file) BSD::Control.feature(:pageexec).sysdef!(file)
end end
ensure
rm(file)
end
private
def file
File.join(__dir__, "file")
end end
end end
end end