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
83346192
Commit
83346192
authored
Dec 03, 2017
by
Kamil Trzcinski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update specs
parent
90c09efe
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
230 additions
and
111 deletions
+230
-111
app/controllers/projects/clusters_controller.rb
app/controllers/projects/clusters_controller.rb
+2
-0
app/views/projects/clusters/new.html.haml
app/views/projects/clusters/new.html.haml
+2
-2
spec/features/projects/clusters/applications_spec.rb
spec/features/projects/clusters/applications_spec.rb
+1
-1
spec/features/projects/clusters/gcp_spec.rb
spec/features/projects/clusters/gcp_spec.rb
+124
-0
spec/features/projects/clusters/user_spec.rb
spec/features/projects/clusters/user_spec.rb
+96
-0
spec/features/projects/clusters_spec.rb
spec/features/projects/clusters_spec.rb
+5
-108
No files found.
app/controllers/projects/clusters_controller.rb
View file @
83346192
...
...
@@ -5,6 +5,8 @@ class Projects::ClustersController < Projects::ApplicationController
before_action
:authorize_update_cluster!
,
only:
[
:update
]
before_action
:authorize_admin_cluster!
,
only:
[
:destroy
]
STATUS_POLLING_INTERVAL
=
10_000
def
index
if
project
.
cluster
redirect_to
project_cluster_path
(
project
,
project
.
cluster
)
...
...
app/views/projects/clusters/new.html.haml
View file @
83346192
...
...
@@ -8,6 +8,6 @@
%h4
.prepend-top-0
=
s_
(
'ClusterIntegration|Choose how to set up cluster integration'
)
%p
=
s_
(
'ClusterIntegration|Create a new cluster on Google Engine right from GitLab'
)
=
link_to
s_
(
'ClusterIntegration|Create on GKE'
),
new_namespace_project_gcp
_path
(
@project
.
namespace
,
@project
),
class:
'btn append-bottom-20'
=
link_to
s_
(
'ClusterIntegration|Create on GKE'
),
gcp_new_namespace_project_clusters
_path
(
@project
.
namespace
,
@project
),
class:
'btn append-bottom-20'
%p
=
s_
(
'ClusterIntegration|Enter the details for an existing Kubernetes cluster'
)
=
link_to
s_
(
'ClusterIntegration|Add an existing cluster'
),
new_namespace_project_user
_path
(
@project
.
namespace
,
@project
),
class:
'btn append-bottom-20'
=
link_to
s_
(
'ClusterIntegration|Add an existing cluster'
),
user_new_namespace_project_clusters
_path
(
@project
.
namespace
,
@project
),
class:
'btn append-bottom-20'
spec/features/projects/clusters/applications_spec.rb
View file @
83346192
...
...
@@ -8,7 +8,7 @@ feature 'Clusters Applications', :js do
before
do
project
.
add_master
(
user
)
gitlab_
sign_in
(
user
)
sign_in
(
user
)
end
describe
'Installing applications'
do
...
...
spec/features/projects/clusters/gcp_spec.rb
0 → 100644
View file @
83346192
require
'spec_helper'
feature
'Gcp Cluster'
,
:js
do
include
GoogleApi
::
CloudPlatformHelpers
let
(
:project
)
{
create
(
:project
)
}
let
(
:user
)
{
create
(
:user
)
}
before
do
project
.
add_master
(
user
)
gitlab_sign_in
(
user
)
allow
(
Projects
::
ClustersController
).
to
receive
(
:STATUS_POLLING_INTERVAL
)
{
100
}
end
context
'when user has signed with Google'
do
before
do
allow_any_instance_of
(
Projects
::
Clusters
::
GcpController
)
.
to
receive
(
:token_in_session
).
and_return
(
'token'
)
allow_any_instance_of
(
Projects
::
Clusters
::
GcpController
)
.
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
)
click_link
'Create on GKE'
end
context
'when user filled form with valid parameters'
do
before
do
allow_any_instance_of
(
GoogleApi
::
CloudPlatform
::
Client
)
.
to
receive
(
:projects_zones_clusters_create
)
do
OpenStruct
.
new
(
self_link:
'projects/gcp-project-12345/zones/us-central1-a/operations/ope-123'
,
status:
'RUNNING'
)
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...'
)
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
context
'when user does have a cluster and visits cluster page'
do
let
(
:cluster
)
{
create
(
:cluster
,
:provided_by_gcp
,
projects:
[
project
])
}
before
do
visit
project_cluster_path
(
project
,
cluster
)
end
it
'user sees a cluster details page'
do
expect
(
page
).
to
have_button
(
'Save'
)
expect
(
page
.
find
(
:css
,
'.cluster-name'
).
value
).
to
eq
(
cluster
.
name
)
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 destroy the cluster'
do
before
do
page
.
accept_confirm
do
click_link
'Remove integration'
end
end
it
'user sees creation form with the successful message'
do
expect
(
page
).
to
have_content
(
'Cluster integration was successfully removed.'
)
expect
(
page
).
to
have_link
(
'Create on GKE'
)
end
end
end
end
context
'when user has not signed with Google'
do
before
do
visit
project_clusters_path
(
project
)
click_link
'Create on GKE'
end
it
'user sees a login page'
do
expect
(
page
).
to
have_css
(
'.signin-with-google'
)
end
end
end
spec/features/projects/clusters/user_spec.rb
0 → 100644
View file @
83346192
require
'spec_helper'
feature
'User Cluster'
,
:js
do
include
GoogleApi
::
CloudPlatformHelpers
let
(
:project
)
{
create
(
:project
)
}
let
(
:user
)
{
create
(
:user
)
}
before
do
project
.
add_master
(
user
)
gitlab_sign_in
(
user
)
allow
(
Projects
::
ClustersController
).
to
receive
(
:STATUS_POLLING_INTERVAL
)
{
100
}
end
context
'when user does not have a cluster and visits cluster index page'
do
before
do
visit
project_clusters_path
(
project
)
click_link
'Add an existing cluster'
end
context
'when user filled form with valid parameters'
do
before
do
fill_in
'cluster_provider_gcp_attributes_gcp_project_id'
,
with:
'gcp-project-123'
fill_in
'cluster_platform_kubernetes_attributes_api_url'
,
with:
'http://example.com'
fill_in
'cluster_platform_kubernetes_attributes_token'
,
with:
'my-token'
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 was successfully created on Google Container Engine'
)
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
context
'when user does have a cluster and visits cluster page'
do
let
(
:cluster
)
{
create
(
:cluster
,
:provided_by_user
,
projects:
[
project
])
}
before
do
visit
project_cluster_path
(
project
,
cluster
)
end
it
'user sees a cluster details page'
do
expect
(
page
).
to
have_button
(
'Save'
)
expect
(
page
.
find
(
:css
,
'.cluster-name'
).
value
).
to
eq
(
cluster
.
name
)
end
context
'when user disables the cluster'
do
before
do
page
.
find
(
:css
,
'.js-toggle-cluster'
).
click
fill_in
'cluster_name'
,
with:
'dev-cluster'
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 changes cluster name'
do
before
do
fill_in
'cluster_name'
,
with:
'my-dev-cluster'
click_button
'Save'
end
it
'user sees the successful message'
do
expect
(
page
).
to
have_content
(
'Cluster was successfully updated.'
)
expect
(
cluster
.
reload
.
cluster_name
).
to
eq
(
'my-dev-cluster'
)
end
end
context
'when user destroy the cluster'
do
before
do
page
.
accept_confirm
do
click_link
'Remove integration'
end
end
it
'user sees creation form with the successful message'
do
expect
(
page
).
to
have_content
(
'Cluster integration was successfully removed.'
)
expect
(
page
).
to
have_link
(
'Create on GKE'
)
end
end
end
end
spec/features/projects/clusters_spec.rb
View file @
83346192
...
...
@@ -3,126 +3,23 @@ require 'spec_helper'
feature
'Clusters'
,
:js
do
include
GoogleApi
::
CloudPlatformHelpers
let
!
(
:project
)
{
create
(
:project
,
:repository
)
}
let
!
(
:user
)
{
create
(
:user
)
}
let
(
:project
)
{
create
(
:project
)
}
let
(
:user
)
{
create
(
:user
)
}
before
do
project
.
add_master
(
user
)
gitlab_sign_in
(
user
)
end
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
)
click_link
'Create on GKE'
end
it
'user sees a new page'
do
expect
(
page
).
to
have_button
(
'Create cluster'
)
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...'
)
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
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 an cluster details page'
do
expect
(
page
).
to
have_button
(
'Save'
)
expect
(
page
.
find
(
:css
,
'.cluster-name'
).
value
).
to
eq
(
cluster
.
name
)
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 succeccful message'
do
expect
(
page
).
to
have_content
(
'Cluster was successfully updated.'
)
end
end
context
'when user destory 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
(
'Create on GKE'
)
end
end
end
end
context
'when user has not signed in Google'
do
context
'when user does not have a cluster and visits cluster index page'
do
before
do
visit
project_clusters_path
(
project
)
click_link
'Create on GKE'
end
it
'user sees a
login
page'
do
expect
(
page
).
to
have_
css
(
'.signin-with-google
'
)
it
'user sees a
new
page'
do
expect
(
page
).
to
have_
button
(
'Create cluster
'
)
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