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:
authorDouwe Maan <douwe@selenight.nl>2018-05-04 13:40:37 +0300
committerDouwe Maan <douwe@selenight.nl>2018-05-04 13:41:53 +0300
commit739029bb0f03ff2bf70d67b3d2a09ddd196143a6 (patch)
tree1cbb3b8e14dd16c1a66d727e73ed9b0177fce0cd /spec/requests
parent4cfa8168a204b42d2982a6817c9ba6c960ae62b3 (diff)
Fix API to remove deploy key from project instead of deleting it entirely
Diffstat (limited to 'spec/requests')
-rw-r--r--spec/requests/api/deploy_keys_spec.rb40
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)