diff options
author | James Edwards-Jones <jedwardsjones@gitlab.com> | 2018-03-25 00:54:56 +0000 |
---|---|---|
committer | James Edwards-Jones <jedwardsjones@gitlab.com> | 2018-03-26 10:29:52 +0100 |
commit | 973bd4622dec2c326d05a047b93a7b67c9196fb4 (patch) | |
tree | 4e87541b35859580eb32869f358b6b52b4201f8f /spec/controllers/projects/protected_branches_controller_spec.rb | |
parent | e7061396666074c799780a9fc4090267c3b87e12 (diff) | |
download | gitlab-ce-973bd4622dec2c326d05a047b93a7b67c9196fb4.tar.gz |
ProtectedBranchPolicy used from Controller for destroy/update
Diffstat (limited to 'spec/controllers/projects/protected_branches_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/protected_branches_controller_spec.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/spec/controllers/projects/protected_branches_controller_spec.rb b/spec/controllers/projects/protected_branches_controller_spec.rb index d9f6878d6b1..096e29bc39f 100644 --- a/spec/controllers/projects/protected_branches_controller_spec.rb +++ b/spec/controllers/projects/protected_branches_controller_spec.rb @@ -36,6 +36,19 @@ describe Projects::ProtectedBranchesController do post(:create, project_params.merge(protected_branch: create_params)) end.to change(ProtectedBranch, :count).by(1) end + + context 'when a policy restricts rule deletion' do + before do + policy = instance_double(ProtectedBranchPolicy, can?: false) + allow(ProtectedBranchPolicy).to receive(:new).and_return(policy) + end + + it "prevents creation of the protected branch rule" do + post(:create, project_params.merge(protected_branch: create_params)) + + expect(ProtectedBranch.count).to eq 0 + end + end end describe "PUT #update" do @@ -51,6 +64,21 @@ describe Projects::ProtectedBranchesController do expect(protected_branch.reload.name).to eq('new_name') expect(json_response["name"]).to eq('new_name') end + + context 'when a policy restricts rule deletion' do + before do + policy = instance_double(ProtectedBranchPolicy, can?: false) + allow(ProtectedBranchPolicy).to receive(:new).and_return(policy) + end + + it "prevents update of the protected branch rule" do + old_name = protected_branch.name + + put(:update, base_params.merge(protected_branch: update_params)) + + expect(protected_branch.reload.name).to eq(old_name) + end + end end describe "DELETE #destroy" do @@ -63,5 +91,18 @@ describe Projects::ProtectedBranchesController do expect { ProtectedBranch.find(protected_branch.id) }.to raise_error(ActiveRecord::RecordNotFound) end + + context 'when a policy restricts rule deletion' do + before do + policy = instance_double(ProtectedBranchPolicy, can?: false) + allow(ProtectedBranchPolicy).to receive(:new).and_return(policy) + end + + it "prevents deletion of the protected branch rule" do + delete(:destroy, base_params) + + expect(response.status).to eq(403) + end + end end end |