如何测试activeadmin AuthorizationAdapter?

时间:2017-10-24 10:18:40

标签: ruby-on-rails rspec devise activeadmin

我有一个自定义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

我不确定这是不行的方法。

1 个答案:

答案 0 :(得分:0)

这对我来说看起来很合理。您还可以查看ActiveAdmin测试套件中的单元和功能规格。但是,AuthorizationAdapter本身就是一个PORO,所以你应该能够单独进行单元测试:在上面给出的例子中,这将是一个相当简单的测试。