summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-10-17 21:06:10 +0200
committerKamil Trzcinski <ayufan@ayufan.eu>2016-10-17 21:06:10 +0200
commite9880722076081df1576a3fb01e2c30feb6208ba (patch)
tree790238d3777285a5f42947b42f906cdaee7e8c94 /app
parent4a369185d77013b2138f2daf6d85b1358425e75c (diff)
downloadgitlab-ce-e9880722076081df1576a3fb01e2c30feb6208ba.tar.gz
Fix environments specs
Diffstat (limited to 'app')
-rw-r--r--app/controllers/projects/environments_controller.rb5
-rw-r--r--app/models/environment.rb3
-rw-r--r--app/services/create_deployment_service.rb2
-rw-r--r--app/views/projects/environments/_external_url.html.haml2
-rw-r--r--app/views/projects/environments/_stop.html.haml2
-rw-r--r--app/views/projects/environments/show.html.haml8
6 files changed, 12 insertions, 10 deletions
diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb
index 86bc17a720a..02a659d3894 100644
--- a/app/controllers/projects/environments_controller.rb
+++ b/app/controllers/projects/environments_controller.rb
@@ -1,8 +1,9 @@
class Projects::EnvironmentsController < Projects::ApplicationController
layout 'project'
before_action :authorize_read_environment!
- before_action :authorize_create_environment!, only: [:new, :create]
- before_action :authorize_update_environment!, only: [:edit, :update, :stop]
+ before_action :authorize_create_environment!, only: [:new, :create, :stop]
+ before_action :authorize_create_deployment!, only: [:stop]
+ before_action :authorize_update_environment!, only: [:edit, :update]
before_action :environment, only: [:show, :edit, :update, :stop]
def index
diff --git a/app/models/environment.rb b/app/models/environment.rb
index 20da71ccb3f..ff55e751f70 100644
--- a/app/models/environment.rb
+++ b/app/models/environment.rb
@@ -21,6 +21,9 @@ class Environment < ActiveRecord::Base
delegate :stop_action, to: :last_deployment, allow_nil: true
+ scope :available, -> { with_state(:available) }
+ scope :stopped, -> { with_state(:stopped) }
+
state_machine :state, initial: :available do
event :start do
transition stopped: :available
diff --git a/app/services/create_deployment_service.rb b/app/services/create_deployment_service.rb
index c55d2ed231a..8ae15ad32f4 100644
--- a/app/services/create_deployment_service.rb
+++ b/app/services/create_deployment_service.rb
@@ -10,8 +10,8 @@ class CreateDeploymentService < BaseService
@environment = environment
@environment.external_url = expanded_url if expanded_url
@environment.fire_state_event(action)
- @environment.save!
+ return unless @environment.save
return if @environment.stopped?
deploy.tap do |deployment|
diff --git a/app/views/projects/environments/_external_url.html.haml b/app/views/projects/environments/_external_url.html.haml
index 6255e4baea0..4c8fe1c271b 100644
--- a/app/views/projects/environments/_external_url.html.haml
+++ b/app/views/projects/environments/_external_url.html.haml
@@ -1,3 +1,3 @@
-- if environment.external_url
+- if environment.external_url && can?(current_user, :read_environment, environment)
= link_to environment.external_url, target: '_blank', class: 'btn external-url' do
= icon('external-link')
diff --git a/app/views/projects/environments/_stop.html.haml b/app/views/projects/environments/_stop.html.haml
index c7dec086890..880f8c8c62c 100644
--- a/app/views/projects/environments/_stop.html.haml
+++ b/app/views/projects/environments/_stop.html.haml
@@ -1,4 +1,4 @@
-- if environment.stoppable?
+- if can?(current_user, :create_deployment, environment) && environment.stoppable?
.inline
= link_to stop_namespace_project_environment_path(@project.namespace, @project, environment), method: :post,
class: 'btn close-env-link', rel: 'nofollow', data: { confirm: 'Are you sure you want to stop this environment?' } do
diff --git a/app/views/projects/environments/show.html.haml b/app/views/projects/environments/show.html.haml
index b6a1a7fc89e..bf082a05c39 100644
--- a/app/views/projects/environments/show.html.haml
+++ b/app/views/projects/environments/show.html.haml
@@ -8,13 +8,11 @@
%h3.page-title= @environment.name.capitalize
.col-md-3
.nav-controls
- - if can?(current_user, :read_environmnet, @environment)
- = render 'projects/environments/external_url', environment: @environment
-
+ = render 'projects/environments/external_url', environment: @environment
- if can?(current_user, :update_environment, @environment)
= link_to 'Edit', edit_namespace_project_environment_path(@project.namespace, @project, @environment), class: 'btn'
- - if @environment.stoppable?
- = link_to 'Stop', stop_namespace_project_environment_path(@project.namespace, @project, @environment), data: { confirm: 'Are you sure you want to stop this environment?' }, class: 'btn btn-danger', method: :post
+ - if can?(current_user, :create_deployment, @environment) && @environment.stoppable?
+ = link_to 'Stop', stop_namespace_project_environment_path(@project.namespace, @project, @environment), data: { confirm: 'Are you sure you want to stop this environment?' }, class: 'btn btn-danger', method: :post
.deployments-container
- if @deployments.blank?