Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
f5fc912b
Commit
f5fc912b
authored
Jul 28, 2017
by
Michael Kozono
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Exclude keys linked to other projects
parent
4c89929f
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
49 additions
and
10 deletions
+49
-10
app/models/project.rb
app/models/project.rb
+12
-1
changelogs/unreleased/mk-fix-deploy-key-deletion.yml
changelogs/unreleased/mk-fix-deploy-key-deletion.yml
+4
-0
spec/models/project_spec.rb
spec/models/project_spec.rb
+33
-9
No files found.
app/models/project.rb
View file @
f5fc912b
...
...
@@ -1265,7 +1265,18 @@ class Project < ActiveRecord::Base
end
def
remove_private_deploy_keys
deploy_keys
.
where
(
public:
false
).
delete_all
exclude_keys_linked_to_other_projects
=
<<-
SQL
NOT EXISTS (
SELECT 1
FROM deploy_keys_projects dkp2
WHERE dkp2.deploy_key_id = deploy_keys_projects.deploy_key_id
AND dkp2.project_id != deploy_keys_projects.project_id
)
SQL
deploy_keys
.
where
(
public:
false
)
.
where
(
exclude_keys_linked_to_other_projects
)
.
delete_all
end
def
remove_pages
...
...
changelogs/unreleased/mk-fix-deploy-key-deletion.yml
0 → 100644
View file @
f5fc912b
---
title
:
Fix deletion of deploy keys linked to other projects
merge_request
:
13162
author
:
spec/models/project_spec.rb
View file @
f5fc912b
...
...
@@ -2238,19 +2238,43 @@ describe Project do
end
describe
'#remove_private_deploy_keys'
do
it
'removes the private deploy keys of a project'
do
project
=
create
(
:empty_project
)
let!
(
:project
)
{
create
(
:empty_project
)
}
context
'for a private deploy key'
do
let!
(
:key
)
{
create
(
:deploy_key
,
public:
false
)
}
let!
(
:deploy_keys_project
)
{
create
(
:deploy_keys_project
,
deploy_key:
key
,
project:
project
)
}
context
'when the key is not linked to another project'
do
it
'removes the key'
do
project
.
remove_private_deploy_keys
expect
(
project
.
deploy_keys
).
not_to
include
(
key
)
end
end
context
'when the key is linked to another project'
do
before
do
another_project
=
create
(
:empty_project
)
create
(
:deploy_keys_project
,
deploy_key:
key
,
project:
another_project
)
end
it
'does not remove the key'
do
project
.
remove_private_deploy_keys
private_key
=
create
(
:deploy_key
,
public:
false
)
public_key
=
create
(
:deploy_key
,
public:
true
)
expect
(
project
.
deploy_keys
).
to
include
(
key
)
end
end
end
create
(
:deploy_keys_project
,
deploy_key:
private_key
,
project:
project
)
create
(
:deploy_keys_project
,
deploy_key:
public_key
,
project:
project
)
context
'for a public deploy key'
do
let!
(
:key
)
{
create
(
:deploy_key
,
public:
true
)
}
let!
(
:deploy_keys_project
)
{
create
(
:deploy_keys_project
,
deploy_key:
key
,
project:
project
)
}
it
'does not remove the key'
do
project
.
remove_private_deploy_keys
expect
(
project
.
deploy_keys
.
where
(
public:
false
).
any?
).
to
eq
(
false
)
e
xpect
(
project
.
deploy_keys
.
where
(
public:
true
).
any?
).
to
eq
(
true
)
expect
(
project
.
deploy_keys
).
to
include
(
key
)
e
nd
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment