Fix specs related to new manual actions permissions
This commit is contained in:
parent
f647ad8f6f
commit
e533d43a8c
4 changed files with 54 additions and 14 deletions
|
@ -18,6 +18,8 @@ FactoryGirl.define do
|
|||
# interconnected objects to simulate a review app.
|
||||
#
|
||||
after(:create) do |environment, evaluator|
|
||||
pipeline = create(:ci_pipeline, project: environment.project)
|
||||
|
||||
deployment = create(:deployment,
|
||||
environment: environment,
|
||||
project: environment.project,
|
||||
|
@ -26,7 +28,7 @@ FactoryGirl.define do
|
|||
|
||||
teardown_build = create(:ci_build, :manual,
|
||||
name: "#{deployment.environment.name}:teardown",
|
||||
pipeline: deployment.deployable.pipeline)
|
||||
pipeline: pipeline)
|
||||
|
||||
deployment.update_column(:on_stop, teardown_build.name)
|
||||
environment.update_attribute(:deployments, [deployment])
|
||||
|
|
|
@ -62,6 +62,8 @@ feature 'Environment', :feature do
|
|||
name: 'deploy to production')
|
||||
end
|
||||
|
||||
given(:role) { :master }
|
||||
|
||||
scenario 'does show a play button' do
|
||||
expect(page).to have_link(action.name.humanize)
|
||||
end
|
||||
|
@ -132,6 +134,8 @@ feature 'Environment', :feature do
|
|||
on_stop: 'close_app')
|
||||
end
|
||||
|
||||
given(:role) { :master }
|
||||
|
||||
scenario 'does allow to stop environment' do
|
||||
click_link('Stop')
|
||||
|
||||
|
|
|
@ -191,25 +191,52 @@ describe Environment, models: true do
|
|||
end
|
||||
|
||||
context 'when matching action is defined' do
|
||||
let(:build) { create(:ci_build) }
|
||||
let!(:deployment) { create(:deployment, environment: environment, deployable: build, on_stop: 'close_app') }
|
||||
let(:pipeline) { create(:ci_pipeline, project: project) }
|
||||
let(:build) { create(:ci_build, pipeline: pipeline) }
|
||||
|
||||
context 'when action did not yet finish' do
|
||||
let!(:close_action) { create(:ci_build, :manual, pipeline: build.pipeline, name: 'close_app') }
|
||||
let!(:deployment) do
|
||||
create(:deployment, environment: environment,
|
||||
deployable: build,
|
||||
on_stop: 'close_app')
|
||||
end
|
||||
|
||||
it 'returns the same action' do
|
||||
expect(subject).to eq(close_action)
|
||||
expect(subject.user).to eq(user)
|
||||
context 'when user is not allowed to stop environment' do
|
||||
let!(:close_action) do
|
||||
create(:ci_build, :manual, pipeline: pipeline, name: 'close_app')
|
||||
end
|
||||
|
||||
it 'raises an exception' do
|
||||
expect { subject }.to raise_error(Gitlab::Access::AccessDeniedError)
|
||||
end
|
||||
end
|
||||
|
||||
context 'if action did finish' do
|
||||
let!(:close_action) { create(:ci_build, :manual, :success, pipeline: build.pipeline, name: 'close_app') }
|
||||
context 'when user is allowed to stop environment' do
|
||||
before do
|
||||
project.add_master(user)
|
||||
end
|
||||
|
||||
it 'returns a new action of the same type' do
|
||||
is_expected.to be_persisted
|
||||
expect(subject.name).to eq(close_action.name)
|
||||
expect(subject.user).to eq(user)
|
||||
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
|
||||
|
||||
context 'if action did finish' do
|
||||
let!(:close_action) do
|
||||
create(:ci_build, :manual, :success,
|
||||
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
|
||||
|
|
|
@ -314,6 +314,13 @@ describe Ci::ProcessPipelineService, '#execute', :services do
|
|||
end
|
||||
|
||||
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
|
||||
process_pipeline
|
||||
|
||||
|
|
Loading…
Reference in a new issue