Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/spec/lib
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2019-02-13 20:26:00 +0300
committerLin Jen-Shin <godfat@godfat.org>2019-02-14 10:52:17 +0300
commit50491d324135f14e817d7de9d825b9ce4dacc5ef (patch)
treec0a187360e24d40a95f48b1e1a150840384dd2b3 /spec/lib
parent30918929ad079a591b85303d6662ec0a43c5df04 (diff)
Instead of returning all or nothing, return whichever passed
And add tests
Diffstat (limited to 'spec/lib')
-rw-r--r--spec/lib/gitlab/graphql/authorize/instrumentation_spec.rb32
1 files changed, 28 insertions, 4 deletions
diff --git a/spec/lib/gitlab/graphql/authorize/instrumentation_spec.rb b/spec/lib/gitlab/graphql/authorize/instrumentation_spec.rb
index 69f53fce715..cf3a8bcc8b4 100644
--- a/spec/lib/gitlab/graphql/authorize/instrumentation_spec.rb
+++ b/spec/lib/gitlab/graphql/authorize/instrumentation_spec.rb
@@ -15,7 +15,7 @@ describe Gitlab::Graphql::Authorize::Instrumentation do
object = double(:object)
abilities.each do |ability|
- spy_ability_check_for(ability, object)
+ spy_ability_check_for(ability, object, passed: true)
end
expect(checker.call(object)).to eq(object)
@@ -26,18 +26,42 @@ describe Gitlab::Graphql::Authorize::Instrumentation do
abilities.each do |ability|
objects.each do |object|
- spy_ability_check_for(ability, object)
+ spy_ability_check_for(ability, object, passed: true)
end
end
expect(checker.call(objects)).to eq(objects)
end
- def spy_ability_check_for(ability, object)
+ context 'when some objects would not pass the check' do
+ it 'returns nil when it is single object' do
+ disallowed = double(:object)
+
+ spy_ability_check_for(abilities.first, disallowed, passed: false)
+
+ expect(checker.call(disallowed)).to be_nil
+ end
+
+ it 'returns only objects which passed when there are more than one' do
+ allowed = double(:allowed)
+ disallowed = double(:disallowed)
+
+ spy_ability_check_for(abilities.first, disallowed, passed: false)
+
+ abilities.each do |ability|
+ spy_ability_check_for(ability, allowed, passed: true)
+ end
+
+ expect(checker.call([disallowed, allowed]))
+ .to contain_exactly(allowed)
+ end
+ end
+
+ def spy_ability_check_for(ability, object, passed: true)
expect(Ability)
.to receive(:allowed?)
.with(current_user, ability, object)
- .and_return(true)
+ .and_return(passed)
end
end
end