summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean McGivern <sean@mcgivern.me.uk>2017-03-23 15:56:37 +0000
committerSean McGivern <sean@mcgivern.me.uk>2017-03-23 15:56:37 +0000
commit64aaa1ae1a4cd4b1be52c505c97a93763d5eaa30 (patch)
tree7f8598e57a29aa263a6f4d80b3ae6b2f473abffd
parentd576fd82333c79b3f056f26f79e85c0eceb5704b (diff)
parente0d2f249b4884f9525c44119680bf804e8a7ff20 (diff)
downloadgitlab-ce-64aaa1ae1a4cd4b1be52c505c97a93763d5eaa30.tar.gz
Merge branch 'deploy-key-disable-missing' into 'master'
Return 404 if deploy key cannot be found in Projects::DeployKeysController#disable Closes #29633 See merge request !10091
-rw-r--r--app/controllers/projects/deploy_keys_controller.rb4
-rw-r--r--spec/features/projects/deploy_keys_spec.rb26
2 files changed, 29 insertions, 1 deletions
diff --git a/app/controllers/projects/deploy_keys_controller.rb b/app/controllers/projects/deploy_keys_controller.rb
index 1502b734f37..d0c44e297e3 100644
--- a/app/controllers/projects/deploy_keys_controller.rb
+++ b/app/controllers/projects/deploy_keys_controller.rb
@@ -31,8 +31,10 @@ class Projects::DeployKeysController < Projects::ApplicationController
end
def disable
- @project.deploy_keys_projects.find_by(deploy_key_id: params[:id]).destroy
+ deploy_key_project = @project.deploy_keys_projects.find_by(deploy_key_id: params[:id])
+ return render_404 unless deploy_key_project
+ deploy_key_project.destroy!
redirect_to_repository_settings(@project)
end
diff --git a/spec/features/projects/deploy_keys_spec.rb b/spec/features/projects/deploy_keys_spec.rb
new file mode 100644
index 00000000000..0b997f130ea
--- /dev/null
+++ b/spec/features/projects/deploy_keys_spec.rb
@@ -0,0 +1,26 @@
+require 'spec_helper'
+
+describe 'Project deploy keys', feature: true do
+ let(:user) { create(:user) }
+ let(:project) { create(:project_empty_repo) }
+
+ before do
+ project.team << [user, :master]
+ login_as(user)
+ end
+
+ describe 'removing key' do
+ before do
+ create(:deploy_keys_project, project: project)
+ end
+
+ it 'removes association between project and deploy key' do
+ visit namespace_project_settings_repository_path(project.namespace, project)
+
+ page.within '.deploy-keys' do
+ expect { click_on 'Remove' }
+ .to change { project.deploy_keys.count }.by(-1)
+ end
+ end
+ end
+end