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
diff options
context:
space:
mode:
Diffstat (limited to 'spec/policies/base_policy_spec.rb')
-rw-r--r--spec/policies/base_policy_spec.rb74
1 files changed, 33 insertions, 41 deletions
diff --git a/spec/policies/base_policy_spec.rb b/spec/policies/base_policy_spec.rb
index 103f2e9bc39..226660dc955 100644
--- a/spec/policies/base_policy_spec.rb
+++ b/spec/policies/base_policy_spec.rb
@@ -22,6 +22,34 @@ RSpec.describe BasePolicy do
end
end
+ shared_examples 'admin only access' do |policy|
+ let(:current_user) { build_stubbed(:user) }
+
+ subject { described_class.new(current_user, nil) }
+
+ it { is_expected.not_to be_allowed(policy) }
+
+ context 'for admins' do
+ let(:current_user) { build_stubbed(:admin) }
+
+ it 'allowed when in admin mode' do
+ enable_admin_mode!(current_user)
+
+ is_expected.to be_allowed(policy)
+ end
+
+ it 'prevented when not in admin mode' do
+ is_expected.not_to be_allowed(policy)
+ end
+ end
+
+ context 'for anonymous' do
+ let(:current_user) { nil }
+
+ it { is_expected.not_to be_allowed(policy) }
+ end
+ end
+
describe 'read cross project' do
let(:current_user) { build_stubbed(:user) }
let(:user) { build_stubbed(:user) }
@@ -41,51 +69,15 @@ RSpec.describe BasePolicy do
enable_external_authorization_service_check
end
- it { is_expected.not_to be_allowed(:read_cross_project) }
-
- context 'for admins' do
- let(:current_user) { build_stubbed(:admin) }
-
- subject { described_class.new(current_user, nil) }
-
- it 'allowed when in admin mode' do
- enable_admin_mode!(current_user)
-
- is_expected.to be_allowed(:read_cross_project)
- end
-
- it 'prevented when not in admin mode' do
- is_expected.not_to be_allowed(:read_cross_project)
- end
- end
-
- context 'for anonymous' do
- let(:current_user) { nil }
-
- it { is_expected.not_to be_allowed(:read_cross_project) }
- end
+ it_behaves_like 'admin only access', :read_cross_project
end
end
describe 'full private access' do
- let(:current_user) { build_stubbed(:user) }
-
- subject { described_class.new(current_user, nil) }
-
- it { is_expected.not_to be_allowed(:read_all_resources) }
-
- context 'for admins' do
- let(:current_user) { build_stubbed(:admin) }
-
- it 'allowed when in admin mode' do
- enable_admin_mode!(current_user)
-
- is_expected.to be_allowed(:read_all_resources)
- end
+ it_behaves_like 'admin only access', :read_all_resources
+ end
- it 'prevented when not in admin mode' do
- is_expected.not_to be_allowed(:read_all_resources)
- end
- end
+ describe 'change_repository_storage' do
+ it_behaves_like 'admin only access', :change_repository_storage
end
end