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
Léo-Paul Géneau
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
include
WaitForAjax
let
(
:project
)
{
create
(
:empty_project
)
}
let
(
:user
)
{
create
(
:user
)
}
before
do
login_as
(
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
context
'when user is logged in'
do
let
(
:user
)
{
create
(
:user
)
}
it
{
expect
(
page
).
to
have_http_status
(
:success
)
}
before
do
login_as
(
user
)
project
.
team
<<
[
user
,
:developer
]
end
context
'when pipeline is cancelable'
do
let!
(
:build
)
do
create
(
:ci_build
,
pipeline:
pipeline
,
stage:
'test'
,
commands:
'test'
)
end
before
do
build
.
run
visit_project_pipelines
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
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'
)
}
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
context
'when pipeline is retryable'
do
let!
(
:build
)
do
create
(
:ci_build
,
pipeline:
pipeline
,
stage:
'test'
,
commands:
'test'
)
it
'contains pipeline commit short SHA'
do
expect
(
page
).
to
have_content
(
pipeline
.
short_sha
)
end
end
end
before
do
build
.
drop
visit_project_pipelines
end
context
'when pipeline is cancelable'
do
let!
(
:build
)
do
create
(
:ci_build
,
pipeline:
pipeline
,
stage:
'test'
,
commands:
'test'
)
end
it
{
expect
(
page
).
to
have_link
(
'Retry'
)
}
it
{
expect
(
page
).
to
have_selector
(
'.ci-failed'
)
}
before
do
build
.
run
visit_project_pipelines
end
context
'when retrying'
do
before
{
click_link
(
'Retry'
)
}
it
{
expect
(
page
).
to
have_link
(
'Cancel'
)
}
it
{
expect
(
page
).
not_to
have_link
(
'Retry'
)
}
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
expect
(
page
).
to
have_selector
(
'.dropdown-toggle.btn.btn-default .icon-play'
)
it
{
expect
(
page
).
not_to
have_link
(
'Cancel'
)
}
it
{
expect
(
page
).
to
have_selector
(
'.ci-canceled'
)
}
end
end
it
'has link to the manual action'
do
find
(
'.js-pipeline-dropdown-manual-actions'
).
click
expect
(
page
).
to
have_link
(
'Manual build'
)
end
context
'when pipeline is retryable'
do
let!
(
:build
)
do
create
(
:ci_build
,
pipeline:
pipeline
,
stage:
'test'
,
commands:
'test'
)
end
context
'when manual action was played'
do
before
do
find
(
'.js-pipeline-dropdown-manual-actions'
).
click
click_link
(
'Manual build'
)
build
.
drop
visit_project_pipelines
end
it
'enqueues manual action job'
do
expect
(
manual
.
reload
).
to
be_pending
it
{
expect
(
page
).
to
have_link
(
'Retry'
)
}
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
context
'for generic statuses'
do
context
'when running'
do
let!
(
:running
)
do
create
(
:generic_commit_status
,
status:
'running'
,
context
'with manual actions'
do
let!
(
:manual
)
do
create
(
:ci_build
,
:manual
,
pipeline:
pipeline
,
stage:
'test'
)
name:
'manual build'
,
stage:
'test'
,
commands:
'test'
)
end
before
{
visit_project_pipelines
}
it
'
is cancelable
'
do
expect
(
page
).
to
have_
link
(
'Cancel
'
)
it
'
has a dropdown with play button
'
do
expect
(
page
).
to
have_
selector
(
'.dropdown-toggle.btn.btn-default .icon-play
'
)
end
it
'has pipeline running'
do
expect
(
page
).
to
have_selector
(
'.ci-running'
)
it
'has link to the manual action'
do
find
(
'.js-pipeline-dropdown-manual-actions'
).
click
expect
(
page
).
to
have_link
(
'Manual build'
)
end
context
'when canceling'
do
before
{
click_link
(
'Cancel'
)
}
context
'when manual action was played'
do
before
do
find
(
'.js-pipeline-dropdown-manual-actions'
).
click
click_link
(
'Manual build'
)
end
it
{
expect
(
page
).
not_to
have_link
(
'Cancel'
)
}
it
{
expect
(
page
).
to
have_selector
(
'.ci-canceled'
)
}
it
'enqueues manual action job'
do
expect
(
manual
.
reload
).
to
be_pending
end
end
end
context
'when failed'
do
let!
(
:status
)
do
create
(
:generic_commit_status
,
:pending
,
pipeline:
pipeline
,
stage:
'test'
)
end
context
'for generic statuses'
do
context
'when running'
do
let!
(
:running
)
do
create
(
:generic_commit_status
,
status:
'running'
,
pipeline:
pipeline
,
stage:
'test'
)
end
before
do
status
.
drop
visit_project_pipelines
end
before
{
visit_project_pipelines
}
it
'is cancelable'
do
expect
(
page
).
to
have_link
(
'Cancel'
)
end
it
'is not retryable'
do
expect
(
page
).
not_to
have_link
(
'Retry'
)
it
'has pipeline running'
do
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
it
'has failed pipeline'
do
expect
(
page
).
to
have_selector
(
'.ci-failed'
)
context
'when failed'
do
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
context
'downloadable pipelines'
do
context
'with artifacts'
do
let!
(
:with_artifacts
)
do
create
(
:ci_build
,
:artifacts
,
:success
,
pipeline:
pipeline
,
name:
'rspec tests'
,
stage:
'test'
)
context
'downloadable pipelines'
do
context
'with artifacts'
do
let!
(
:with_artifacts
)
do
create
(
:ci_build
,
:artifacts
,
:success
,
pipeline:
pipeline
,
name:
'rspec tests'
,
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
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
expect
(
page
).
to
have_selector
(
'.build-artifacts'
)
before
{
visit_project_pipelines
}
it
{
expect
(
page
).
not_to
have_selector
(
'.build-artifacts'
)
}
end
it
'has artifacts download dropdown'
do
find
(
'.js-pipeline-dropdown-download'
).
click
context
'without artifacts'
do
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
context
'with artifacts expired'
do
let!
(
:with_artifacts_expired
)
do
create
(
:ci_build
,
:artifacts_expired
,
:success
,
pipeline:
pipeline
,
name:
'rspec'
,
stage:
'test'
)
context
'mini pipleine graph'
do
let!
(
:build
)
do
create
(
:ci_build
,
pipeline:
pipeline
,
stage:
'build'
,
name:
'build'
)
end
before
{
visit_project_pipelines
}
it
{
expect
(
page
).
not_to
have_selector
(
'.build-artifacts'
)
}
end
context
'when clicking a graph stage'
do
it
'should open a dropdown'
do
find
(
'.js-builds-dropdown-button'
).
trigger
(
'click'
)
context
'without artifacts'
do
let!
(
:without_artifacts
)
do
create
(
:ci_build
,
:success
,
pipeline:
pipeline
,
name:
'rspec'
,
stage:
'test'
)
end
expect
(
page
).
to
have_link
build
.
name
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
context
'mini pipleine graph
'
do
let
!
(
:build
)
do
create
(
:ci_build
,
pipeline:
pipeline
,
stage:
'build'
,
name:
'build'
)
describe
'POST /:project/pipelines
'
do
let
(
:project
)
{
create
(
:project
)
}
before
do
visit
new_namespace_project_pipeline_path
(
project
.
namespace
,
project
)
end
before
{
visit_project_pipelines
}
context
'for valid commit'
do
before
{
fill_in
(
'pipeline[ref]'
,
with:
'master'
)
}
context
'when clicking a graph stage'
do
it
'should open a dropdown'
do
find
(
'.js-builds-dropdown-button'
).
trigger
(
'click'
)
context
'with gitlab-ci.yml'
do
before
{
stub_ci_pipeline_to_return_yaml_file
}
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
it
'should be possible to retry the failed build
'
do
find
(
'.js-builds-dropdown-button'
).
trigger
(
'click'
)
context
'without gitlab-ci.yml
'
do
before
{
click_on
'Create pipeline'
}
find
(
'a.ci-action-icon-container'
).
trigger
(
'click'
)
expect
(
page
).
not_to
have_content
(
'Cancel running'
)
it
{
expect
(
page
).
to
have_content
(
'Missing .gitlab-ci.yml file'
)
}
end
end
end
end
describe
'POST /:project/pipelines'
do
let
(
:project
)
{
create
(
:project
)
}
context
'for invalid commit'
do
before
do
fill_in
(
'pipeline[ref]'
,
with:
'invalid-reference'
)
click_on
'Create pipeline'
end
before
do
visit
new_namespace_project_pipeline_path
(
project
.
namespace
,
project
)
it
{
expect
(
page
).
to
have_content
(
'Reference not found'
)
}
end
end
context
'for valid commit
'
do
before
{
fill_in
(
'pipeline[ref]'
,
with:
'master'
)
}
describe
'Create pipelines
'
do
let
(
:project
)
{
create
(
:project
)
}
context
'with gitlab-ci.yml'
do
before
{
stub_ci_pipeline_to_return_yaml_file
}
before
do
visit
new_namespace_project_pipeline_path
(
project
.
namespace
,
project
)
end
it
'creates a new pipeline'
do
expect
{
click_on
'Create pipeline'
}
.
to
change
{
Ci
::
Pipeline
.
count
}.
by
(
1
)
describe
'new pipeline page'
do
it
'has field to add a new pipeline'
do
expect
(
page
).
to
have_field
(
'pipeline[ref]'
)
expect
(
page
).
to
have_content
(
'Create for'
)
end
end
context
'without gitlab-ci.yml'
do
before
{
click_on
'Create pipeline'
}
describe
'find pipelines'
do
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'
)
}
end
end
context
'for invalid commit'
do
before
do
fill_in
(
'pipeline[ref]'
,
with:
'invalid-reference'
)
click_on
'Create pipeline'
within
(
'.ui-autocomplete'
)
do
expect
(
page
).
to
have_selector
(
'li'
,
text:
'fix'
)
end
end
end
it
{
expect
(
page
).
to
have_content
(
'Reference not found'
)
}
end
end
describe
'Create pipelines'
do
let
(
:project
)
{
create
(
:project
)
}
context
'when user is not logged in'
do
before
do
visit
n
ew_namespace_project_pipeline
_path
(
project
.
namespace
,
project
)
visit
n
amespace_project_pipelines
_path
(
project
.
namespace
,
project
)
end
describe
'new pipeline page
'
do
it
'has field to add a new pipeline'
do
expect
(
page
).
to
have_field
(
'pipeline[ref]'
)
expect
(
page
).
to
have_content
(
'Create for'
)
end
context
'when project is public
'
do
let
(
:project
)
{
create
(
:project
,
:public
)
}
it
{
expect
(
page
).
to
have_content
'No pipelines to show'
}
it
{
expect
(
page
).
to
have_http_status
(
:success
)
}
end
describe
'find pipelines'
do
it
'shows filtered pipelines'
,
js:
true
do
fill_in
(
'pipeline[ref]'
,
with:
'fix'
)
find
(
'input#ref'
).
native
.
send_keys
(
:keydown
)
context
'when project is private'
do
let
(
:project
)
{
create
(
:project
,
:private
)
}
within
(
'.ui-autocomplete'
)
do
expect
(
page
).
to
have_selector
(
'li'
,
text:
'fix'
)
end
end
it
{
expect
(
page
).
to
have_content
'You need to sign in'
}
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