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
1
Merge Requests
1
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
nexedi
gitlab-ce
Commits
241da0a1
Commit
241da0a1
authored
Nov 29, 2017
by
Rémy Coutable
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Resolve conflict in app/services/projects/update_service.rb
Signed-off-by:
Rémy Coutable
<
remy@rymai.me
>
parent
3c49758f
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
9 additions
and
196 deletions
+9
-196
app/services/projects/update_service.rb
app/services/projects/update_service.rb
+0
-10
ee/app/services/ee/projects/update_service.rb
ee/app/services/ee/projects/update_service.rb
+7
-0
spec/services/projects/update_service_spec.rb
spec/services/projects/update_service_spec.rb
+2
-186
No files found.
app/services/projects/update_service.rb
View file @
241da0a1
...
...
@@ -51,16 +51,6 @@ module Projects
params
.
except
(
:default_branch
,
:run_auto_devops_pipeline_explicit
,
:run_auto_devops_pipeline_implicit
)
end
<<<<<<<
HEAD
def
changing_storage_size?
new_repository_storage
=
params
[
:repository_storage
]
new_repository_storage
&&
project
.
repository
.
exists?
&&
can?
(
current_user
,
:change_repository_storage
,
project
)
end
=======
>>>>>>>
upstream
/
master
def
renaming_project_with_container_registry_tags?
new_path
=
params
[
:path
]
...
...
ee/app/services/ee/projects/update_service.rb
View file @
241da0a1
...
...
@@ -17,6 +17,13 @@ module EE
result
end
def
changing_storage_size?
new_repository_storage
=
params
[
:repository_storage
]
new_repository_storage
&&
project
.
repository
.
exists?
&&
can?
(
current_user
,
:change_repository_storage
,
project
)
end
private
def
log_audit_events
...
...
spec/services/projects/update_service_spec.rb
View file @
241da0a1
require
'spec_helper'
<<<<<<<
HEAD
describe
Projects
::
UpdateService
,
'#execute'
do
include
StubConfiguration
=======
describe
Projects
::
UpdateService
do
>>>>>>>
upstream
/
master
include
ProjectForksHelper
let
(
:user
)
{
create
(
:user
)
}
...
...
@@ -45,7 +41,6 @@ describe Projects::UpdateService do
result
=
update_project
(
project
,
user
,
visibility_level:
Gitlab
::
VisibilityLevel
::
INTERNAL
)
expect
(
result
).
to
eq
({
status: :success
})
expect
(
project
).
to
be_internal
<<<<<<<
HEAD
end
end
...
...
@@ -200,92 +195,10 @@ describe Projects::UpdateService do
status: :error
,
message:
"Name can contain only letters, digits, emojis, '_', '.', dash, space. It must start with letter, digit, emoji or '_'."
})
=======
end
end
context
'when visibility_level is PUBLIC'
do
it
'does not update the project to public'
do
result
=
update_project
(
project
,
user
,
visibility_level:
Gitlab
::
VisibilityLevel
::
PUBLIC
)
expect
(
result
).
to
eq
({
status: :error
,
message:
'New visibility level not allowed!'
})
expect
(
project
).
to
be_private
end
context
'when updated by an admin'
do
it
'updates the project to public'
do
result
=
update_project
(
project
,
admin
,
visibility_level:
Gitlab
::
VisibilityLevel
::
PUBLIC
)
expect
(
result
).
to
eq
({
status: :success
})
expect
(
project
).
to
be_public
end
end
end
end
context
'When project visibility is higher than parent group'
do
let
(
:group
)
{
create
(
:group
,
visibility_level:
Gitlab
::
VisibilityLevel
::
INTERNAL
)
}
before
do
project
.
update
(
namespace:
group
,
visibility_level:
group
.
visibility_level
)
end
it
'does not update project visibility level'
do
result
=
update_project
(
project
,
admin
,
visibility_level:
Gitlab
::
VisibilityLevel
::
PUBLIC
)
expect
(
result
).
to
eq
({
status: :error
,
message:
'Visibility level public is not allowed in a internal group.'
})
expect
(
project
.
reload
).
to
be_internal
end
end
end
describe
'when updating project that has forks'
do
let
(
:project
)
{
create
(
:project
,
:internal
)
}
let
(
:forked_project
)
{
fork_project
(
project
)
}
it
'updates forks visibility level when parent set to more restrictive'
do
opts
=
{
visibility_level:
Gitlab
::
VisibilityLevel
::
PRIVATE
}
expect
(
project
).
to
be_internal
expect
(
forked_project
).
to
be_internal
expect
(
update_project
(
project
,
admin
,
opts
)).
to
eq
({
status: :success
})
expect
(
project
).
to
be_private
expect
(
forked_project
.
reload
).
to
be_private
end
it
'does not update forks visibility level when parent set to less restrictive'
do
opts
=
{
visibility_level:
Gitlab
::
VisibilityLevel
::
PUBLIC
}
expect
(
project
).
to
be_internal
expect
(
forked_project
).
to
be_internal
expect
(
update_project
(
project
,
admin
,
opts
)).
to
eq
({
status: :success
})
expect
(
project
).
to
be_public
expect
(
forked_project
.
reload
).
to
be_internal
end
end
context
'when updating a default branch'
do
let
(
:project
)
{
create
(
:project
,
:repository
)
}
it
'changes a default branch'
do
update_project
(
project
,
admin
,
default_branch:
'feature'
)
expect
(
Project
.
find
(
project
.
id
).
default_branch
).
to
eq
'feature'
end
it
'does not change a default branch'
do
# The branch 'unexisted-branch' does not exist.
update_project
(
project
,
admin
,
default_branch:
'unexisted-branch'
)
expect
(
Project
.
find
(
project
.
id
).
default_branch
).
to
eq
'master'
>>>>>>>
upstream
/
master
end
end
<<<<<<<
HEAD
describe
'#run_auto_devops_pipeline?'
do
subject
{
described_class
.
new
(
project
,
user
,
params
).
run_auto_devops_pipeline?
}
...
...
@@ -305,31 +218,9 @@ describe Projects::UpdateService do
let
(
:params
)
{
{
run_auto_devops_pipeline_implicit:
'true'
}
}
it
{
is_expected
.
to
eq
(
true
)
}
=======
context
'when updating a project that contains container images'
do
before
do
stub_container_registry_config
(
enabled:
true
)
stub_container_registry_tags
(
repository:
/image/
,
tags:
%w[rc1]
)
create
(
:container_repository
,
project:
project
,
name: :image
)
end
it
'does not allow to rename the project'
do
result
=
update_project
(
project
,
admin
,
path:
'renamed'
)
expect
(
result
).
to
include
(
status: :error
)
expect
(
result
[
:message
]).
to
match
(
/contains container registry tags/
)
end
it
'allows to update other settings'
do
result
=
update_project
(
project
,
admin
,
public_builds:
true
)
expect
(
result
[
:status
]).
to
eq
:success
expect
(
project
.
reload
.
public_builds
).
to
be
true
end
>>>>>>>
upstream
/
master
end
<<<<<<<
HEAD
describe
'repository_storage'
do
let
(
:admin_user
)
{
create
(
:user
,
admin:
true
)
}
let
(
:user
)
{
create
(
:user
)
}
...
...
@@ -387,90 +278,15 @@ describe Projects::UpdateService do
expect
(
project
.
reload
.
repository_size_limit
).
to
be_nil
end
=======
context
'when renaming a project'
do
let
(
:repository_storage
)
{
'default'
}
let
(
:repository_storage_path
)
{
Gitlab
.
config
.
repositories
.
storages
[
repository_storage
][
'path'
]
}
context
'with legacy storage'
do
before
do
gitlab_shell
.
add_repository
(
repository_storage
,
"
#{
user
.
namespace
.
full_path
}
/existing"
)
end
after
do
gitlab_shell
.
remove_repository
(
repository_storage_path
,
"
#{
user
.
namespace
.
full_path
}
/existing"
)
end
it
'does not allow renaming when new path matches existing repository on disk'
do
result
=
update_project
(
project
,
admin
,
path:
'existing'
)
expect
(
result
).
to
include
(
status: :error
)
expect
(
result
[
:message
]).
to
match
(
'There is already a repository with that name on disk'
)
expect
(
project
).
not_to
be_valid
expect
(
project
.
errors
.
messages
).
to
have_key
(
:base
)
expect
(
project
.
errors
.
messages
[
:base
]).
to
include
(
'There is already a repository with that name on disk'
)
end
end
context
'with hashed storage'
do
let
(
:project
)
{
create
(
:project
,
:repository
,
creator:
user
,
namespace:
user
.
namespace
)
}
before
do
stub_application_setting
(
hashed_storage_enabled:
true
)
end
it
'does not check if new path matches existing repository on disk'
do
expect
(
project
).
not_to
receive
(
:repository_with_same_path_already_exists?
)
result
=
update_project
(
project
,
admin
,
path:
'existing'
)
expect
(
result
).
to
include
(
status: :success
)
end
end
end
context
'when passing invalid parameters'
do
it
'returns an error result when record cannot be updated'
do
result
=
update_project
(
project
,
admin
,
{
name:
'foo&bar'
})
expect
(
result
).
to
eq
({
status: :error
,
message:
"Name can contain only letters, digits, emojis, '_', '.', dash, space. It must start with letter, digit, emoji or '_'."
})
end
end
end
describe
'#run_auto_devops_pipeline?'
do
subject
{
described_class
.
new
(
project
,
user
,
params
).
run_auto_devops_pipeline?
}
context
'when neither pipeline setting is true'
do
let
(
:params
)
{
{}
}
it
{
is_expected
.
to
eq
(
false
)
}
end
context
'when run_auto_devops_pipeline_explicit is true'
do
let
(
:params
)
{
{
run_auto_devops_pipeline_explicit:
'true'
}
}
it
{
is_expected
.
to
eq
(
true
)
}
>>>>>>>
upstream
/
master
end
<<<<<<<
HEAD
it
'returns an error result when record cannot be updated'
do
admin
=
create
(
:admin
)
result
=
update_project
(
project
,
admin
,
{
name:
'foo&bar'
})
expect
(
result
).
to
eq
({
status: :error
,
message:
"Name can contain only letters, digits, emojis, '_', '.', dash, space. It must start with letter, digit, emoji or '_'."
})
=======
context
'when run_auto_devops_pipeline_implicit is true'
do
let
(
:params
)
{
{
run_auto_devops_pipeline_implicit:
'true'
}
}
it
{
is_expected
.
to
eq
(
true
)
}
end
>>>>>>>
upstream
/
master
end
def
update_project
(
project
,
user
,
opts
)
...
...
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