Commit e533d43a authored by Grzegorz Bizon's avatar Grzegorz Bizon

Fix specs related to new manual actions permissions

parent f647ad8f
...@@ -18,6 +18,8 @@ FactoryGirl.define do ...@@ -18,6 +18,8 @@ FactoryGirl.define do
# interconnected objects to simulate a review app. # interconnected objects to simulate a review app.
# #
after(:create) do |environment, evaluator| after(:create) do |environment, evaluator|
pipeline = create(:ci_pipeline, project: environment.project)
deployment = create(:deployment, deployment = create(:deployment,
environment: environment, environment: environment,
project: environment.project, project: environment.project,
...@@ -26,7 +28,7 @@ FactoryGirl.define do ...@@ -26,7 +28,7 @@ FactoryGirl.define do
teardown_build = create(:ci_build, :manual, teardown_build = create(:ci_build, :manual,
name: "#{deployment.environment.name}:teardown", name: "#{deployment.environment.name}:teardown",
pipeline: deployment.deployable.pipeline) pipeline: pipeline)
deployment.update_column(:on_stop, teardown_build.name) deployment.update_column(:on_stop, teardown_build.name)
environment.update_attribute(:deployments, [deployment]) environment.update_attribute(:deployments, [deployment])
......
...@@ -62,6 +62,8 @@ feature 'Environment', :feature do ...@@ -62,6 +62,8 @@ feature 'Environment', :feature do
name: 'deploy to production') name: 'deploy to production')
end end
given(:role) { :master }
scenario 'does show a play button' do scenario 'does show a play button' do
expect(page).to have_link(action.name.humanize) expect(page).to have_link(action.name.humanize)
end end
...@@ -132,6 +134,8 @@ feature 'Environment', :feature do ...@@ -132,6 +134,8 @@ feature 'Environment', :feature do
on_stop: 'close_app') on_stop: 'close_app')
end end
given(:role) { :master }
scenario 'does allow to stop environment' do scenario 'does allow to stop environment' do
click_link('Stop') click_link('Stop')
......
...@@ -191,25 +191,52 @@ describe Environment, models: true do ...@@ -191,25 +191,52 @@ describe Environment, models: true do
end end
context 'when matching action is defined' do context 'when matching action is defined' do
let(:build) { create(:ci_build) } let(:pipeline) { create(:ci_pipeline, project: project) }
let!(:deployment) { create(:deployment, environment: environment, deployable: build, on_stop: 'close_app') } let(:build) { create(:ci_build, pipeline: pipeline) }
let!(:deployment) do
create(:deployment, environment: environment,
deployable: build,
on_stop: 'close_app')
end
context 'when action did not yet finish' do context 'when user is not allowed to stop environment' do
let!(:close_action) { create(:ci_build, :manual, pipeline: build.pipeline, name: 'close_app') } let!(:close_action) do
create(:ci_build, :manual, pipeline: pipeline, name: 'close_app')
end
it 'returns the same action' do it 'raises an exception' do
expect(subject).to eq(close_action) expect { subject }.to raise_error(Gitlab::Access::AccessDeniedError)
expect(subject.user).to eq(user)
end end
end end
context 'if action did finish' do context 'when user is allowed to stop environment' do
let!(:close_action) { create(:ci_build, :manual, :success, pipeline: build.pipeline, name: 'close_app') } before do
project.add_master(user)
end
context 'when action did not yet finish' do
let!(:close_action) do
create(:ci_build, :manual, pipeline: pipeline, name: 'close_app')
end
it 'returns the same action' do
expect(subject).to eq(close_action)
expect(subject.user).to eq(user)
end
end
it 'returns a new action of the same type' do context 'if action did finish' do
is_expected.to be_persisted let!(:close_action) do
expect(subject.name).to eq(close_action.name) create(:ci_build, :manual, :success,
expect(subject.user).to eq(user) pipeline: pipeline, name: 'close_app')
end
it 'returns a new action of the same type' do
expect(subject).to be_persisted
expect(subject.name).to eq(close_action.name)
expect(subject.user).to eq(user)
end
end end
end end
end end
......
...@@ -314,6 +314,13 @@ describe Ci::ProcessPipelineService, '#execute', :services do ...@@ -314,6 +314,13 @@ describe Ci::ProcessPipelineService, '#execute', :services do
end end
context 'when pipeline is promoted sequentially up to the end' do context 'when pipeline is promoted sequentially up to the end' do
before do
# We are using create(:empty_project), and users has to be master in
# order to execute manual action when repository does not exist.
#
project.add_master(user)
end
it 'properly processes entire pipeline' do it 'properly processes entire pipeline' do
process_pipeline process_pipeline
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment