Открыть боковую панель
nt_test121
nt_project_9da4a5yt9x4b
Коммиты
a21d3a76
Коммит
a21d3a76
создал
Авг 11, 2016
по автору
James Lopez
Просмотр файлов
Fix permissions check in controller, added relevant spec and updated docs
владелец
87b07f6a
Изменения
6
Скрыть пробелы
Построчно
Рядом
app/controllers/import/gitlab_projects_controller.rb
Просмотр файла @
a21d3a76
class
Import::GitlabProjectsController
<
Import
::
BaseController
before_action
:verify_gitlab_project_import_enabled
before_action
:authenticate_admin!
def
new
@namespace_id
=
project_params
[
:namespace_id
]
...
...
@@ -47,4 +48,8 @@ def project_params
:path
,
:namespace_id
,
:file
)
end
def
authenticate_admin!
render_404
unless
current_user
.
is_admin?
end
end
app/views/projects/new.html.haml
Просмотр файла @
a21d3a76
...
...
@@ -77,7 +77,7 @@
=
link_to
"#"
,
class:
'btn js-toggle-button import_git'
do
=
icon
(
'git'
,
text:
'Repo by URL'
)
%div
{
class:
'import_gitlab_project'
}
-
if
gitlab_project_import_enabled?
-
if
gitlab_project_import_enabled?
&&
current_user
.
is_admin?
=
link_to
new_import_gitlab_project_path
,
class:
'btn btn_import_gitlab_project project-submit'
do
=
icon
(
'gitlab'
,
text:
'GitLab export'
)
...
...
doc/user/project/settings/import_export.md
Просмотр файла @
a21d3a76
...
...
@@ -7,8 +7,7 @@
> than that of the exporter.
> - For existing installations, the project import option has to be enabled in
> application settings (`/admin/application_settings`) under 'Import sources'.
> Ask your administrator if you don't see the **GitLab export** button when
> creating a new project.
> You will have to be an administrator to enable and use the import functionality.
> - You can find some useful raketasks if you are an administrator in the
> [import_export](../../../administration/raketasks/project_import_export.md)
> raketask.
...
...
features/dashboard/new_project.feature
Просмотр файла @
a21d3a76
...
...
@@ -9,7 +9,7 @@ Background:
@javascript
Scenario
:
I
should see New Projects page
Then
I see
"New Project"
page
Then
I see all possible import optios
Then
I see all possible import optio
n
s
@javascript
Scenario
:
I
should see instructions on how to import from Git URL
...
...
features/steps/dashboard/new_project.rb
Просмотр файла @
a21d3a76
...
...
@@ -14,14 +14,13 @@ class Spinach::Features::NewProject < Spinach::FeatureSteps
expect
(
page
).
to
have_content
(
'Project name'
)
end
step
'I see all possible import optios'
do
step
'I see all possible import optio
n
s'
do
expect
(
page
).
to
have_link
(
'GitHub'
)
expect
(
page
).
to
have_link
(
'Bitbucket'
)
expect
(
page
).
to
have_link
(
'GitLab.com'
)
expect
(
page
).
to
have_link
(
'Gitorious.org'
)
expect
(
page
).
to
have_link
(
'Google Code'
)
expect
(
page
).
to
have_link
(
'Repo by URL'
)
expect
(
page
).
to
have_link
(
'GitLab export'
)
end
step
'I click on "Import project from GitHub"'
do
...
...
spec/features/projects/import_export/import_file_spec.rb
Просмотр файла @
a21d3a76
...
...
@@ -3,8 +3,9 @@
feature
'project import'
,
feature:
true
,
js:
true
do
include
Select2Helper
let
(
:user
)
{
create
(
:admin
)
}
let!
(
:namespace
)
{
create
(
:namespace
,
name:
"asd"
,
owner:
user
)
}
let
(
:admin
)
{
create
(
:admin
)
}
let
(
:normal_user
)
{
create
(
:user
)
}
let!
(
:namespace
)
{
create
(
:namespace
,
name:
"asd"
,
owner:
admin
)
}
let
(
:file
)
{
File
.
join
(
Rails
.
root
,
'spec'
,
'features'
,
'projects'
,
'import_export'
,
'test_project_export.tar.gz'
)
}
let
(
:export_path
)
{
"
#{
Dir
::
tmpdir
}
/import_file_spec"
}
let
(
:project
)
{
Project
.
last
}
...
...
@@ -12,66 +13,87 @@
background
do
allow_any_instance_of
(
Gitlab
::
ImportExport
).
to
receive
(
:storage_path
).
and_return
(
export_path
)
login_as
(
user
)
end
after
(
:each
)
do
FileUtils
.
rm_rf
(
export_path
,
secure:
true
)
end
scenario
'user imports an exported project successfully'
do
expect
(
Project
.
all
.
count
).
to
be_zero
context
'admin user'
do
before
do
login_as
(
admin
)
end
visit
new_project_path
scenario
'user imports an exported project successfully'
do
expect
(
Project
.
all
.
count
).
to
be_zero
select2
(
'2'
,
from:
'#project_namespace_id'
)
fill_in
:project_path
,
with:
'test-project-path'
,
visible:
true
click_link
'GitLab export'
visit
new_project_path
expect
(
page
).
to
have_content
(
'GitLab project export'
)
expect
(
URI
.
parse
(
current_url
).
query
).
to
eq
(
'namespace_id=2&path=test-project-path'
)
select2
(
'2'
,
from:
'#project_namespace_id'
)
fill_in
:project_path
,
with:
'test-project-path'
,
visible:
true
click_link
'GitLab export'
attach_file
(
'file'
,
file
)
expect
(
page
).
to
have_content
(
'GitLab project export'
)
expect
(
URI
.
parse
(
current_url
).
query
).
to
eq
(
'namespace_id=2&path=test-project-path'
)
click_on
'Import project'
# import starts
attach_file
(
'file'
,
file
)
expect
(
project
).
not_to
be_nil
expect
(
project
.
issues
).
not_to
be_empty
expect
(
project
.
merge_requests
).
not_to
be_empty
expect
(
project_hook
).
to
exist
expect
(
wiki_exists?
).
to
be
true
expect
(
project
.
import_status
).
to
eq
(
'finished'
)
end
click_on
'Import project'
# import starts
expect
(
project
).
not_to
be_nil
expect
(
project
.
issues
).
not_to
be_empty
expect
(
project
.
merge_requests
).
not_to
be_empty
expect
(
project_hook
).
to
exist
expect
(
wiki_exists?
).
to
be
true
expect
(
project
.
import_status
).
to
eq
(
'finished'
)
end
scenario
'invalid project'
do
project
=
create
(
:project
,
namespace_id:
2
)
scenario
'invalid project'
do
project
=
create
(
:project
,
namespace_id:
2
)
visit
new_project_path
visit
new_project_path
select2
(
'2'
,
from:
'#project_namespace_id'
)
fill_in
:project_path
,
with:
project
.
name
,
visible:
true
click_link
'GitLab export'
select2
(
'2'
,
from:
'#project_namespace_id'
)
fill_in
:project_path
,
with:
project
.
name
,
visible:
true
click_link
'GitLab export'
attach_file
(
'file'
,
file
)
click_on
'Import project'
attach_file
(
'file'
,
file
)
click_on
'Import project'
page
.
within
(
'.flash-container'
)
do
expect
(
page
).
to
have_content
(
'Project could not be imported'
)
page
.
within
(
'.flash-container'
)
do
expect
(
page
).
to
have_content
(
'Project could not be imported'
)
end
end
scenario
'project with no name'
do
create
(
:project
,
namespace_id:
2
)
visit
new_project_path
select2
(
'2'
,
from:
'#project_namespace_id'
)
# click on disabled element
find
(
:link
,
'GitLab export'
).
trigger
(
'click'
)
page
.
within
(
'.flash-container'
)
do
expect
(
page
).
to
have_content
(
'Please enter path and name'
)
end
end
end
scenario
'project with no name'
do
create
(
:project
,
namespace_id:
2
)
context
'normal user'
do
before
do
login_as
(
normal_user
)
end
visit
new_project_path
scenario
'non-admin user is not allowed to import a project'
do
expect
(
Project
.
all
.
count
).
to
be_zero
select2
(
'2'
,
from:
'#project_namespace_id'
)
visit
new_project_path
# click on disabled element
find
(
:link
,
'GitLab export'
).
trigger
(
'click'
)
fill_in
:project_path
,
with:
'test-project-path'
,
visible:
true
page
.
within
(
'.flash-container'
)
do
expect
(
page
).
to
have_content
(
'Please enter path and name'
)
expect
(
page
).
not_to
have_content
(
'GitLab export'
)
end
end
...
...
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать