summaryrefslogtreecommitdiff
path: root/spec/lib/declarative_policy/overrides_spec.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-05-19 15:44:42 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-05-19 15:44:42 +0000
commit4555e1b21c365ed8303ffb7a3325d773c9b8bf31 (patch)
tree5423a1c7516cffe36384133ade12572cf709398d /spec/lib/declarative_policy/overrides_spec.rb
parente570267f2f6b326480d284e0164a6464ba4081bc (diff)
downloadgitlab-ce-4555e1b21c365ed8303ffb7a3325d773c9b8bf31.tar.gz
Add latest changes from gitlab-org/gitlab@13-12-stable-eev13.12.0-rc42
Diffstat (limited to 'spec/lib/declarative_policy/overrides_spec.rb')
-rw-r--r--spec/lib/declarative_policy/overrides_spec.rb82
1 files changed, 0 insertions, 82 deletions
diff --git a/spec/lib/declarative_policy/overrides_spec.rb b/spec/lib/declarative_policy/overrides_spec.rb
deleted file mode 100644
index 84dc8f7ac71..00000000000
--- a/spec/lib/declarative_policy/overrides_spec.rb
+++ /dev/null
@@ -1,82 +0,0 @@
-# frozen_string_literal: true
-
-require 'fast_spec_helper'
-require_dependency 'rspec-parameterized'
-
-RSpec.describe 'DeclarativePolicy overrides' do
- let(:foo_policy) do
- Class.new(DeclarativePolicy::Base) do
- condition(:foo_prop_cond) { @subject.foo_prop }
-
- rule { foo_prop_cond }.policy do
- enable :common_ability
- enable :foo_prop_ability
- end
- end
- end
-
- let(:bar_policy) do
- Class.new(DeclarativePolicy::Base) do
- delegate { @subject.foo }
-
- overrides :common_ability
-
- condition(:bar_prop_cond) { @subject.bar_prop }
-
- rule { bar_prop_cond }.policy do
- enable :common_ability
- enable :bar_prop_ability
- end
-
- rule { bar_prop_cond & can?(:foo_prop_ability) }.policy do
- enable :combined_ability
- end
- end
- end
-
- before do
- stub_const('Foo', Struct.new(:foo_prop))
- stub_const('FooPolicy', foo_policy)
- stub_const('Bar', Struct.new(:foo, :bar_prop))
- stub_const('BarPolicy', bar_policy)
- end
-
- where(:foo_prop, :bar_prop) do
- [
- [true, true],
- [true, false],
- [false, true],
- [false, false]
- ]
- end
-
- with_them do
- let(:foo) { Foo.new(foo_prop) }
- let(:bar) { Bar.new(foo, bar_prop) }
-
- it 'determines the correct bar_prop_ability (non-delegated) permissions for bar' do
- policy = DeclarativePolicy.policy_for(nil, bar)
- expect(policy.allowed?(:bar_prop_ability)).to eq(bar_prop)
- end
-
- it 'determines the correct foo_prop (non-overridden) permissions for bar' do
- policy = DeclarativePolicy.policy_for(nil, bar)
- expect(policy.allowed?(:foo_prop_ability)).to eq(foo_prop)
- end
-
- it 'determines the correct common_ability (overridden) permissions for bar' do
- policy = DeclarativePolicy.policy_for(nil, bar)
- expect(policy.allowed?(:common_ability)).to eq(bar_prop)
- end
-
- it 'determines the correct common_ability permissions for foo' do
- policy = DeclarativePolicy.policy_for(nil, foo)
- expect(policy.allowed?(:common_ability)).to eq(foo_prop)
- end
-
- it 'allows combinations of overridden and inherited values' do
- policy = DeclarativePolicy.policy_for(nil, bar)
- expect(policy.allowed?(:combined_ability)).to eq(foo_prop && bar_prop)
- end
- end
-end