Add a spec for rate limiting pipeline schedules

This commit is contained in:
Stan Hu 2017-12-09 15:08:27 -08:00
parent 54f13b1ec8
commit ef78f67f4a
2 changed files with 12 additions and 2 deletions

View file

@ -45,7 +45,7 @@ class Projects::PipelineSchedulesController < Projects::ApplicationController
limiter = ::Gitlab::ActionRateLimiter.new(action: 'play_pipeline_schedule')
if limiter.throttled?(throttle_key, 1)
flash[:notice] = 'You cannot play this scheduled pipeline at the moment. Please wait a minute.'
flash[:alert] = 'You cannot play this scheduled pipeline at the moment. Please wait a minute.'
return redirect_to pipeline_schedules_path(@project)
end
@ -53,7 +53,7 @@ class Projects::PipelineSchedulesController < Projects::ApplicationController
flash[:notice] =
if job_id
"Successfully scheduled a pipeline to run. Go to the <a href=\"#{project_pipelines_path(@project)}\">Pipelines page</a> for details".html_safe
"Successfully scheduled a pipeline to run. Go to the <a href=\"#{project_pipelines_path(@project)}\">Pipelines page</a> for details.".html_safe
else
'Unable to schedule a pipeline to run immediately'
end

View file

@ -385,6 +385,16 @@ describe Projects::PipelineSchedulesController do
expect(flash[:notice]).to start_with 'Successfully scheduled a pipeline to run'
expect(response).to have_gitlab_http_status(302)
end
it 'prevents users from scheduling the same pipeline repeatedly' do
2.times do
post :play, namespace_id: project.namespace.to_param, project_id: project, id: pipeline_schedule.id
end
expect(flash.to_a.size).to eq(2)
expect(flash[:alert]).to eq 'You cannot play this scheduled pipeline at the moment. Please wait a minute.'
expect(response).to have_gitlab_http_status(302)
end
end
context 'when a developer attempts to schedule a protected ref' do