Skip to content

Commit

Permalink
Merge pull request #9 from CasbinRuby/add-tests
Browse files Browse the repository at this point in the history
Add tests and fix methods
  • Loading branch information
akirill0v authored Sep 1, 2021
2 parents 7db963a + 69256be commit 069300a
Show file tree
Hide file tree
Showing 3 changed files with 130 additions and 4 deletions.
6 changes: 3 additions & 3 deletions lib/casbin-ruby/management_enforcer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ def has_named_policy(ptype, *params)
if params.size == 1 && params[0].is_a?(Array)
model.has_policy('p', ptype, params[0])
else
model.has_policy('p', ptype, [params])
model.has_policy('p', ptype, params)
end
end

Expand Down Expand Up @@ -206,7 +206,7 @@ def has_named_grouping_policy(ptype, *params)
if params.size == 1 && params[0].is_a?(Array)
model.has_policy('g', ptype, params[0])
else
model.has_policy('g', ptype, [params])
model.has_policy('g', ptype, params)
end
end

Expand Down Expand Up @@ -271,7 +271,7 @@ def remove_named_grouping_policy(ptype, *params)
rule_added = if params.size == 1 && params[0].is_a?(Array)
parent_remove_policy('g', ptype, params[0])
else
parent_remove_policy('g', ptype, [params])
parent_remove_policy('g', ptype, params)
end

auto_build_role_links ? build_role_links : rule_added
Expand Down
2 changes: 1 addition & 1 deletion lib/casbin-ruby/version.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# frozen_string_literal: true

module Casbin
VERSION = '1.0.9'
VERSION = '1.0.10'
end
126 changes: 126 additions & 0 deletions spec/casbin/enforcer_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,42 @@
enf.remove_policy(%w[alice data3 read])
expect(enf.enforce('alice', 'data3', 'read')).to be_falsey
end

# rubocop:disable RSpec/RepeatedExample
it '#delete_permission' do
# TODO: Add support this method
# expect(enf.enforce('bob', 'data2', 'write')).to be_truthy
# expect(enf.enforce('data2_admin', 'data2', 'read')).to be_truthy
# expect(enf.enforce('data2_admin', 'data2', 'write')).to be_truthy
# expect(enf.delete_permission('data2')).to be_truthy
# expect(enf.enforce('bob', 'data2', 'write')).to be_falsey
# expect(enf.enforce('data2_admin', 'data2', 'read')).to be_falsey
# expect(enf.enforce('data2_admin', 'data2', 'write')).to be_falsey
end

it '#delete_permissions_for_user' do
# TODO: Add support this method
# expect(enf.enforce('alice', 'data1', 'read')).to be_truthy
# expect(enf.delete_permissions_for_user('alice')).to be_truthy
# expect(enf.enforce('alice', 'data1', 'read')).to be_falsey
end

it '#get_permissions_for_user' do
# TODO: Add support this method
# expect(enf.get_permissions_for_user('alice')).to match_array([%w[alice data1 read],
# %w[data2_admin data2 read],
# %w[data2_admin data2 write]])
end
# rubocop:enable RSpec/RepeatedExample

it '#has_permission_for_user' do
expect(enf.has_permission_for_user('alice', 'data1', 'read')).to be_truthy
expect(enf.has_permission_for_user('alice', 'data1', 'write')).to be_falsey
end

it '#get_implicit_permissions_for_user' do
expect(enf.get_implicit_permissions_for_user('alice')).to match_array([%w[alice data1 read]])
end
end

describe 'basic without spaces' do
Expand Down Expand Up @@ -188,6 +224,68 @@
expect(enf.enforce('alice', 'data4', 'read')).to be_truthy
expect(enf.enforce('bob', 'data4', 'read')).to be_falsey
end

it '#get_roles_for_user' do
expect(enf.get_roles_for_user('alice')).to match_array(['data2_admin'])
expect(enf.get_roles_for_user('bob')).to match_array([])
end

it '#get_users_for_role' do
expect(enf.get_users_for_role('data2_admin')).to match_array(['alice'])
expect(enf.get_users_for_role('data1_admin')).to match_array([])
end

