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
54657afc
Commit
54657afc
authored
Oct 17, 2018
by
Ash McKenzie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Geo: LFS tests for HTTP & SSH
parent
181d9377
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
543 additions
and
201 deletions
+543
-201
qa/qa/specs/features/browser_ui/ee_geo/http_push_spec.rb
qa/qa/specs/features/browser_ui/ee_geo/http_push_spec.rb
+105
-39
qa/qa/specs/features/browser_ui/ee_geo/http_push_to_secondary_spec.rb
...features/browser_ui/ee_geo/http_push_to_secondary_spec.rb
+144
-51
qa/qa/specs/features/browser_ui/ee_geo/ssh_push_spec.rb
qa/qa/specs/features/browser_ui/ee_geo/ssh_push_spec.rb
+129
-50
qa/qa/specs/features/browser_ui/ee_geo/ssh_push_to_secondary_spec.rb
.../features/browser_ui/ee_geo/ssh_push_to_secondary_spec.rb
+165
-61
No files found.
qa/qa/specs/features/browser_ui/ee_geo/http_push_spec.rb
View file @
54657afc
...
@@ -3,58 +3,124 @@
...
@@ -3,58 +3,124 @@
module
QA
module
QA
context
'Geo'
,
:orchestrated
,
:geo
do
context
'Geo'
,
:orchestrated
,
:geo
do
describe
'GitLab HTTP push'
do
describe
'GitLab HTTP push'
do
it
'is replicated to the secondary'
do
let
(
:file_name
)
{
'README.md'
}
file_name
=
'README.md'
file_content
=
'This is a Geo project! Commit from primary.'
Runtime
::
Browser
.
visit
(
:geo_primary
,
QA
::
Page
::
Main
::
Login
)
do
# Visit the primary node and login
Page
::
Main
::
Login
.
act
{
sign_in_using_credentials
}
# Create a new Project
project
=
Resource
::
Project
.
fabricate!
do
|
project
|
project
.
name
=
'geo-project'
project
.
description
=
'Geo test project'
end
# Perform a git push over HTTP directly to the primary
context
'regular git commit'
do
Resource
::
Repository
::
ProjectPush
.
fabricate!
do
|
push
|
it
'is replicated to the secondary'
do
push
.
project
=
project
file_content
=
'This is a Geo project! Commit from primary.'
push
.
file_name
=
file_name
push
.
file_content
=
"#
#{
file_content
}
"
push
.
commit_message
=
'Add README.md'
end
project
.
visit!
# Validate git push worked and file exists with content
Runtime
::
Browser
.
visit
(
:geo_primary
,
QA
::
Page
::
Main
::
Login
)
do
Page
::
Project
::
Show
.
perform
do
|
show
|
# Visit the primary node and login
show
.
wait_for_repository_replication
Page
::
Main
::
Login
.
act
{
sign_in_using_credentials
}
expect
(
page
).
to
have_content
(
file_name
)
# Create a new Project
expect
(
page
).
to
have_content
(
file_content
)
project
=
Resource
::
Project
.
fabricate!
do
|
project
|
end
project
.
name
=
'geo-project'
project
.
description
=
'Geo test project'
end
Runtime
::
Browser
.
visit
(
:geo_secondary
,
QA
::
Page
::
Main
::
Login
)
do
# Perform a git push over HTTP directly to the primary
# Visit the secondary node and login
Resource
::
Repository
::
ProjectPush
.
fabricate!
do
|
push
|
Page
::
Main
::
OAuth
.
act
{
authorize!
if
needs_authorization?
}
push
.
project
=
project
push
.
file_name
=
file_name
push
.
file_content
=
"#
#{
file_content
}
"
push
.
commit_message
=
'Add README.md'
end
project
.
visit!
# Validate git push worked and file exists with content
Page
::
Project
::
Show
.
perform
do
|
show
|
show
.
wait_for_repository_replication
EE
::
Page
::
Main
::
Banner
.
perform
do
|
banner
|
expect
(
page
).
to
have_content
(
file_name
)
expect
(
banner
).
to
have_secondary_read_only_banner
expect
(
page
).
to
have_content
(
file_content
)
end
end
Page
::
Main
::
Menu
.
perform
{
|
menu
|
menu
.
go_to_projects
}
Runtime
::
Browser
.
visit
(
:geo_secondary
,
QA
::
Page
::
Main
::
Login
)
do
# Visit the secondary node and login
Page
::
Main
::
OAuth
.
act
{
authorize!
if
needs_authorization?
}
EE
::
Page
::
Main
::
Banner
.
perform
do
|
banner
|
expect
(
banner
).
to
have_secondary_read_only_banner
end
Page
::
Main
::
Menu
.
perform
{
|
menu
|
menu
.
go_to_projects
}
Page
::
Dashboard
::
Projects
.
perform
do
|
dashboard
|
dashboard
.
wait_for_project_replication
(
project
.
name
)
dashboard
.
go_to_project
(
project
.
name
)
end
Page
::
Dashboard
::
Projects
.
perform
do
|
dashboard
|
# Validate the content has been sync'd from the primary
dashboard
.
wait_for_project_replication
(
project
.
name
)
Page
::
Project
::
Show
.
perform
do
|
show
|
dashboard
.
go_to_project
(
project
.
name
)
show
.
wait_for_repository_replication_with
(
file_name
)
expect
(
page
).
to
have_content
(
file_name
)
expect
(
page
).
to
have_content
(
file_content
)
end
end
end
end
end
end
# Validate the content has been sync'd from the primary
context
'git-lfs commit'
do
it
'is replicated to the secondary'
do
file_content
=
'This is a Geo project!'
lfs_file_content
=
'The rendered file could not be displayed because it is stored in LFS.'
Runtime
::
Browser
.
visit
(
:geo_primary
,
QA
::
Page
::
Main
::
Login
)
do
# Visit the primary node and login
Page
::
Main
::
Login
.
act
{
sign_in_using_credentials
}
# Create a new Project
project
=
Resource
::
Project
.
fabricate!
do
|
project
|
project
.
name
=
'geo-project'
project
.
description
=
'Geo test project'
end
# Perform a git push over HTTP directly to the primary
push
=
Resource
::
Repository
::
ProjectPush
.
fabricate!
do
|
push
|
push
.
use_lfs
=
true
push
.
project
=
project
push
.
file_name
=
file_name
push
.
file_content
=
"#
#{
file_content
}
"
push
.
commit_message
=
'Add README.md'
end
project
.
visit!
expect
(
push
.
output
).
to
match
(
/Locking support detected on remote/
)
expect
(
push
.
output
).
to
match
(
%r{Uploading LFS objects: 100%
\(
1/1
\)
}
)
# Validate git push worked and file exists with content
Page
::
Project
::
Show
.
perform
do
|
show
|
Page
::
Project
::
Show
.
perform
do
|
show
|
show
.
wait_for_repository_replication
_with
(
file_name
)
show
.
wait_for_repository_replication
expect
(
page
).
to
have_content
(
file_name
)
expect
(
page
).
to
have_content
(
file_name
)
expect
(
page
).
to
have_content
(
file_content
)
expect
(
page
).
to
have_content
(
lfs_file_content
)
end
Runtime
::
Browser
.
visit
(
:geo_secondary
,
QA
::
Page
::
Main
::
Login
)
do
# Visit the secondary node and login
Page
::
Main
::
OAuth
.
act
{
authorize!
if
needs_authorization?
}
EE
::
Page
::
Main
::
Banner
.
perform
do
|
banner
|
expect
(
banner
).
to
have_secondary_read_only_banner
end
Page
::
Main
::
Menu
.
perform
{
|
menu
|
menu
.
go_to_projects
}
Page
::
Dashboard
::
Projects
.
perform
do
|
dashboard
|
dashboard
.
wait_for_project_replication
(
project
.
name
)
dashboard
.
go_to_project
(
project
.
name
)
end
# Validate the content has been sync'd from the primary
Page
::
Project
::
Show
.
perform
do
|
show
|
show
.
wait_for_repository_replication_with
(
file_name
)
expect
(
page
).
to
have_content
(
file_name
)
expect
(
page
).
to
have_content
(
lfs_file_content
)
end
end
end
end
end
end
end
...
...
qa/qa/specs/features/browser_ui/ee_geo/http_push_to_secondary_spec.rb
View file @
54657afc
...
@@ -2,71 +2,164 @@
...
@@ -2,71 +2,164 @@
module
QA
module
QA
context
'Geo'
,
:orchestrated
,
:geo
do
context
'Geo'
,
:orchestrated
,
:geo
do
describe
'GitLab HTTP push to secondary'
do
describe
'GitLab Geo HTTP push secondary'
do
it
'is redirected to the primary and ultimately replicated to the secondary'
do
let
(
:file_content_primary
)
{
'This is a Geo project! Commit from primary.'
}
file_name
=
'README.md'
let
(
:file_content_secondary
)
{
'This is a Geo project! Commit from secondary.'
}
file_content_primary
=
'This is a Geo project! Commit from primary.'
file_content_secondary
=
'This is a Geo project! Commit from secondary.'
Runtime
::
Browser
.
visit
(
:geo_primary
,
QA
::
Page
::
Main
::
Login
)
do
# Visit the primary node and login
Page
::
Main
::
Login
.
act
{
sign_in_using_credentials
}
# Create a new Project
project
=
Resource
::
Project
.
fabricate!
do
|
project
|
project
.
name
=
'geo-project'
project
.
description
=
'Geo test project'
end
# Perform a git push over HTTP directly to the primary
context
'regular git commit'
do
#
it
'is redirected to the primary and ultimately replicated to the secondary'
do
# This push is required to ensure we have the primary credentials
file_name
=
'README.md'
# written out to the .netrc
Resource
::
Repository
::
ProjectPush
.
fabricate!
do
|
push
|
push
.
project
=
project
push
.
file_name
=
file_name
push
.
file_content
=
"#
#{
file_content_primary
}
"
push
.
commit_message
=
"Add
#{
file_name
}
"
end
project
.
visit!
Runtime
::
Browser
.
visit
(
:geo_
second
ary
,
QA
::
Page
::
Main
::
Login
)
do
Runtime
::
Browser
.
visit
(
:geo_
prim
ary
,
QA
::
Page
::
Main
::
Login
)
do
# Visit the
second
ary node and login
# Visit the
prim
ary node and login
Page
::
Main
::
OAuth
.
act
{
authorize!
if
needs_authorization?
}
Page
::
Main
::
Login
.
act
{
sign_in_using_credentials
}
EE
::
Page
::
Main
::
Banner
.
perform
do
|
banner
|
# Create a new Project
expect
(
banner
).
to
have_secondary_read_only_banner
project
=
Resource
::
Project
.
fabricate!
do
|
project
|
project
.
name
=
'geo-project'
project
.
description
=
'Geo test project'
end
end
Page
::
Main
::
Menu
.
perform
{
|
menu
|
menu
.
go_to_projects
}
# Perform a git push over HTTP directly to the primary
#
# This push is required to ensure we have the primary credentials
# written out to the .netrc
Resource
::
Repository
::
ProjectPush
.
fabricate!
do
|
push
|
push
.
project
=
project
push
.
file_name
=
file_name
push
.
file_content
=
"#
#{
file_content_primary
}
"
push
.
commit_message
=
"Add
#{
file_name
}
"
end
project
.
visit!
Runtime
::
Browser
.
visit
(
:geo_secondary
,
QA
::
Page
::
Main
::
Login
)
do
# Visit the secondary node and login
Page
::
Main
::
OAuth
.
act
{
authorize!
if
needs_authorization?
}
EE
::
Page
::
Main
::
Banner
.
perform
do
|
banner
|
expect
(
banner
).
to
have_secondary_read_only_banner
end
Page
::
Main
::
Menu
.
perform
{
|
menu
|
menu
.
go_to_projects
}
Page
::
Dashboard
::
Projects
.
perform
do
|
dashboard
|
Page
::
Dashboard
::
Projects
.
perform
do
|
dashboard
|
dashboard
.
wait_for_project_replication
(
project
.
name
)
dashboard
.
wait_for_project_replication
(
project
.
name
)
dashboard
.
go_to_project
(
project
.
name
)
dashboard
.
go_to_project
(
project
.
name
)
end
# Grab the HTTP URI for the secondary and store as 'location'
location
=
Page
::
Project
::
Show
.
act
do
choose_repository_clone_http
repository_location
end
# Perform a git push over HTTP at the secondary
push
=
Resource
::
Repository
::
Push
.
fabricate!
do
|
push
|
push
.
new_branch
=
false
push
.
repository_http_uri
=
location
.
uri
push
.
file_name
=
file_name
push
.
file_content
=
"#
#{
file_content_secondary
}
"
push
.
commit_message
=
"Update
#{
file_name
}
"
end
# We need to strip off the user from the URI, otherwise we won't
# get the correct output produced from the git CLI.
primary_uri
=
project
.
repository_http_location
.
uri
primary_uri
.
user
=
nil
# The git cli produces the 'warning: redirecting to..' output
# internally.
expect
(
push
.
output
).
to
match
(
/warning: redirecting to
#{
primary_uri
.
to_s
}
/
)
# Validate git push worked and new content is visible
Page
::
Project
::
Show
.
perform
do
|
show
|
show
.
wait_for_repository_replication_with
(
file_content_secondary
)
show
.
refresh
expect
(
page
).
to
have_content
(
file_name
)
expect
(
page
).
to
have_content
(
file_content_secondary
)
end
end
end
end
end
end
context
'git-lfs commit'
do
it
'is redirected to the primary and ultimately replicated to the secondary'
do
file_name_primary
=
'README.md'
file_name_secondary
=
'README_MORE.md'
Runtime
::
Browser
.
visit
(
:geo_primary
,
QA
::
Page
::
Main
::
Login
)
do
# Visit the primary node and login
Page
::
Main
::
Login
.
act
{
sign_in_using_credentials
}
#
Grab the HTTP URI for the secondary and store as 'location'
#
Create a new Project
location
=
Page
::
Project
::
Show
.
act
do
project
=
Resource
::
Project
.
fabricate!
do
|
project
|
choose_repository_clone_http
project
.
name
=
'geo-project'
repository_location
project
.
description
=
'Geo test project'
end
end
# Perform a git push over HTTP at the secondary
# Perform a git push over HTTP directly to the primary
#
# This push is required to ensure we have the primary credentials
# written out to the .netrc
Resource
::
Repository
::
Push
.
fabricate!
do
|
push
|
Resource
::
Repository
::
Push
.
fabricate!
do
|
push
|
push
.
new_branch
=
fals
e
push
.
use_lfs
=
tru
e
push
.
repository_http_uri
=
location
.
uri
push
.
repository_http_uri
=
project
.
repository_http_
location
.
uri
push
.
file_name
=
file_name
push
.
file_name
=
file_name
_primary
push
.
file_content
=
"#
#{
file_content_
second
ary
}
"
push
.
file_content
=
"#
#{
file_content_
prim
ary
}
"
push
.
commit_message
=
"
Update
#{
file_name
}
"
push
.
commit_message
=
"
Add
#{
file_name_primary
}
"
end
end
# Validate git push worked and new content is visible
Runtime
::
Browser
.
visit
(
:geo_secondary
,
QA
::
Page
::
Main
::
Login
)
do
Page
::
Project
::
Show
.
perform
do
|
show
|
# Visit the secondary node and login
show
.
wait_for_repository_replication_with
(
file_content
)
Page
::
Main
::
OAuth
.
act
{
authorize!
if
needs_authorization?
}
show
.
refresh
EE
::
Page
::
Main
::
Banner
.
perform
do
|
banner
|
expect
(
banner
).
to
have_secondary_read_only_banner
end
Page
::
Main
::
Menu
.
perform
{
|
menu
|
menu
.
go_to_projects
}
Page
::
Dashboard
::
Projects
.
perform
do
|
dashboard
|
dashboard
.
wait_for_project_replication
(
project
.
name
)
dashboard
.
go_to_project
(
project
.
name
)
end
# Grab the HTTP URI for the secondary and store as 'location'
location
=
Page
::
Project
::
Show
.
act
do
choose_repository_clone_http
repository_location
end
# Perform a git push over HTTP at the secondary
push
=
Resource
::
Repository
::
Push
.
fabricate!
do
|
push
|
push
.
use_lfs
=
true
push
.
new_branch
=
false
push
.
repository_http_uri
=
location
.
uri
push
.
file_name
=
file_name_secondary
push
.
file_content
=
"#
#{
file_content_secondary
}
"
push
.
commit_message
=
"Add
#{
file_name_secondary
}
"
end
# We need to strip off the user from the URI, otherwise we won't
# get the correct output produced from the git CLI.
primary_uri
=
project
.
repository_http_location
.
uri
primary_uri
.
user
=
nil
# The git cli produces the 'warning: redirecting to..' output
# internally.
expect
(
push
.
output
).
to
match
(
/warning: redirecting to
#{
primary_uri
.
to_s
}
/
)
expect
(
push
.
output
).
to
match
(
/Locking support detected on remote "
#{
location
.
uri
.
to_s
}
"/
)
expect
(
push
.
output
).
to
match
(
%r{Uploading LFS objects: 100%
\(
2/2
\)
}
)
# Validate git push worked and new content is visible
Page
::
Project
::
Show
.
perform
do
|
show
|
show
.
wait_for_repository_replication_with
(
file_name_secondary
)
show
.
refresh
expect
(
page
).
to
have_content
(
file_name
)
expect
(
page
).
to
have_content
(
file_name_secondary
)
e
xpect
(
page
).
to
have_content
(
file_content
)
e
nd
end
end
end
end
end
end
...
...
qa/qa/specs/features/browser_ui/ee_geo/ssh_push_spec.rb
View file @
54657afc
...
@@ -3,73 +3,152 @@
...
@@ -3,73 +3,152 @@
module
QA
module
QA
context
'Geo'
,
:orchestrated
,
:geo
do
context
'Geo'
,
:orchestrated
,
:geo
do
describe
'GitLab SSH push'
do
describe
'GitLab SSH push'
do
it
"is replicated to the secondary"
do
let
(
:file_name
)
{
'README.md'
}
file_name
=
'README.md'
key_title
=
"key for ssh tests
#{
Time
.
now
.
to_f
}
"
file_content
=
'This is a Geo project! Commit from primary.'
Runtime
::
Browser
.
visit
(
:geo_primary
,
QA
::
Page
::
Main
::
Login
)
do
# Visit the primary node and login
Page
::
Main
::
Login
.
act
{
sign_in_using_credentials
}
# Create a new SSH key for the user
key
=
Resource
::
SSHKey
.
fabricate!
do
|
resource
|
resource
.
title
=
key_title
end
# Create a new Project
context
'regular git commit'
do
project
=
Resource
::
Project
.
fabricate!
do
|
project
|
it
"is replicated to the secondary"
do
project
.
name
=
'geo-project'
key_title
=
"key for ssh tests
#{
Time
.
now
.
to_f
}
"
project
.
description
=
'Geo test project'
file_content
=
'This is a Geo project! Commit from primary.'
end
# Perform a git push over SSH directly to the primary
Runtime
::
Browser
.
visit
(
:geo_primary
,
QA
::
Page
::
Main
::
Login
)
do
Resource
::
Repository
::
ProjectPush
.
fabricate!
do
|
push
|
# Visit the primary node and login
push
.
ssh_key
=
key
Page
::
Main
::
Login
.
act
{
sign_in_using_credentials
}
push
.
project
=
project
push
.
file_name
=
file_name
push
.
file_content
=
"#
#{
file_content
}
"
push
.
commit_message
=
'Add README.md'
end
project
.
visit!
# Validate git push worked and file exists with content
# Create a new SSH key for the user
Page
::
Project
::
Show
.
perform
do
|
show
|
key
=
Resource
::
SSHKey
.
fabricate!
do
|
resource
|
show
.
wait_for_repository_replication
resource
.
title
=
key_title
end
expect
(
page
).
to
have_content
(
file_name
)
# Create a new Project
expect
(
page
).
to
have_content
(
file_content
)
project
=
Resource
::
Project
.
fabricate!
do
|
project
|
end
project
.
name
=
'geo-project'
project
.
description
=
'Geo test project'
end
# Perform a git push over SSH directly to the primary
Resource
::
Repository
::
ProjectPush
.
fabricate!
do
|
push
|
push
.
ssh_key
=
key
push
.
project
=
project
push
.
file_name
=
file_name
push
.
file_content
=
"#
#{
file_content
}
"
push
.
commit_message
=
'Add README.md'
end
project
.
visit!
Runtime
::
Browser
.
visit
(
:geo_secondary
,
QA
::
Page
::
Main
::
Login
)
do
# Validate git push worked and file exists with content
# Visit the secondary node and login
Page
::
Project
::
Show
.
perform
do
|
show
|
Page
::
Main
::
OAuth
.
act
{
authorize!
if
needs_authorization?
}
show
.
wait_for_repository_replication
EE
::
Page
::
Main
::
Banner
.
perform
do
|
banner
|
expect
(
page
).
to
have_content
(
file_name
)
expect
(
banner
).
to
have_secondary_read_only_banner
expect
(
page
).
to
have_content
(
file_content
)
end
end
# Ensure the SSH key has replicated
Runtime
::
Browser
.
visit
(
:geo_secondary
,
QA
::
Page
::
Main
::
Login
)
do
Page
::
Main
::
Menu
.
act
{
go_to_profile_settings
}
# Visit the secondary node and login
Page
::
Profile
::
Menu
.
act
{
click_ssh_keys
}
Page
::
Main
::
OAuth
.
act
{
authorize!
if
needs_authorization?
}
EE
::
Page
::
Main
::
Banner
.
perform
do
|
banner
|
expect
(
banner
).
to
have_secondary_read_only_banner
end
# Ensure the SSH key has replicated
Page
::
Main
::
Menu
.
act
{
go_to_profile_settings
}
Page
::
Profile
::
Menu
.
act
{
click_ssh_keys
}
expect
(
page
).
to
have_content
(
key_title
)
expect
(
page
).
to
have_content
(
key
.
fingerprint
)
expect
(
page
).
to
have_content
(
key_title
)
# Ensure project has replicated
expect
(
page
).
to
have_content
(
key
.
fingerprint
)
Page
::
Main
::
Menu
.
perform
{
|
menu
|
menu
.
go_to_projects
}
Page
::
Dashboard
::
Projects
.
perform
do
|
dashboard
|
dashboard
.
wait_for_project_replication
(
project
.
name
)
dashboard
.
go_to_project
(
project
.
name
)
end
# Ensure project has replicated
# Validate the content has been sync'd from the primary
Page
::
Main
::
Menu
.
perform
{
|
menu
|
menu
.
go_to_projects
}
Page
::
Project
::
Show
.
perform
do
|
show
|
Page
::
Dashboard
::
Projects
.
perform
do
|
dashboard
|
show
.
wait_for_repository_replication_with
(
file_content
)
dashboard
.
wait_for_project_replication
(
project
.
name
)
dashboard
.
go_to_project
(
project
.
name
)
expect
(
page
).
to
have_content
(
file_name
)
expect
(
page
).
to
have_content
(
file_content
)
end
end
end
end
end
end
# Validate the content has been sync'd from the primary
context
'git-lfs commit'
do
it
"is replicated to the secondary"
do
key_title
=
"key for ssh tests
#{
Time
.
now
.
to_f
}
"
file_content
=
'The rendered file could not be displayed because it is stored in LFS.'
Runtime
::
Browser
.
visit
(
:geo_primary
,
QA
::
Page
::
Main
::
Login
)
do
# Visit the primary node and login
Page
::
Main
::
Login
.
act
{
sign_in_using_credentials
}
# Create a new SSH key for the user
key
=
Resource
::
SSHKey
.
fabricate!
do
|
resource
|
resource
.
title
=
key_title
end
# Create a new Project
project
=
Resource
::
Project
.
fabricate!
do
|
project
|
project
.
name
=
'geo-project'
project
.
description
=
'Geo test project'
end
# Perform a git push over SSH directly to the primary
push
=
Resource
::
Repository
::
ProjectPush
.
fabricate!
do
|
push
|
push
.
use_lfs
=
true
push
.
ssh_key
=
key
push
.
project
=
project
push
.
file_name
=
file_name
push
.
file_content
=
"#
#{
file_content
}
"
push
.
commit_message
=
'Add README.md'
end
project
.
visit!
expect
(
push
.
output
).
to
match
(
/Locking support detected on remote/
)
expect
(
push
.
output
).
to
match
(
%r{Uploading LFS objects: 100%
\(
1/1
\)
}
)
# Validate git push worked and file exists with content
Page
::
Project
::
Show
.
perform
do
|
show
|
Page
::
Project
::
Show
.
perform
do
|
show
|
show
.
wait_for_repository_replication
_with
(
file_content
)
show
.
wait_for_repository_replication
expect
(
page
).
to
have_content
(
file_name
)
expect
(
page
).
to
have_content
(
file_name
)
expect
(
page
).
to
have_content
(
file_content
)
expect
(
page
).
to
have_content
(
file_content
)
end
end
Runtime
::
Browser
.
visit
(
:geo_secondary
,
QA
::
Page
::
Main
::
Login
)
do
# Visit the secondary node and login
Page
::
Main
::
OAuth
.
act
{
authorize!
if
needs_authorization?
}
EE
::
Page
::
Main
::
Banner
.
perform
do
|
banner
|
expect
(
banner
).
to
have_secondary_read_only_banner
end
# Ensure the SSH key has replicated
Page
::
Main
::
Menu
.
act
{
go_to_profile_settings
}
Page
::
Profile
::
Menu
.
act
{
click_ssh_keys
}
expect
(
page
).
to
have_content
(
key_title
)
expect
(
page
).
to
have_content
(
key
.
fingerprint
)
# Ensure project has replicated
Page
::
Main
::
Menu
.
perform
{
|
menu
|
menu
.
go_to_projects
}
Page
::
Dashboard
::
Projects
.
perform
do
|
dashboard
|
dashboard
.
wait_for_project_replication
(
project
.
name
)
dashboard
.
go_to_project
(
project
.
name
)
end
# Validate the content has been sync'd from the primary
Page
::
Project
::
Show
.
perform
do
|
show
|
show
.
wait_for_repository_replication_with
(
file_name
)
expect
(
page
).
to
have_content
(
file_name
)
expect
(
page
).
to
have_content
(
file_content
)
end
end
end
end
end
end
end
end
...
...
qa/qa/specs/features/browser_ui/ee_geo/ssh_push_to_secondary_spec.rb
View file @
54657afc
This diff is collapsed.
Click to expand it.
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