Sha256: 62405942242ee36bfdd0d50d3d2fa03e6bf0d13c6d767117f8cb0b4d94c7fcc1

Contents?: true

Size: 1.2 KB

Versions: 2

Compression:

Stored size: 1.2 KB

Contents

module Accession
  RSpec.describe Principal do
    let(:correct_perm) { 'a:*' }
    let(:other_perm) { 'b:*' }

    matcher(:permit) { match { |a| a.permits?('a:b:c') } }
    RSpec::Matchers.define_negated_matcher :deny, :permit

    subject do
      klass = Class.new do
        include Principal
        attr_reader :permissions
        def initialize(permissions)
          @permissions = permissions
        end
      end

      klass.new(permissions)
    end

    context 'single permit' do
      let(:permissions) { [correct_perm] }
      it { is_expected.to permit }
    end

    context 'multiple permit' do
      let(:permissions) { [correct_perm, correct_perm] }
      it { is_expected.to permit }
    end

    context 'single deny' do
      let(:permissions) { [other_perm] }
      it { is_expected.to deny }
    end

    context 'multiple deny' do
      let(:permissions) { [other_perm, other_perm] }
      it { is_expected.to deny }
    end

    context 'deny then permit' do
      let(:permissions) { [other_perm, correct_perm] }
      it { is_expected.to permit }
    end

    context 'permit then deny' do
      let(:permissions) { [correct_perm, other_perm] }
      it { is_expected.to permit }
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
accession-1.0.0 spec/lib/accession/principal_spec.rb
accession-0.0.2 spec/lib/accession/principal_spec.rb