У меня есть приложение, в котором пользователи являются авторами объектов под названием «Связующие».Это частный ресурс, где один пользователь не должен иметь возможность просматривать подшивку другого пользователя, если он не используется совместно.Я хотел бы, чтобы мое приложение 404 всякий раз, когда пользователь пытается сделать такую вещь.Вот что я пробовал до сих пор.
class BindersController < ApplicationController
before_action :authenticate_user!
before_action :set_user, only: [:show, :edit, :update, :destroy]
before_action :authenticate_access, only: [:show, :edit, :update, :destroy]
# ...
private
def authenticate_access
if current_user != @binder.user
respond_to do |format|
format.html { head :missing }
format.json { head :missing }
end
end
end
end
Моя проблема в том, что Rails предпочитает 500 в разработке и тестировании.Это делает невозможным проверку с помощью теста, подобного следующему.
class BindersControllerTest < ActionDispatch::IntegrationTest
include Warden::Test::Helpers
setup do
@alices_binder = binders(:alices_binder)
@alice = users(:alice)
@eve = users(:eve)
end
teardown do
Warden.test_reset!
end
test 'binders#show should be missing if accessed by wrong user'
login_as @eve, scope: :user
get binder_url(@alices_binder)
assert_response :missing
end
end
Как правильно проверить это поведение в процессе производства?