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
a264dc20
Commit
a264dc20
authored
Sep 20, 2019
by
GitLab Bot
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add latest changes from gitlab-org/gitlab@master
parent
fc8c74fd
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
70 additions
and
19 deletions
+70
-19
app/views/projects/mirrors/_mirror_repos.html.haml
app/views/projects/mirrors/_mirror_repos.html.haml
+3
-3
app/views/projects/mirrors/_ssh_host_keys.html.haml
app/views/projects/mirrors/_ssh_host_keys.html.haml
+2
-2
app/views/shared/_remote_mirror_update_button.html.haml
app/views/shared/_remote_mirror_update_button.html.haml
+1
-1
qa/qa/page/base.rb
qa/qa/page/base.rb
+6
-2
qa/qa/page/project/settings/mirroring_repositories.rb
qa/qa/page/project/settings/mirroring_repositories.rb
+48
-7
qa/qa/page/project/settings/repository.rb
qa/qa/page/project/settings/repository.rb
+2
-2
qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb
...r_ui/3_create/repository/push_mirroring_over_http_spec.rb
+2
-2
qa/qa/support/page/logging.rb
qa/qa/support/page/logging.rb
+6
-0
No files found.
app/views/projects/mirrors/_mirror_repos.html.haml
View file @
a264dc20
-
expanded
=
expanded_by_default?
-
protocols
=
Gitlab
::
UrlSanitizer
::
ALLOWED_SCHEMES
.
join
(
'|'
)
%section
.settings.project-mirror-settings.js-mirror-settings.no-animate
.qa-mirroring-repositories-settings
#js-push-remote-settings
{
class:
(
'expanded'
if
expanded
)
}
%section
.settings.project-mirror-settings.js-mirror-settings.no-animate
#js-push-remote-settings
{
class:
(
'expanded'
if
expanded
),
data:
{
qa_selector:
'mirroring_repositories_settings_section'
}
}
.settings-header
%h4
=
_
(
'Mirroring repositories'
)
%button
.btn.js-settings-toggle
...
...
@@ -59,10 +59,10 @@
-
if
mirror
.
disabled?
=
render
'projects/mirrors/disabled_mirror_badge'
-
if
mirror
.
last_error
.
present?
.badge.mirror-error-badge
{
data:
{
toggle:
'tooltip'
,
html:
'true'
},
title:
html_escape
(
mirror
.
last_error
.
try
(
:strip
))
}=
_
(
'Error'
)
.badge.mirror-error-badge
{
data:
{
toggle:
'tooltip'
,
html:
'true'
,
qa_selector:
'mirror_error_badge'
},
title:
html_escape
(
mirror
.
last_error
.
try
(
:strip
))
}=
_
(
'Error'
)
%td
.btn-group.mirror-actions-group.pull-right
{
role:
'group'
}
-
if
mirror
.
ssh_key_auth?
=
clipboard_button
(
text:
mirror
.
ssh_public_key
,
class:
'btn btn-default'
,
title:
_
(
'Copy SSH public key'
))
=
clipboard_button
(
text:
mirror
.
ssh_public_key
,
class:
'btn btn-default'
,
title:
_
(
'Copy SSH public key'
)
,
qa_selector:
'copy_public_key_button'
)
=
render
'shared/remote_mirror_update_button'
,
remote_mirror:
mirror
%button
.js-delete-mirror.qa-delete-mirror.rspec-delete-mirror.btn.btn-danger
{
type:
'button'
,
data:
{
mirror_id:
mirror
.
id
,
toggle:
'tooltip'
,
container:
'body'
},
title:
_
(
'Remove'
)
}=
icon
(
'trash-o'
)
app/views/projects/mirrors/_ssh_host_keys.html.haml
View file @
a264dc20
...
...
@@ -3,13 +3,13 @@
-
verified_at
=
mirror
.
ssh_known_hosts_verified_at
.form-group.js-ssh-host-keys-section
{
class:
(
'collapse'
unless
mirror
.
ssh_mirror_url?
)
}
%button
.btn.btn-inverted.btn-secondary.inline.js-detect-host-keys.append-right-10
{
type:
'button'
}
%button
.btn.btn-inverted.btn-secondary.inline.js-detect-host-keys.append-right-10
{
type:
'button'
,
data:
{
qa_selector:
'detect_host_keys'
}
}
=
icon
(
'spinner spin'
,
class:
'js-spinner d-none'
)
=
_
(
'Detect host keys'
)
.fingerprint-ssh-info.js-fingerprint-ssh-info.prepend-top-10.append-bottom-10
{
class:
(
'collapse'
unless
mirror
.
ssh_mirror_url?
)
}
%label
.label-bold
=
_
(
'Fingerprints'
)
.fingerprints-list.js-fingerprints-list
.fingerprints-list.js-fingerprints-list
{
data:
{
qa_selector:
'fingerprints_list'
}
}
-
mirror
.
ssh_known_hosts_fingerprints
.
each
do
|
fp
|
%code
=
fp
.
fingerprint
-
if
verified_at
...
...
app/views/shared/_remote_mirror_update_button.html.haml
View file @
a264dc20
-
if
remote_mirror
.
update_in_progress?
%button
.btn.disabled
{
type:
'button'
,
data:
{
toggle:
'tooltip'
,
container:
'body'
},
title:
_
(
'Updating'
)
}
%button
.btn.disabled
{
type:
'button'
,
data:
{
toggle:
'tooltip'
,
container:
'body'
,
qa_selector:
'updating_button'
},
title:
_
(
'Updating'
)
}
=
icon
(
"refresh spin"
)
-
elsif
remote_mirror
.
enabled?
=
link_to
update_now_project_mirror_path
(
@project
,
sync_remote:
true
),
method: :post
,
class:
"btn qa-update-now-button rspec-update-now-button"
,
data:
{
toggle:
'tooltip'
,
container:
'body'
},
title:
_
(
'Update now'
)
do
...
...
qa/qa/page/base.rb
View file @
a264dc20
...
...
@@ -15,6 +15,10 @@ module QA
def_delegators
:evaluator
,
:view
,
:views
def
assert_no_element
(
name
)
assert_no_selector
(
element_selector_css
(
name
))
end
def
refresh
page
.
refresh
end
...
...
@@ -102,9 +106,9 @@ module QA
def
select_element
(
name
,
value
)
element
=
find_element
(
name
)
return
if
element
.
text
.
downcase
.
to_s
==
value
.
to_s
return
if
element
.
text
==
value
element
.
select
value
.
to_s
.
capitalize
element
.
select
value
end
def
has_element?
(
name
,
text:
nil
,
wait:
Capybara
.
default_max_wait_time
)
...
...
qa/qa/page/project/settings/mirroring_repositories.rb
View file @
a264dc20
...
...
@@ -15,7 +15,9 @@ module QA
element
:mirror_repository_button
element
:mirror_repository_url_cell
element
:mirror_last_update_at_cell
element
:mirror_error_badge
element
:mirrored_repository_row
element
:copy_public_key_button
end
view
'app/views/projects/mirrors/_mirror_repos_form.html.haml'
do
...
...
@@ -24,6 +26,17 @@ module QA
view
'app/views/shared/_remote_mirror_update_button.html.haml'
do
element
:update_now_button
element
:updating_button
end
view
'app/views/projects/mirrors/_ssh_host_keys.html.haml'
do
element
:detect_host_keys
element
:fingerprints_list
end
view
'app/views/projects/mirrors/_authentication_method.html.haml'
do
element
:authentication_method
element
:password
end
def
repository_url
=
(
value
)
...
...
@@ -35,17 +48,40 @@ module QA
end
def
mirror_direction
=
(
value
)
raise
ArgumentError
,
"Mirror direction must be
:push or :pull"
unless
[
:push
,
:pull
]
.
include?
value
raise
ArgumentError
,
"Mirror direction must be
'Push' or 'Pull'"
unless
%w(Push Pull)
.
include?
value
select_element
(
:mirror_direction
,
value
)
# Changing the mirror direction causes the fields below to change,
# and that change is animated, so we need to wait for the animation
# to complete otherwise changes to those fields could fail
wait_for_animated_element
:authentication_method
end
def
authentication_method
=
(
value
)
raise
ArgumentError
,
"Authentication method must be
:password or :none"
unless
[
:password
,
:none
]
.
include?
value
raise
ArgumentError
,
"Authentication method must be
'SSH public key', 'Password', or 'None'"
unless
%w(Password None SSH\ public\ key)
.
include?
value
select_element
(
:authentication_method
,
value
)
end
def
public_key
(
url
)
row_index
=
find_repository_row_index
url
within_element_by_index
(
:mirrored_repository_row
,
row_index
)
do
find_element
(
:copy_public_key_button
)[
'data-clipboard-text'
]
end
end
def
detect_host_keys
click_element
:detect_host_keys
# The host key detection process is interrupted if we navigate away
# from the page before the fingerprint appears.
wait
(
max:
5
)
do
find_element
(
:fingerprints_list
).
has_text?
/.*/
end
end
def
mirror_repository
click_element
:mirror_repository_button
end
...
...
@@ -54,7 +90,9 @@ module QA
row_index
=
find_repository_row_index
url
within_element_by_index
(
:mirrored_repository_row
,
row_index
)
do
click_element
:update_now_button
# When a repository is first mirrored, the update process might
# already be started, so the button is already "clicked"
click_element
:update_now_button
unless
has_element?
:updating_button
end
# Wait a few seconds for the sync to occur and then refresh the page
...
...
@@ -72,12 +110,14 @@ module QA
# Fail early if the page still shows that there has been no update
within_element_by_index
(
:mirrored_repository_row
,
row_index
)
do
find_element
(
:mirror_last_update_at_cell
,
wait:
0
).
assert_no_text
(
'Never'
)
assert_no_element
(
:mirror_error_badge
)
end
end
private
def
find_repository_row_index
(
target_url
)
wait
(
max:
5
,
reload:
false
)
do
all_elements
(
:mirror_repository_url_cell
).
index
do
|
url
|
# The url might be a sanitized url but the target_url won't be so
# we compare just the paths instead of the full url
...
...
@@ -88,6 +128,7 @@ module QA
end
end
end
end
end
QA
::
Page
::
Project
::
Settings
::
MirroringRepositories
.
prepend_if_ee
(
'QA::EE::Page::Project::Settings::MirroringRepositories'
)
qa/qa/page/project/settings/repository.rb
View file @
a264dc20
...
...
@@ -16,7 +16,7 @@ module QA
end
view
'app/views/projects/mirrors/_mirror_repos.html.haml'
do
element
:mirroring_repositories_settings
element
:mirroring_repositories_settings
_section
end
def
expand_deploy_keys
(
&
block
)
...
...
@@ -38,7 +38,7 @@ module QA
end
def
expand_mirroring_repositories
(
&
block
)
expand_section
(
:mirroring_repositories_settings
)
do
expand_section
(
:mirroring_repositories_settings
_section
)
do
MirroringRepositories
.
perform
(
&
block
)
end
end
...
...
qa/qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb
View file @
a264dc20
...
...
@@ -25,8 +25,8 @@ module QA
settings
.
expand_mirroring_repositories
do
|
mirror_settings
|
# Configure the source project to push to the target project
mirror_settings
.
repository_url
=
target_project_uri
mirror_settings
.
mirror_direction
=
:push
mirror_settings
.
authentication_method
=
:password
mirror_settings
.
mirror_direction
=
'Push'
mirror_settings
.
authentication_method
=
'Password'
mirror_settings
.
password
=
Runtime
::
User
.
password
mirror_settings
.
mirror_repository
mirror_settings
.
update
target_project_uri
...
...
qa/qa/support/page/logging.rb
View file @
a264dc20
...
...
@@ -4,6 +4,12 @@ module QA
module
Support
module
Page
module
Logging
def
assert_no_element
(
name
)
log
(
"asserting no element :
#{
name
}
"
)
super
end
def
refresh
log
(
"refreshing
#{
current_url
}
"
)
...
...
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