diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-07 21:09:19 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-07 21:09:19 +0300 |
commit | 3290d46655f07d7ae3dca788d6df9f326972ffd8 (patch) | |
tree | 0d24713e1592cdd3583257f14a52d46a22539ed1 /spec/policies | |
parent | c6b3ec3f56fa32a0e0ed3de0d0878d25f1adaddf (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/policies')
-rw-r--r-- | spec/policies/metrics/dashboard/annotation_policy_spec.rb | 73 | ||||
-rw-r--r-- | spec/policies/project_policy_spec.rb | 3 |
2 files changed, 75 insertions, 1 deletions
diff --git a/spec/policies/metrics/dashboard/annotation_policy_spec.rb b/spec/policies/metrics/dashboard/annotation_policy_spec.rb new file mode 100644 index 00000000000..4dc5f4cd0b4 --- /dev/null +++ b/spec/policies/metrics/dashboard/annotation_policy_spec.rb @@ -0,0 +1,73 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Metrics::Dashboard::AnnotationPolicy, :models do + shared_examples 'metrics dashboard annotation policy' do + context 'when guest' do + before do + project.add_guest(user) + end + + it { expect(policy).to be_disallowed :read_metrics_dashboard_annotation } + it { expect(policy).to be_disallowed :create_metrics_dashboard_annotation } + it { expect(policy).to be_disallowed :update_metrics_dashboard_annotation } + it { expect(policy).to be_disallowed :delete_metrics_dashboard_annotation } + end + + context 'when reporter' do + before do + project.add_reporter(user) + end + + it { expect(policy).to be_allowed :read_metrics_dashboard_annotation } + it { expect(policy).to be_disallowed :create_metrics_dashboard_annotation } + it { expect(policy).to be_disallowed :update_metrics_dashboard_annotation } + it { expect(policy).to be_disallowed :delete_metrics_dashboard_annotation } + end + + context 'when developer' do + before do + project.add_developer(user) + end + + it { expect(policy).to be_allowed :read_metrics_dashboard_annotation } + it { expect(policy).to be_allowed :create_metrics_dashboard_annotation } + it { expect(policy).to be_allowed :update_metrics_dashboard_annotation } + it { expect(policy).to be_allowed :delete_metrics_dashboard_annotation } + end + + context 'when maintainer' do + before do + project.add_maintainer(user) + end + + it { expect(policy).to be_allowed :read_metrics_dashboard_annotation } + it { expect(policy).to be_allowed :create_metrics_dashboard_annotation } + it { expect(policy).to be_allowed :update_metrics_dashboard_annotation } + it { expect(policy).to be_allowed :delete_metrics_dashboard_annotation } + end + end + + describe 'rules' do + context 'environments annotation' do + let(:annotation) { create(:metrics_dashboard_annotation, environment: environment) } + let(:environment) { create(:environment) } + let!(:project) { environment.project } + let(:user) { create(:user) } + let(:policy) { described_class.new(user, annotation) } + + it_behaves_like 'metrics dashboard annotation policy' + end + + context 'cluster annotation' do + let(:annotation) { create(:metrics_dashboard_annotation, environment: nil, cluster: cluster) } + let(:cluster) { create(:cluster, :project) } + let(:project) { cluster.project } + let(:user) { create(:user) } + let(:policy) { described_class.new(user, annotation) } + + it_behaves_like 'metrics dashboard annotation policy' + end + end +end diff --git a/spec/policies/project_policy_spec.rb b/spec/policies/project_policy_spec.rb index cce84c4f357..d098369e124 100644 --- a/spec/policies/project_policy_spec.rb +++ b/spec/policies/project_policy_spec.rb @@ -28,7 +28,7 @@ describe ProjectPolicy do download_code fork_project create_snippet update_issue admin_issue admin_label admin_list read_commit_status read_build read_container_image read_pipeline read_environment read_deployment - read_merge_request download_wiki_code read_sentry_issue + read_merge_request download_wiki_code read_sentry_issue read_metrics_dashboard_annotation ] end @@ -43,6 +43,7 @@ describe ProjectPolicy do update_pipeline create_merge_request_from create_wiki push_code resolve_note create_container_image update_container_image destroy_container_image create_environment update_environment create_deployment update_deployment create_release update_release + create_metrics_dashboard_annotation delete_metrics_dashboard_annotation update_metrics_dashboard_annotation ] end |