it '#has_role_for_user' do
expect(enf.has_role_for_user('alice', 'data2_admin')).to be_truthy
expect(enf.has_role_for_user('bob', 'data2_admin')).to be_falsey
end

it '#add_role_for_user' do
expect(enf.has_role_for_user('alice', 'manager')).to be_falsey
expect(enf.add_role_for_user('alice', 'manager')).to be_truthy
expect(enf.has_role_for_user('alice', 'manager')).to be_truthy
end

it '#delete_role_for_user' do
expect(enf.has_role_for_user('alice', 'data2_admin')).to be_truthy
expect(enf.delete_role_for_user('alice', 'data2_admin')).to be_truthy
expect(enf.has_role_for_user('alice', 'data2_admin')).to be_falsey
end

it '#delete_roles_for_user' do
enf.add_grouping_policy('alice', 'base')
expect(enf.delete_roles_for_user('alice')).to be_truthy
expect(enf.get_roles_for_user('alice')).to match_array([])
end

it '#delete_user' do
expect(enf.enforce('alice', 'data1', 'read')).to be_truthy
expect(enf.has_role_for_user('alice', 'data2_admin')).to be_truthy
expect(enf.delete_user('alice')).to be_truthy
expect(enf.enforce('alice', 'data1', 'read')).to be_falsey
expect(enf.has_role_for_user('alice', 'data2_admin')).to be_falsey
end

it '#delete_role' do
expect(enf.enforce('data2_admin', 'data2', 'read')).to be_truthy
expect(enf.has_role_for_user('alice', 'data2_admin')).to be_truthy
expect(enf.delete_role('data2_admin')).to be_truthy
expect(enf.enforce('data2_admin', 'data2', 'read')).to be_falsey
expect(enf.has_role_for_user('alice', 'data2_admin')).to be_falsey
end

# rubocop:disable RSpec/RepeatedExample
it '#get_implicit_roles_for_user' do
# TODO: Add support this method
# enf.add_role_for_user('data2_admin', 'super_admin')
# expect(enf.get_implicit_roles_for_user('alice')).to match_array(%w[data2_admin super_admin])
end

it '#get_implicit_users_for_permission' do
# TODO: Add support this method
# expect(enf.get_implicit_users_for_permission('data2', 'write')).to match_array(%w[alice bob])
end
# rubocop:enable RSpec/RepeatedExample
end

describe 'rbac empty policy' do
Expand Down Expand Up @@ -227,6 +325,34 @@
expect(enf.enforce('bob', 'domain2', 'data2', 'read')).to be_truthy
expect(enf.enforce('bob', 'domain2', 'data2', 'write')).to be_truthy
end

it '#get_roles_for_user_in_domain' do
expect(enf.get_roles_for_user_in_domain('alice', 'domain1')).to match_array(%w[admin])
expect(enf.get_roles_for_user_in_domain('bob', 'domain2')).to match_array(%w[admin])
end

it '#get_users_for_role_in_domain' do
expect(enf.get_users_for_role_in_domain('admin', 'domain1')).to match_array(%w[alice])
expect(enf.get_users_for_role_in_domain('admin', 'domain2')).to match_array(%w[bob])
end

it '#delete_roles_for_user_in_domain' do
enf.delete_roles_for_user_in_domain('alice', 'admin', 'domain1')
expect(enf.get_roles_for_user_in_domain('alice', 'domain1')).to match_array(%w[])
end

it '#get_permissions_for_user_in_domain' do
expect(enf.get_permissions_for_user_in_domain('admin', 'domain1'))
.to match_array([%w[admin domain1 data1 read],
%w[admin domain1 data1 write],
%w[admin domain2 data2 read],
%w[admin domain2 data2 write]])
expect(enf.get_permissions_for_user_in_domain('admin', 'domain2'))
.to match_array([%w[admin domain1 data1 read],
%w[admin domain1 data1 write],
%w[admin domain2 data2 read],
%w[admin domain2 data2 write]])
end
end

describe 'rbac with not deny' do
Expand Down

0 comments on commit 069300a

Please sign in to comment.