Refactor spec/policies/project_policy_spec.rb to minimize the diff with CE
What does this MR do?
I discovered the discrepancy while reviewing https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14257/diffs#d458b7cdebc6dde2dcb0e3a6c2b68503219b28d9.
The diff was as follows:
diff --git a/spec/policies/project_policy_spec.rb b/spec/policies/project_policy_spec.rb
index 4dbaf7fb025..4e7bbaf83ca 100644
--- a/spec/policies/project_policy_spec.rb
+++ b/spec/policies/project_policy_spec.rb
@@ -6,13 +6,14 @@ describe ProjectPolicy do
let(:dev) { create(:user) }
let(:master) { create(:user) }
let(:owner) { create(:user) }
+ let(:auditor) { create(:user, :auditor) }
let(:admin) { create(:admin) }
let(:project) { create(:project, :public, namespace: owner.namespace) }
let(:guest_permissions) do
%i[
read_project read_board read_list read_wiki read_issue read_label
- read_milestone read_project_snippet read_project_member
+ read_issue_link read_milestone read_project_snippet read_project_member
read_note create_project create_issue create_note
upload_file
]
@@ -21,7 +22,7 @@ describe ProjectPolicy do
let(:reporter_permissions) do
%i[
download_code fork_project create_project_snippet update_issue
- admin_issue admin_label admin_list read_commit_status read_build
+ admin_issue admin_label admin_issue_link admin_list read_commit_status read_build
read_container_image read_pipeline read_environment read_deployment
read_merge_request download_wiki_code
]
@@ -43,7 +44,8 @@ describe ProjectPolicy do
let(:master_permissions) do
%i[
- delete_protected_branch update_project_snippet update_environment
+ push_code_to_protected_branches delete_protected_branch
+ update_project_snippet update_environment
update_deployment admin_milestone admin_project_snippet
admin_project_member admin_note admin_wiki admin_project
admin_commit_status admin_build admin_container_image
@@ -66,6 +68,16 @@ describe ProjectPolicy do
]
end
+ let(:auditor_permissions) do
+ %i[
+ download_code download_wiki_code read_project read_board read_list
+ read_wiki read_issue read_label read_issue_link read_milestone read_project_snippet
+ read_project_member read_note read_cycle_analytics read_pipeline
+ read_build read_commit_status read_container_image read_environment
+ read_deployment read_merge_request read_pages
+ ]
+ end
+
before do
project.team << [guest, :guest]
project.team << [master, :master]
@@ -268,5 +280,33 @@ describe ProjectPolicy do
expect_allowed(*owner_permissions)
end
end
+
+ context 'auditor' do
+ let(:current_user) { auditor }
+
+ context 'not a team member' do
+ it do
+ is_expected.to be_disallowed(*developer_permissions)
+ is_expected.to be_disallowed(*master_permissions)
+ is_expected.to be_disallowed(*owner_permissions)
+ is_expected.to be_disallowed(*(guest_permissions - auditor_permissions))
+ is_expected.to be_allowed(*auditor_permissions)
+ end
+ end
+
+ context 'team member' do
+ before do
+ project.team << [auditor, :guest]
+ end
+
+ it do
+ is_expected.to be_disallowed(*developer_permissions)
+ is_expected.to be_disallowed(*master_permissions)
+ is_expected.to be_disallowed(*owner_permissions)
+ is_expected.to be_allowed(*(guest_permissions - auditor_permissions))
+ is_expected.to be_allowed(*auditor_permissions)
+ end
+ end
+ end
end
end