summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2017-12-09 15:08:27 -0800
committerStan Hu <stanhu@gmail.com>2017-12-12 15:07:25 -0800
commitef78f67f4a2e19d204f5f4d4770649be1fe7bee9 (patch)
tree198ecbb47704b1d1478a9edc198c4eeb5336b124
parent54f13b1ec8542dc5085e0367734e8344c2c3d01e (diff)
downloadgitlab-ce-ef78f67f4a2e19d204f5f4d4770649be1fe7bee9.tar.gz
Add a spec for rate limiting pipeline schedules
-rw-r--r--app/controllers/projects/pipeline_schedules_controller.rb4
-rw-r--r--spec/controllers/projects/pipeline_schedules_controller_spec.rb10
2 files changed, 12 insertions, 2 deletions
diff --git a/app/controllers/projects/pipeline_schedules_controller.rb b/app/controllers/projects/pipeline_schedules_controller.rb
index b7a0a3591cd..87878667e9b 100644
--- a/app/controllers/projects/pipeline_schedules_controller.rb
+++ b/app/controllers/projects/pipeline_schedules_controller.rb
@@ -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
diff --git a/spec/controllers/projects/pipeline_schedules_controller_spec.rb b/spec/controllers/projects/pipeline_schedules_controller_spec.rb
index 844c62ef005..ffc1259eb8f 100644
--- a/spec/controllers/projects/pipeline_schedules_controller_spec.rb
+++ b/spec/controllers/projects/pipeline_schedules_controller_spec.rb
@@ -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