我有一个自定义AutorizationAdapter,我想使用RSpec测试:
class AdminAuthorization < ActiveAdmin::AuthorizationAdapter
def authorized?(_action, _subject = nil)
user.admin?
end
end
最初我使用的是自定义方法,但由于我使用的是Devise,因此使用自定义AuthorizationAdapter似乎是最佳选择。
您将如何进行测试?我试过一种方法来测试它是为一个控制器创建一个请求规范并测试状态代码&amp;重定向,类似的东西:
require 'rails_helper'
RSpec.describe 'AdminUsers', type: :request do
describe 'GET /admin_users' do
context 'admin' do
let(:admin_user) { create(:admin_user) }
before { sign_in super_user }
get admin_users_path
expect(response).to have_http_status(200)
end
context 'non admin' do
let(:user) { create(:user) }
before { sign_in user }
it 'redirects to the login page' do
get admin_users_path
expect(response).to have_http_status(302)
expect(response).to redirected_to '/admin/login'
end
end
context 'non logged in user' do
it 'redirects to the login page' do
get admin_users_path
expect(response).to have_http_status(302)
expect(response).to redirected_to '/admin/login'
end
end
end
end
我不确定这是不行的方法。
答案 0 :(得分:0)
这对我来说看起来很合理。您还可以查看ActiveAdmin测试套件中的单元和功能规格。但是,AuthorizationAdapter本身就是一个PORO,所以你应该能够单独进行单元测试:在上面给出的例子中,这将是一个相当简单的测试。