2017-10-24 4 views
0

Ich habe eine benutzerdefinierte AutorizationAdapter, Ich mag würde mit RSpec testen:So testen Sie ActiveAdmin AuthorizationAdapter?

class AdminAuthorization < ActiveAdmin::AuthorizationAdapter 
    def authorized?(_action, _subject = nil) 
    user.admin? 
    end 
end 

Zunächst ich eine benutzerdefinierte Methode verwendet, aber da ich Devise bin mit, mit einem benutzerdefinierten AuthorizationAdapter schien der Weg zu sein, zu gehen.

Wie würden Sie es testen? Ich tought eine Möglichkeit zu testen, ist es eine Anforderung Spezifikation für einen des Controller und Tests für Statuscode & Umleitung, so etwas zu schaffen:

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 

Ich bin nicht sicher, ob dies der richtige Weg zu gehen.

Antwort

0

Diese sehen für mich vernünftig aus. Sie können auch die Einheiten- und Feature-Spezifikationen anzeigen, die sich in der ActiveAdmin-Testsuite befinden. AuthorizationAdapter selbst ist jedoch ein PORO, so dass Sie in der Lage sein sollten, Unit-Tests isoliert durchzuführen: Im obigen Beispiel wäre das ein ziemlich trivialer Test.