From 7e568921a86abadb9aebfe48809d150315a5ed07 Mon Sep 17 00:00:00 2001 From: Anna Buianova Date: Mon, 4 Mar 2019 21:12:42 +0300 Subject: [PATCH] Enable delayed_job web interface for admins (#1967) * Enable delayed_job web interface for admins * Fix delayed_job web interface spec descs --- Gemfile | 2 +- config/routes.rb | 4 ++-- spec/requests/delayed_job_spec.rb | 40 +++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 spec/requests/delayed_job_spec.rb diff --git a/Gemfile b/Gemfile index 09207142d..20b7b4456 100644 --- a/Gemfile +++ b/Gemfile @@ -35,6 +35,7 @@ gem "counter_culture", "~> 2.1" gem "csv_shaper", "~> 1.3" gem "dalli", "~> 2.7" gem "delayed_job_active_record", "~> 4.1" +gem "delayed_job_web", "~> 1.4" gem "devise", "~> 4.6" gem "draper", "~> 3.0" gem "email_validator", "~> 1.6" @@ -108,7 +109,6 @@ group :development do gem "brakeman", "~> 4.4", require: false gem "bullet", "~> 5.9" gem "bundler-audit", "~> 0.6" - gem "delayed_job_web", "~> 1.4" gem "derailed_benchmarks", "~> 1.3" gem "guard", "~> 2.15", require: false gem "guard-livereload", "~> 2.5", require: false diff --git a/config/routes.rb b/config/routes.rb index f6f5ee64b..6479f6a7c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -7,8 +7,8 @@ Rails.application.routes.draw do registrations: "registrations" } - if Rails.env.development? - match "/delayed_job" => DelayedJobWeb, :anchor => false, :via => %i[get post] + authenticated :user, ->(user) { user.admin? } do + mount DelayedJobWeb, at: "/delayed_job" end devise_scope :user do diff --git a/spec/requests/delayed_job_spec.rb b/spec/requests/delayed_job_spec.rb new file mode 100644 index 000000000..eff2cd399 --- /dev/null +++ b/spec/requests/delayed_job_spec.rb @@ -0,0 +1,40 @@ +require "rails_helper" + +RSpec.describe "Delayed Job web interface", type: :request do + let(:user) { create(:user) } + let(:super_admin) { create(:user, :super_admin) } + let(:article) { create(:article, user_id: user.id) } + + describe "GET /delayed_job" do + context "when not logged in" do + it "raises 404" do + expect do + get "/delayed_job" + end.to raise_error(ActionController::RoutingError) + end + end + + context "when logged in" do + it "raises 404" do + login_as user + expect do + get "/delayed_job" + end.to raise_error(ActionController::RoutingError) + end + end + + context "when logged in as a super admin" do + before { login_as super_admin } + + it "redirects to overview" do + get "/delayed_job" + expect(response).to redirect_to("/delayed_job/overview") + end + + it "renders overview" do + get "/delayed_job/overview" + expect(response.body).to include "Overview" + end + end + end +end