Sha256: 4e344a110e5169bbf943da42ffb321beff9b0142334835a57eb652b3accc4e1f
Contents?: true
Size: 1.88 KB
Versions: 2
Compression:
Stored size: 1.88 KB
Contents
require 'spec_helper' module AccessPolicySpec DummyPolicy = Struct.new(:current_user, :object_to_guard) do def call? current_user && current_user.allowed? end def query? raise StandardError, 'query? called' end end class Dummy include AccessPolicy policy_guarded_method 'call' do :return_value end policy_guarded_method 'other_method_name', 'query?' do :return_value end end end describe AccessPolicy do subject{ AccessPolicySpec::Dummy.new } let(:falsy_user){ double("user", allowed?: false) } let(:truethy_user){ double("user", allowed?: true) } describe '.policy_guarded_method' do it 'creates a guarded method' do expect(subject).to respond_to :call end it 'protects created methods' do expect { subject.with_user_or_role(falsy_user) do subject.call end }.to raise_error AccessPolicy::NotAuthorizedError end it 'grands access to guarded methods when the user has the right' do expect { subject.with_user_or_role(truethy_user) do subject.call end }.not_to raise_error end it 'creates a not guarded method' do expect(subject).to respond_to :call_unsafe end it 'does not protect unsafe methods' do expect { subject.call_unsafe }.not_to raise_error end it 'uses a different name for query when wanted' do expect { subject.other_method_name }.to raise_error(StandardError, 'query? called') end end describe '.with_user_or_role' do it 'delegates to the policy check object' do error_policy = ->(exception){} current_user = double('user') expect(subject._guard).to receive(:with_user_or_role).with(current_user, error_policy) subject.with_user_or_role(current_user, error_policy) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
access_policy-0.0.7 | spec/integration/lib/access_policy_spec.rb |
access_policy-0.0.6 | spec/integration/lib/access_policy_spec.rb |