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
5f296daa
Commit
5f296daa
authored
Dec 03, 2017
by
Kamil Trzcinski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix specs
parent
f1cce0cb
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
422 additions
and
250 deletions
+422
-250
app/views/projects/clusters/_enabled.html.haml
app/views/projects/clusters/_enabled.html.haml
+3
-4
app/views/projects/clusters/show.html.haml
app/views/projects/clusters/show.html.haml
+0
-1
spec/controllers/projects/clusters_controller_spec.rb
spec/controllers/projects/clusters_controller_spec.rb
+419
-0
spec/features/projects/clusters_spec.rb
spec/features/projects/clusters_spec.rb
+0
-245
No files found.
app/views/projects/clusters/_enabled.html.haml
View file @
5f296daa
...
@@ -5,12 +5,11 @@
...
@@ -5,12 +5,11 @@
=
field
.
hidden_field
:enabled
,
{
class:
'js-toggle-input'
}
=
field
.
hidden_field
:enabled
,
{
class:
'js-toggle-input'
}
%button
{
type:
'button'
,
%button
{
type:
'button'
,
class:
"js-toggle-cluster project-feature-toggle #{'
checked' unless !@cluster.enabled?} #{'
disabled' unless can?(current_user, :update_cluster, @cluster)}"
,
class:
"js-toggle-cluster project-feature-toggle #{'
is-checked' unless !@cluster.enabled?} #{'is-
disabled' unless can?(current_user, :update_cluster, @cluster)}"
,
'aria-label'
:
s_
(
'ClusterIntegration|Toggle Cluster'
),
"aria-label"
:
s_
(
"ClusterIntegration|Toggle Cluster"
),
disabled:
!
can?
(
current_user
,
:update_cluster
,
@cluster
),
disabled:
!
can?
(
current_user
,
:update_cluster
,
@cluster
),
data:
{
'enabled-text'
:
'Enabled'
,
'disabled-text'
:
'Disabled'
}
}
data:
{
"enabled-text"
:
s_
(
"ClusterIntegration|Active"
),
"disabled-text"
:
s_
(
"ClusterIntegration|Inactive"
),
}
}
-
if
can?
(
current_user
,
:update_cluster
,
@cluster
)
-
if
can?
(
current_user
,
:update_cluster
,
@cluster
)
.form-group
.form-group
=
field
.
submit
_
(
'Save'
),
class:
'btn btn-success'
=
field
.
submit
_
(
'Save'
),
class:
'btn btn-success'
\ No newline at end of file
app/views/projects/clusters/show.html.haml
View file @
5f296daa
...
@@ -29,7 +29,6 @@
...
@@ -29,7 +29,6 @@
%button
.btn.js-settings-toggle
%button
.btn.js-settings-toggle
=
expanded
?
'Collapse'
:
'Expand'
=
expanded
?
'Collapse'
:
'Expand'
%p
=
s_
(
'ClusterIntegration|See and edit the details for your cluster'
)
%p
=
s_
(
'ClusterIntegration|See and edit the details for your cluster'
)
.settings-content
.settings-content
-
if
@cluster
.
managed?
-
if
@cluster
.
managed?
=
render
'projects/clusters/gcp/show'
=
render
'projects/clusters/gcp/show'
...
...
spec/controllers/projects/clusters_controller_spec.rb
View file @
5f296daa
require
'spec_helper'
describe
Projects
::
ClustersController
do
include
AccessMatchersForController
include
GoogleApi
::
CloudPlatformHelpers
set
(
:project
)
{
create
(
:project
)
}
describe
'GET index'
do
describe
'functionality'
do
let
(
:user
)
{
create
(
:user
)
}
before
do
project
.
add_master
(
user
)
sign_in
(
user
)
end
context
'when project has one or more clusters'
do
let
(
:project
)
{
create
(
:project
)
}
let
(
:enabled_cluster
)
{
create
(
:cluster
,
:provided_by_gcp
,
projects:
[
project
])
}
let
(
:disabled_cluster
)
{
create
(
:cluster
,
:disabled
,
:provided_by_gcp
,
projects:
[
project
])
}
it
'lists available clusters'
do
go
expect
(
response
).
to
have_gitlab_http_status
(
:ok
)
expect
(
response
).
to
render_template
(
:index
)
expect
(
assigns
(
:clusters
)).
to
match_array
([
enabled_cluster
,
disabled_cluster
])
end
it
'assigns counters to correct values'
do
go
expect
(
assigns
(
:active_count
)).
to
eq
(
project
.
clusters
.
enabled
.
count
)
expect
(
assigns
(
:inactive_count
)).
to
eq
(
project
.
clusters
.
disabled
.
count
)
end
context
'when page is specified'
do
let
(
:last_page
)
{
project
.
clusters
.
page
.
total_pages
}
before
do
Clusters
::
Cluster
.
paginates_per
(
1
)
create_list
(
:cluster
,
2
,
:provided_by_gcp
,
projects:
[
project
])
get
:index
,
namespace_id:
project
.
namespace
,
project_id:
project
,
page:
last_page
end
it
'redirects to the page'
do
expect
(
response
).
to
have_gitlab_http_status
(
:ok
)
expect
(
assigns
(
:clusters
).
current_page
).
to
eq
(
last_page
)
end
end
context
'when only enabled clusters are requested'
do
it
'returns only enabled clusters'
do
get
:index
,
namespace_id:
project
.
namespace
,
project_id:
project
,
scope:
'active'
view_clusters
=
assigns
(
:clusters
)
expect
(
view_clusters
.
all?
{
|
cluster
|
cluster
.
enabled
==
true
}).
to
eq
(
true
)
end
end
context
'when only disabled clusters are requested'
do
it
'returns only disabled clusters'
do
get
:index
,
namespace_id:
project
.
namespace
,
project_id:
project
,
scope:
'inactive'
view_clusters
=
assigns
(
:clusters
)
expect
(
view_clusters
.
all?
{
|
cluster
|
cluster
.
enabled
==
false
}).
to
eq
(
true
)
end
end
end
context
'when project does not have a cluster'
do
let
(
:project
)
{
create
(
:project
)
}
it
'returns an empty state page'
do
go
expect
(
response
).
to
have_gitlab_http_status
(
:ok
)
expect
(
response
).
to
render_template
(
:index
)
expect
(
assigns
(
:clusters
)).
to
eq
([])
end
it
'assigns counters to zero'
do
go
expect
(
assigns
(
:active_count
)).
to
eq
(
0
)
expect
(
assigns
(
:inactive_count
)).
to
eq
(
0
)
end
end
end
describe
'security'
do
let
(
:cluster
)
{
create
(
:cluster
,
:provided_by_gcp
,
projects:
[
project
])
}
it
{
expect
{
go
}.
to
be_allowed_for
(
:admin
)
}
it
{
expect
{
go
}.
to
be_allowed_for
(
:owner
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_allowed_for
(
:master
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:developer
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:reporter
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:guest
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:user
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:external
)
}
end
def
go
get
:index
,
namespace_id:
project
.
namespace
.
to_param
,
project_id:
project
end
end
describe
'GET status'
do
let
(
:cluster
)
{
create
(
:cluster
,
:providing_by_gcp
,
projects:
[
project
])
}
describe
'functionality'
do
let
(
:user
)
{
create
(
:user
)
}
before
do
project
.
add_master
(
user
)
sign_in
(
user
)
end
it
"responds with matching schema"
do
go
expect
(
response
).
to
have_gitlab_http_status
(
:ok
)
expect
(
response
).
to
match_response_schema
(
'cluster_status'
)
end
end
describe
'security'
do
it
{
expect
{
go
}.
to
be_allowed_for
(
:admin
)
}
it
{
expect
{
go
}.
to
be_allowed_for
(
:owner
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_allowed_for
(
:master
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:developer
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:reporter
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:guest
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:user
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:external
)
}
end
def
go
get
:status
,
namespace_id:
project
.
namespace
,
project_id:
project
,
id:
cluster
,
format: :json
end
end
describe
'GET show'
do
let
(
:cluster
)
{
create
(
:cluster
,
:provided_by_gcp
,
projects:
[
project
])
}
describe
'functionality'
do
let
(
:user
)
{
create
(
:user
)
}
before
do
project
.
add_master
(
user
)
sign_in
(
user
)
end
it
"renders view"
do
go
expect
(
response
).
to
have_gitlab_http_status
(
:ok
)
expect
(
assigns
(
:cluster
)).
to
eq
(
cluster
)
end
end
describe
'security'
do
it
{
expect
{
go
}.
to
be_allowed_for
(
:admin
)
}
it
{
expect
{
go
}.
to
be_allowed_for
(
:owner
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_allowed_for
(
:master
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:developer
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:reporter
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:guest
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:user
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:external
)
}
end
def
go
get
:show
,
namespace_id:
project
.
namespace
,
project_id:
project
,
id:
cluster
end
end
describe
'PUT update'
do
context
'Managed'
do
let
(
:cluster
)
{
create
(
:cluster
,
:provided_by_gcp
,
projects:
[
project
])
}
let
(
:user
)
{
create
(
:user
)
}
before
do
project
.
add_master
(
user
)
sign_in
(
user
)
end
context
'when changing parameters'
do
let
(
:params
)
do
{
cluster:
{
enabled:
false
,
name:
'my-new-cluster-name'
,
platform_kubernetes_attributes:
{
namespace:
'my-namespace'
}
}
}
end
it
"updates and redirects back to show page"
do
go
cluster
.
reload
expect
(
response
).
to
redirect_to
(
namespace_project_cluster_path
(
project
.
namespace
,
project
,
project
.
cluster
))
expect
(
flash
[
:notice
]).
to
eq
(
'Cluster was successfully updated.'
)
expect
(
cluster
.
enabled
).
to
be_falsey
end
it
"does not change cluster name"
do
go
expect
(
cluster
.
name
).
to
eq
(
'test-cluster'
)
end
context
'when cluster is being created'
do
let
(
:cluster
)
{
create
(
:cluster
,
:providing_by_gcp
,
projects:
[
project
])
}
it
"rejects changes"
do
go
expect
(
response
).
to
have_gitlab_http_status
(
:ok
)
expect
(
response
).
to
render_template
(
:show
)
expect
(
cluster
.
enabled
).
to
be_truthy
end
end
end
end
context
'User'
do
let
(
:cluster
)
{
create
(
:cluster
,
:provided_by_user
,
projects:
[
project
])
}
let
(
:user
)
{
create
(
:user
)
}
before
do
project
.
add_master
(
user
)
sign_in
(
user
)
end
context
'when format is json'
do
context
'when update enabled'
do
let
(
:params
)
do
{
cluster:
{
enabled:
false
,
name:
'my-new-cluster-name'
,
platform_kubernetes_attributes:
{
namespace:
'my-namespace'
}
}
}
end
it
"updates and redirects back to show page"
do
go_json
cluster
.
reload
expect
(
response
).
to
have_http_status
(
:no_content
)
expect
(
cluster
.
enabled
).
to
be_falsey
expect
(
cluster
.
name
).
to
eq
(
'my-new-cluster-name'
)
expect
(
cluster
.
platform_kubernetes
.
namespace
).
to
eq
(
'my-namespace'
)
end
context
'when cluster is being created'
do
let
(
:cluster
)
{
create
(
:cluster
,
:project
,
:providing_by_gcp
)
}
it
"rejects changes"
do
go_json
expect
(
response
).
to
have_http_status
(
:bad_request
)
end
end
end
end
context
'when format is html'
do
context
'when update enabled'
do
let
(
:params
)
do
{
cluster:
{
enabled:
false
}
}
end
it
"updates and redirects back to show page"
do
go
cluster
.
reload
expect
(
response
).
to
redirect_to
(
namespace_project_cluster_path
(
project
.
namespace
,
project
,
project
.
cluster
))
expect
(
flash
[
:notice
]).
to
eq
(
'Cluster was successfully updated.'
)
expect
(
cluster
.
enabled
).
to
be_falsey
expect
(
cluster
.
name
).
to
eq
(
'my-new-cluster-name'
)
expect
(
cluster
.
platform_kubernetes
.
namespace
).
to
eq
(
'my-namespace'
)
end
context
'when cluster is being created'
do
let
(
:cluster
)
{
create
(
:cluster
,
:project
,
:providing_by_gcp
)
}
it
"rejects changes"
do
go
expect
(
response
).
to
have_gitlab_http_status
(
:ok
)
expect
(
response
).
to
render_template
(
:show
)
expect
(
cluster
.
enabled
).
to
be_truthy
end
end
end
end
end
describe
'security'
do
set
(
:cluster
)
{
create
(
:cluster
,
:providing_by_gcp
,
projects:
[
project
])
}
let
(
:params
)
do
{
cluster:
{
enabled:
false
}
}
end
it
{
expect
{
go
}.
to
be_allowed_for
(
:admin
)
}
it
{
expect
{
go
}.
to
be_allowed_for
(
:owner
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_allowed_for
(
:master
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:developer
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:reporter
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:guest
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:user
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:external
)
}
end
def
go
put
:update
,
params
.
merge
(
namespace_id:
project
.
namespace
,
project_id:
project
,
id:
cluster
)
end
def
go_json
put
:update
,
params
.
merge
(
namespace_id:
project
.
namespace
,
project_id:
project
,
id:
cluster
,
format: :json
)
end
end
describe
'DELETE destroy'
do
describe
'functionality'
do
let
(
:user
)
{
create
(
:user
)
}
before
do
project
.
add_master
(
user
)
sign_in
(
user
)
end
context
'GCP'
do
context
'when cluster is created'
do
let!
(
:cluster
)
{
create
(
:cluster
,
:provided_by_gcp
,
projects:
[
project
])
}
it
"destroys and redirects back to clusters list"
do
expect
{
go
}
.
to
change
{
Clusters
::
Cluster
.
count
}.
by
(
-
1
)
.
and
change
{
Clusters
::
Platforms
::
Kubernetes
.
count
}.
by
(
-
1
)
.
and
change
{
Clusters
::
Providers
::
Gcp
.
count
}.
by
(
-
1
)
expect
(
response
).
to
redirect_to
(
namespace_project_clusters_path
(
project
.
namespace
,
project
))
expect
(
flash
[
:notice
]).
to
eq
(
'Cluster integration was successfully removed.'
)
end
end
context
'when cluster is being created'
do
let!
(
:cluster
)
{
create
(
:cluster
,
:providing_by_gcp
,
projects:
[
project
])
}
it
"destroys and redirects back to clusters list"
do
expect
{
go
}
.
to
change
{
Clusters
::
Cluster
.
count
}.
by
(
-
1
)
.
and
change
{
Clusters
::
Providers
::
Gcp
.
count
}.
by
(
-
1
)
expect
(
response
).
to
redirect_to
(
namespace_project_clusters_path
(
project
.
namespace
,
project
))
expect
(
flash
[
:notice
]).
to
eq
(
'Cluster integration was successfully removed.'
)
end
end
end
context
'User'
do
context
'when provider is user'
do
let!
(
:cluster
)
{
create
(
:cluster
,
:provided_by_user
,
projects:
[
project
])
}
it
"destroys and redirects back to clusters list"
do
expect
{
go
}
.
to
change
{
Clusters
::
Cluster
.
count
}.
by
(
-
1
)
.
and
change
{
Clusters
::
Platforms
::
Kubernetes
.
count
}.
by
(
-
1
)
.
and
change
{
Clusters
::
Providers
::
Gcp
.
count
}.
by
(
0
)
expect
(
response
).
to
redirect_to
(
namespace_project_clusters_path
(
project
.
namespace
,
project
))
expect
(
flash
[
:notice
]).
to
eq
(
'Cluster integration was successfully removed.'
)
end
end
end
end
describe
'security'
do
set
(
:cluster
)
{
create
(
:cluster
,
:provided_by_gcp
,
projects:
[
project
])
}
it
{
expect
{
go
}.
to
be_allowed_for
(
:admin
)
}
it
{
expect
{
go
}.
to
be_allowed_for
(
:owner
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_allowed_for
(
:master
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:developer
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:reporter
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:guest
).
of
(
project
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:user
)
}
it
{
expect
{
go
}.
to
be_denied_for
(
:external
)
}
end
def
go
delete
:destroy
,
namespace_id:
project
.
namespace
,
project_id:
project
,
id:
cluster
end
end
end
spec/features/projects/clusters_spec.rb
View file @
5f296daa
...
@@ -11,252 +11,7 @@ feature 'Clusters', :js do
...
@@ -11,252 +11,7 @@ feature 'Clusters', :js do
gitlab_sign_in
(
user
)
gitlab_sign_in
(
user
)
end
end
<<<<<<<
HEAD
context
'when user does not have a cluster and visits cluster index page'
do
context
'when user does not have a cluster and visits cluster index page'
do
=======
context
'when user has signed in Google'
do
before
do
allow_any_instance_of
(
Projects
::
ClustersController
)
.
to
receive
(
:token_in_session
).
and_return
(
'token'
)
allow_any_instance_of
(
Projects
::
ClustersController
)
.
to
receive
(
:expires_at_in_session
).
and_return
(
1
.
hour
.
since
.
to_i
.
to_s
)
end
context
'when user does not have a cluster and visits cluster index page'
do
before
do
visit
project_clusters_path
(
project
)
end
it
'sees empty state'
do
expect
(
page
).
to
have_link
(
'Add cluster'
)
expect
(
page
).
to
have_selector
(
'.empty-state'
)
end
context
'when user opens create on gke page'
do
before
do
click_link
'Add cluster'
click_link
'Create on GKE'
end
context
'when user filled form with valid parameters'
do
before
do
double
.
tap
do
|
dbl
|
allow
(
dbl
).
to
receive
(
:status
).
and_return
(
'RUNNING'
)
allow
(
dbl
).
to
receive
(
:self_link
)
.
and_return
(
'projects/gcp-project-12345/zones/us-central1-a/operations/ope-123'
)
allow_any_instance_of
(
GoogleApi
::
CloudPlatform
::
Client
)
.
to
receive
(
:projects_zones_clusters_create
).
and_return
(
dbl
)
end
allow
(
WaitForClusterCreationWorker
).
to
receive
(
:perform_in
).
and_return
(
nil
)
fill_in
'cluster_provider_gcp_attributes_gcp_project_id'
,
with:
'gcp-project-123'
fill_in
'cluster_name'
,
with:
'dev-cluster'
click_button
'Create cluster'
end
it
'user sees a cluster details page and creation status'
do
expect
(
page
).
to
have_content
(
'Cluster is being created on Google Container Engine...'
)
# Application Installation buttons
page
.
within
(
'.js-cluster-application-row-helm'
)
do
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)[
'disabled'
]).
to
eq
(
'true'
)
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
).
text
).
to
eq
(
'Install'
)
end
Clusters
::
Cluster
.
last
.
provider
.
make_created!
expect
(
page
).
to
have_content
(
'Cluster was successfully created on Google Container Engine'
)
end
it
'user sees a error if something worng during creation'
do
expect
(
page
).
to
have_content
(
'Cluster is being created on Google Container Engine...'
)
Clusters
::
Cluster
.
last
.
provider
.
make_errored!
(
'Something wrong!'
)
expect
(
page
).
to
have_content
(
'Something wrong!'
)
end
end
context
'when user filled form with invalid parameters'
do
before
do
click_button
'Create cluster'
end
it
'user sees a validation error'
do
expect
(
page
).
to
have_css
(
'#error_explanation'
)
end
end
end
end
context
'when user has a cluster and visits cluster index page'
do
let!
(
:cluster
)
{
create
(
:cluster
,
:project
,
:provided_by_gcp
)
}
let
(
:project
)
{
cluster
.
project
}
before
do
visit
project_clusters_path
(
project
)
end
it
'user sees a table with one cluster'
do
# One is the header row, the other the cluster row
expect
(
page
).
to
have_selector
(
'.gl-responsive-table-row'
,
count:
2
)
end
it
'user sees a disabled add cluster button '
do
expect
(
page
).
to
have_selector
(
'.js-add-cluster.disabled'
)
end
it
'user sees navigation tabs'
do
expect
(
page
.
find
(
'.js-active-tab'
).
text
).
to
include
(
'Active'
)
expect
(
page
.
find
(
'.js-active-tab .badge'
).
text
).
to
include
(
'1'
)
expect
(
page
.
find
(
'.js-inactive-tab'
).
text
).
to
include
(
'Inactive'
)
expect
(
page
.
find
(
'.js-inactive-tab .badge'
).
text
).
to
include
(
'0'
)
expect
(
page
.
find
(
'.js-all-tab'
).
text
).
to
include
(
'All'
)
expect
(
page
.
find
(
'.js-all-tab .badge'
).
text
).
to
include
(
'1'
)
end
context
'update cluster'
do
it
'user can update cluster'
do
expect
(
page
).
to
have_selector
(
'.js-toggle-cluster-list'
)
end
context
'with sucessfull request'
do
it
'user sees updated cluster'
do
expect
do
page
.
find
(
'.js-toggle-cluster-list'
).
click
wait_for_requests
end
.
to
change
{
cluster
.
enabled
}
expect
(
page
).
not_to
have_selector
(
'.is-checked'
)
end
end
context
'with failed request'
do
it
'user sees not update cluster and error message'
do
# Cluster was disabled in the last test
page
.
find
(
'.js-toggle-cluster-list'
).
click
Clusters
::
Cluster
.
last
.
provider
.
make_errored!
(
'Something wrong!'
)
expect
(
page
).
not_to
have_selector
(
'.js-toggle-cluster-list.is-checked'
)
end
end
end
context
'when user clicks on a cluster'
do
before
do
click_link
cluster
.
name
end
it
'user sees an cluster details page'
do
expect
(
page
).
to
have_button
(
'Save'
)
expect
(
page
.
find
(
:css
,
'.cluster-name'
).
value
).
to
eq
(
cluster
.
name
)
# Application Installation buttons
page
.
within
(
'.js-cluster-application-row-helm'
)
do
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)[
'disabled'
]).
to
be_nil
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)).
to
have_content
(
'Install'
)
end
end
context
'when user installs application: Helm Tiller'
do
before
do
allow
(
ClusterInstallAppWorker
).
to
receive
(
:perform_async
).
and_return
(
nil
)
page
.
within
(
'.js-cluster-application-row-helm'
)
do
page
.
find
(
:css
,
'.js-cluster-application-install-button'
).
click
end
end
it
'user sees status transition'
do
page
.
within
(
'.js-cluster-application-row-helm'
)
do
# FE sends request and gets the response, then the buttons is "Install"
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)[
'disabled'
]).
to
eq
(
'true'
)
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)).
to
have_content
(
'Install'
)
Clusters
::
Cluster
.
last
.
application_helm
.
make_installing!
# FE starts polling and update the buttons to "Installing"
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)[
'disabled'
]).
to
eq
(
'true'
)
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)).
to
have_content
(
'Installing'
)
Clusters
::
Cluster
.
last
.
application_helm
.
make_installed!
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)[
'disabled'
]).
to
eq
(
'true'
)
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)).
to
have_content
(
'Installed'
)
end
expect
(
page
).
to
have_content
(
'Helm Tiller was successfully installed on your cluster'
)
end
end
context
'when user installs application: Ingress'
do
before
do
allow
(
ClusterInstallAppWorker
).
to
receive
(
:perform_async
).
and_return
(
nil
)
# Helm Tiller needs to be installed before you can install Ingress
create
(
:cluster_applications_helm
,
:installed
,
cluster:
cluster
)
visit
project_cluster_path
(
project
,
cluster
)
page
.
within
(
'.js-cluster-application-row-ingress'
)
do
page
.
find
(
:css
,
'.js-cluster-application-install-button'
).
click
end
end
it
'user sees status transition'
do
page
.
within
(
'.js-cluster-application-row-ingress'
)
do
# FE sends request and gets the response, then the buttons is "Install"
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)[
'disabled'
]).
to
eq
(
'true'
)
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)).
to
have_content
(
'Install'
)
Clusters
::
Cluster
.
last
.
application_ingress
.
make_installing!
# FE starts polling and update the buttons to "Installing"
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)[
'disabled'
]).
to
eq
(
'true'
)
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)).
to
have_content
(
'Installing'
)
Clusters
::
Cluster
.
last
.
application_ingress
.
make_installed!
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)[
'disabled'
]).
to
eq
(
'true'
)
expect
(
page
.
find
(
:css
,
'.js-cluster-application-install-button'
)).
to
have_content
(
'Installed'
)
end
expect
(
page
).
to
have_content
(
'Ingress was successfully installed on your cluster'
)
end
end
context
'when user disables the cluster'
do
before
do
page
.
find
(
:css
,
'.js-toggle-cluster'
).
click
click_button
'Save'
end
it
'user sees the successful message'
do
expect
(
page
).
to
have_content
(
'Cluster was successfully updated.'
)
end
end
context
'when user destroys the cluster'
do
before
do
page
.
accept_confirm
do
click_link
'Remove integration'
end
end
it
'user sees creation form with the succeccful message'
do
expect
(
page
).
to
have_content
(
'Cluster integration was successfully removed.'
)
expect
(
page
).
to
have_link
(
'Add cluster'
)
end
end
end
end
end
context
'when user has not signed in Google'
do
>>>>>>>
origin
/
list
-
multiple
-
clusters
before
do
before
do
visit
project_clusters_path
(
project
)
visit
project_clusters_path
(
project
)
...
...
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