diff options
author | Mayra Cabrera <mcabrera@gitlab.com> | 2018-05-21 20:56:54 +0000 |
---|---|---|
committer | Mayra Cabrera <mcabrera@gitlab.com> | 2018-05-25 10:22:11 -0500 |
commit | 80120128f0d2dfcaff3bf4a6cfc1fbbe0762f810 (patch) | |
tree | add21220714c223d87e4253a0dca66bda896a93d /spec | |
parent | 484224f04e8c86981e4590360e9f2ba3e14e2320 (diff) | |
download | gitlab-ce-80120128f0d2dfcaff3bf4a6cfc1fbbe0762f810.tar.gz |
Merge branch 'security-dm-delete-deploy-key-10-7' into 'security-10-7'
[10.7] Fix API to remove deploy key from project instead of deleting it entirely
See merge request gitlab/gitlabhq!2380
Diffstat (limited to 'spec')
-rw-r--r-- | spec/requests/api/deploy_keys_spec.rb | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/spec/requests/api/deploy_keys_spec.rb b/spec/requests/api/deploy_keys_spec.rb index ae9c0e9c304..32fc704a79b 100644 --- a/spec/requests/api/deploy_keys_spec.rb +++ b/spec/requests/api/deploy_keys_spec.rb @@ -171,7 +171,7 @@ describe API::DeployKeys do deploy_key end - it 'deletes existing key' do + it 'removes existing key from project' do expect do delete api("/projects/#{project.id}/deploy_keys/#{deploy_key.id}", admin) @@ -179,6 +179,44 @@ describe API::DeployKeys do end.to change { project.deploy_keys.count }.by(-1) end + context 'when the deploy key is public' do + it 'does not delete the deploy key' do + expect do + delete api("/projects/#{project.id}/deploy_keys/#{deploy_key.id}", admin) + + expect(response).to have_gitlab_http_status(204) + end.not_to change { DeployKey.count } + end + end + + context 'when the deploy key is not public' do + let!(:deploy_key) { create(:deploy_key, public: false) } + + context 'when the deploy key is only used by this project' do + it 'deletes the deploy key' do + expect do + delete api("/projects/#{project.id}/deploy_keys/#{deploy_key.id}", admin) + + expect(response).to have_gitlab_http_status(204) + end.to change { DeployKey.count }.by(-1) + end + end + + context 'when the deploy key is used by other projects' do + before do + create(:deploy_keys_project, project: project2, deploy_key: deploy_key) + end + + it 'does not delete the deploy key' do + expect do + delete api("/projects/#{project.id}/deploy_keys/#{deploy_key.id}", admin) + + expect(response).to have_gitlab_http_status(204) + end.not_to change { DeployKey.count } + end + end + end + it 'returns 404 Not Found with invalid ID' do delete api("/projects/#{project.id}/deploy_keys/404", admin) |