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
e83ae21d
Commit
e83ae21d
authored
Jan 04, 2017
by
Grzegorz Bizon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Extract anonymous user context in pipelines specs
parent
6a7a31b8
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
226 additions
and
215 deletions
+226
-215
spec/features/projects/pipelines/pipelines_spec.rb
spec/features/projects/pipelines/pipelines_spec.rb
+226
-215
No files found.
spec/features/projects/pipelines/pipelines_spec.rb
View file @
e83ae21d
...
@@ -7,313 +7,324 @@ describe 'Pipelines', :feature, :js do
...
@@ -7,313 +7,324 @@ describe 'Pipelines', :feature, :js do
include
WaitForAjax
include
WaitForAjax
let
(
:project
)
{
create
(
:empty_project
)
}
let
(
:project
)
{
create
(
:empty_project
)
}
let
(
:user
)
{
create
(
:user
)
}
before
do
context
'when user is logged in'
do
login_as
(
user
)
let
(
:user
)
{
create
(
:user
)
}
project
.
team
<<
[
user
,
:developer
]
end
describe
'GET /:project/pipelines'
do
let
(
:project
)
{
create
(
:project
)
}
let!
(
:pipeline
)
do
create
(
:ci_empty_pipeline
,
project:
project
,
ref:
'master'
,
status:
'running'
,
sha:
project
.
commit
.
id
,
)
end
[
:all
,
:running
,
:branches
].
each
do
|
scope
|
context
"when displaying
#{
scope
}
"
do
before
do
visit_project_pipelines
(
scope:
scope
)
end
it
'contains pipeline commit short SHA'
do
expect
(
page
).
to
have_content
(
pipeline
.
short_sha
)
end
end
end
context
'anonymous access'
do
let
(
:project
)
{
create
(
:project
,
:public
)
}
before
do
logout
visit_project_pipelines
end
it
{
expect
(
page
).
to
have_http_status
(
:success
)
}
before
do
login_as
(
user
)
project
.
team
<<
[
user
,
:developer
]
end
end
context
'when pipeline is cancelable'
do
describe
'GET /:project/pipelines'
do
let!
(
:build
)
do
let
(
:project
)
{
create
(
:project
)
}
create
(
:ci_build
,
pipeline:
pipeline
,
stage:
'test'
,
let!
(
:pipeline
)
do
commands:
'test'
)
create
(
end
:ci_empty_pipeline
,
project:
project
,
before
do
ref:
'master'
,
build
.
run
status:
'running'
,
visit_project_pipelines
sha:
project
.
commit
.
id
,
)
end
end
it
{
expect
(
page
).
to
have_link
(
'Cancel'
)
}
[
:all
,
:running
,
:branches
].
each
do
|
scope
|
context
"when displaying
#{
scope
}
"
do
before
do
visit_project_pipelines
(
scope:
scope
)
end
it
{
expect
(
page
).
to
have_selector
(
'.ci-running'
)
}
it
'contains pipeline commit short SHA'
do
expect
(
page
).
to
have_content
(
pipeline
.
short_sha
)
context
'when canceling'
do
end
before
{
click_link
(
'Cancel'
)
}
end
it
{
expect
(
page
).
not_to
have_link
(
'Cancel'
)
}
it
{
expect
(
page
).
to
have_selector
(
'.ci-canceled'
)
}
end
end
context
'when pipeline is retryable'
do
let!
(
:build
)
do
create
(
:ci_build
,
pipeline:
pipeline
,
stage:
'test'
,
commands:
'test'
)
end
end
before
do
context
'when pipeline is cancelable'
do
build
.
drop
let!
(
:build
)
do
visit_project_pipelines
create
(
:ci_build
,
pipeline:
pipeline
,
end
stage:
'test'
,
commands:
'test'
)
end
it
{
expect
(
page
).
to
have_link
(
'Retry'
)
}
before
do
it
{
expect
(
page
).
to
have_selector
(
'.ci-failed'
)
}
build
.
run
visit_project_pipelines
end
context
'when retrying'
do
it
{
expect
(
page
).
to
have_link
(
'Cancel'
)
}
before
{
click_link
(
'Retry'
)
}
it
{
expect
(
page
).
not_to
have_link
(
'Retry'
)
}
it
{
expect
(
page
).
to
have_selector
(
'.ci-running'
)
}
it
{
expect
(
page
).
to
have_selector
(
'.ci-running'
)
}
end
end
context
'with manual actions'
do
let!
(
:manual
)
do
create
(
:ci_build
,
:manual
,
pipeline:
pipeline
,
name:
'manual build'
,
stage:
'test'
,
commands:
'test'
)
end
before
{
visit_project_pipelines
}
context
'when canceling'
do
before
{
click_link
(
'Cancel'
)
}
it
'has a dropdown with play button'
do
it
{
expect
(
page
).
not_to
have_link
(
'Cancel'
)
}
expect
(
page
).
to
have_selector
(
'.dropdown-toggle.btn.btn-default .icon-play'
)
it
{
expect
(
page
).
to
have_selector
(
'.ci-canceled'
)
}
end
end
end
it
'has link to the manual action'
do
context
'when pipeline is retryable'
do
find
(
'.js-pipeline-dropdown-manual-actions'
).
click
let!
(
:build
)
do
create
(
:ci_build
,
pipeline:
pipeline
,
expect
(
page
).
to
have_link
(
'Manual build'
)
stage:
'test'
,
end
commands:
'test'
)
end
context
'when manual action was played'
do
before
do
before
do
find
(
'.js-pipeline-dropdown-manual-actions'
).
click
build
.
drop
click_link
(
'Manual build'
)
visit_project_pipelines
end
end
it
'enqueues manual action job'
do
it
{
expect
(
page
).
to
have_link
(
'Retry'
)
}
expect
(
manual
.
reload
).
to
be_pending
it
{
expect
(
page
).
to
have_selector
(
'.ci-failed'
)
}
context
'when retrying'
do
before
{
click_link
(
'Retry'
)
}
it
{
expect
(
page
).
not_to
have_link
(
'Retry'
)
}
it
{
expect
(
page
).
to
have_selector
(
'.ci-running'
)
}
end
end
end
end
end
context
'for generic statuses'
do
context
'with manual actions'
do
context
'when running'
do
let!
(
:manual
)
do
let!
(
:running
)
do
create
(
:ci_build
,
:manual
,
create
(
:generic_commit_status
,
status:
'running'
,
pipeline:
pipeline
,
pipeline:
pipeline
,
stage:
'test'
name:
'manual build'
,
)
stage:
'test'
,
commands:
'test'
)
end
end
before
{
visit_project_pipelines
}
before
{
visit_project_pipelines
}
it
'
is cancelable
'
do
it
'
has a dropdown with play button
'
do
expect
(
page
).
to
have_
link
(
'Cancel
'
)
expect
(
page
).
to
have_
selector
(
'.dropdown-toggle.btn.btn-default .icon-play
'
)
end
end
it
'has pipeline running'
do
it
'has link to the manual action'
do
expect
(
page
).
to
have_selector
(
'.ci-running'
)
find
(
'.js-pipeline-dropdown-manual-actions'
).
click
expect
(
page
).
to
have_link
(
'Manual build'
)
end
end
context
'when canceling'
do
context
'when manual action was played'
do
before
{
click_link
(
'Cancel'
)
}
before
do
find
(
'.js-pipeline-dropdown-manual-actions'
).
click
click_link
(
'Manual build'
)
end
it
{
expect
(
page
).
not_to
have_link
(
'Cancel'
)
}
it
'enqueues manual action job'
do
it
{
expect
(
page
).
to
have_selector
(
'.ci-canceled'
)
}
expect
(
manual
.
reload
).
to
be_pending
end
end
end
end
end
context
'when failed'
do
context
'for generic statuses'
do
let!
(
:status
)
do
context
'when running'
do
create
(
:generic_commit_status
,
:pending
,
let!
(
:running
)
do
pipeline:
pipeline
,
create
(
:generic_commit_status
,
stage:
'test'
)
status:
'running'
,
end
pipeline:
pipeline
,
stage:
'test'
)
end
before
do
before
{
visit_project_pipelines
}
status
.
drop
visit_project_pipelines
it
'is cancelable'
do
end
expect
(
page
).
to
have_link
(
'Cancel'
)
end
it
'is not retryable'
do
it
'has pipeline running'
do
expect
(
page
).
not_to
have_link
(
'Retry'
)
expect
(
page
).
to
have_selector
(
'.ci-running'
)
end
context
'when canceling'
do
before
{
click_link
(
'Cancel'
)
}
it
{
expect
(
page
).
not_to
have_link
(
'Cancel'
)
}
it
{
expect
(
page
).
to
have_selector
(
'.ci-canceled'
)
}
end
end
end
it
'has failed pipeline'
do
context
'when failed'
do
expect
(
page
).
to
have_selector
(
'.ci-failed'
)
let!
(
:status
)
do
create
(
:generic_commit_status
,
:pending
,
pipeline:
pipeline
,
stage:
'test'
)
end
before
do
status
.
drop
visit_project_pipelines
end
it
'is not retryable'
do
expect
(
page
).
not_to
have_link
(
'Retry'
)
end
it
'has failed pipeline'
do
expect
(
page
).
to
have_selector
(
'.ci-failed'
)
end
end
end
end
end
end
context
'downloadable pipelines'
do
context
'downloadable pipelines'
do
context
'with artifacts'
do
context
'with artifacts'
do
let!
(
:with_artifacts
)
do
let!
(
:with_artifacts
)
do
create
(
:ci_build
,
:artifacts
,
:success
,
create
(
:ci_build
,
:artifacts
,
:success
,
pipeline:
pipeline
,
pipeline:
pipeline
,
name:
'rspec tests'
,
name:
'rspec tests'
,
stage:
'test'
)
stage:
'test'
)
end
before
{
visit_project_pipelines
}
it
'has artifats'
do
expect
(
page
).
to
have_selector
(
'.build-artifacts'
)
end
it
'has artifacts download dropdown'
do
find
(
'.js-pipeline-dropdown-download'
).
click
expect
(
page
).
to
have_link
(
with_artifacts
.
name
)
end
end
end
before
{
visit_project_pipelines
}
context
'with artifacts expired'
do
let!
(
:with_artifacts_expired
)
do
create
(
:ci_build
,
:artifacts_expired
,
:success
,
pipeline:
pipeline
,
name:
'rspec'
,
stage:
'test'
)
end
it
'has artifats'
do
before
{
visit_project_pipelines
}
expect
(
page
).
to
have_selector
(
'.build-artifacts'
)
it
{
expect
(
page
).
not_to
have_selector
(
'.build-artifacts'
)
}
end
end
it
'has artifacts download dropdown'
do
context
'without artifacts'
do
find
(
'.js-pipeline-dropdown-download'
).
click
let!
(
:without_artifacts
)
do
create
(
:ci_build
,
:success
,
pipeline:
pipeline
,
name:
'rspec'
,
stage:
'test'
)
end
before
{
visit_project_pipelines
}
expect
(
page
).
to
have_link
(
with_artifacts
.
name
)
it
{
expect
(
page
).
not_to
have_selector
(
'.build-artifacts'
)
}
end
end
end
end
context
'with artifacts expired'
do
context
'mini pipleine graph'
do
let!
(
:with_artifacts_expired
)
do
let!
(
:build
)
do
create
(
:ci_build
,
:artifacts_expired
,
:success
,
create
(
:ci_build
,
pipeline:
pipeline
,
pipeline:
pipeline
,
stage:
'build'
,
name:
'rspec'
,
name:
'build'
)
stage:
'test'
)
end
end
before
{
visit_project_pipelines
}
before
{
visit_project_pipelines
}
it
{
expect
(
page
).
not_to
have_selector
(
'.build-artifacts'
)
}
context
'when clicking a graph stage'
do
end
it
'should open a dropdown'
do
find
(
'.js-builds-dropdown-button'
).
trigger
(
'click'
)
context
'without artifacts'
do
expect
(
page
).
to
have_link
build
.
name
let!
(
:without_artifacts
)
do
end
create
(
:ci_build
,
:success
,
pipeline:
pipeline
,
name:
'rspec'
,
stage:
'test'
)
end
before
{
visit_project_pipelines
}
it
'should be possible to retry the failed build'
do
find
(
'.js-builds-dropdown-button'
).
trigger
(
'click'
)
it
{
expect
(
page
).
not_to
have_selector
(
'.build-artifacts'
)
}
find
(
'a.ci-action-icon-container'
).
trigger
(
'click'
)
expect
(
page
).
not_to
have_content
(
'Cancel running'
)
end
end
end
end
end
end
context
'mini pipleine graph
'
do
describe
'POST /:project/pipelines
'
do
let
!
(
:build
)
do
let
(
:project
)
{
create
(
:project
)
}
create
(
:ci_build
,
pipeline:
pipeline
,
stage:
'build'
,
before
do
name:
'build'
)
visit
new_namespace_project_pipeline_path
(
project
.
namespace
,
project
)
end
end
before
{
visit_project_pipelines
}
context
'for valid commit'
do
before
{
fill_in
(
'pipeline[ref]'
,
with:
'master'
)
}
context
'when clicking a graph stage'
do
context
'with gitlab-ci.yml'
do
it
'should open a dropdown'
do
before
{
stub_ci_pipeline_to_return_yaml_file
}
find
(
'.js-builds-dropdown-button'
).
trigger
(
'click'
)
expect
(
page
).
to
have_link
build
.
name
it
'creates a new pipeline'
do
expect
{
click_on
'Create pipeline'
}
.
to
change
{
Ci
::
Pipeline
.
count
}.
by
(
1
)
end
end
end
it
'should be possible to retry the failed build
'
do
context
'without gitlab-ci.yml
'
do
find
(
'.js-builds-dropdown-button'
).
trigger
(
'click'
)
before
{
click_on
'Create pipeline'
}
find
(
'a.ci-action-icon-container'
).
trigger
(
'click'
)
it
{
expect
(
page
).
to
have_content
(
'Missing .gitlab-ci.yml file'
)
}
expect
(
page
).
not_to
have_content
(
'Cancel running'
)
end
end
end
end
end
end
describe
'POST /:project/pipelines'
do
context
'for invalid commit'
do
let
(
:project
)
{
create
(
:project
)
}
before
do
fill_in
(
'pipeline[ref]'
,
with:
'invalid-reference'
)
click_on
'Create pipeline'
end
before
do
it
{
expect
(
page
).
to
have_content
(
'Reference not found'
)
}
visit
new_namespace_project_pipeline_path
(
project
.
namespace
,
project
)
end
end
end
context
'for valid commit
'
do
describe
'Create pipelines
'
do
before
{
fill_in
(
'pipeline[ref]'
,
with:
'master'
)
}
let
(
:project
)
{
create
(
:project
)
}
context
'with gitlab-ci.yml'
do
before
do
before
{
stub_ci_pipeline_to_return_yaml_file
}
visit
new_namespace_project_pipeline_path
(
project
.
namespace
,
project
)
end
it
'creates a new pipeline'
do
describe
'new pipeline page'
do
expect
{
click_on
'Create pipeline'
}
it
'has field to add a new pipeline'
do
.
to
change
{
Ci
::
Pipeline
.
count
}.
by
(
1
)
expect
(
page
).
to
have_field
(
'pipeline[ref]'
)
expect
(
page
).
to
have_content
(
'Create for'
)
end
end
end
end
context
'without gitlab-ci.yml'
do
describe
'find pipelines'
do
before
{
click_on
'Create pipeline'
}
it
'shows filtered pipelines'
,
js:
true
do
fill_in
(
'pipeline[ref]'
,
with:
'fix'
)
find
(
'input#ref'
).
native
.
send_keys
(
:keydown
)
it
{
expect
(
page
).
to
have_content
(
'Missing .gitlab-ci.yml file'
)
}
within
(
'.ui-autocomplete'
)
do
end
expect
(
page
).
to
have_selector
(
'li'
,
text:
'fix'
)
end
end
end
context
'for invalid commit'
do
before
do
fill_in
(
'pipeline[ref]'
,
with:
'invalid-reference'
)
click_on
'Create pipeline'
end
end
it
{
expect
(
page
).
to
have_content
(
'Reference not found'
)
}
end
end
end
end
describe
'Create pipelines'
do
context
'when user is not logged in'
do
let
(
:project
)
{
create
(
:project
)
}
before
do
before
do
visit
n
ew_namespace_project_pipeline
_path
(
project
.
namespace
,
project
)
visit
n
amespace_project_pipelines
_path
(
project
.
namespace
,
project
)
end
end
describe
'new pipeline page
'
do
context
'when project is public
'
do
it
'has field to add a new pipeline'
do
let
(
:project
)
{
create
(
:project
,
:public
)
}
expect
(
page
).
to
have_field
(
'pipeline[ref]'
)
expect
(
page
).
to
have_content
(
'Create for'
)
it
{
expect
(
page
).
to
have_content
'No pipelines to show'
}
end
it
{
expect
(
page
).
to
have_http_status
(
:success
)
}
end
end
describe
'find pipelines'
do
context
'when project is private'
do
it
'shows filtered pipelines'
,
js:
true
do
let
(
:project
)
{
create
(
:project
,
:private
)
}
fill_in
(
'pipeline[ref]'
,
with:
'fix'
)
find
(
'input#ref'
).
native
.
send_keys
(
:keydown
)
within
(
'.ui-autocomplete'
)
do
it
{
expect
(
page
).
to
have_content
'You need to sign in'
}
expect
(
page
).
to
have_selector
(
'li'
,
text:
'fix'
)
end
end
end
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