Sha256: 14a42dc87c5f2db245de08ac7cd5aa1f3297274a721b33021349cb12d84c954a

Contents?: true

Size: 1.31 KB

Versions: 30

Compression:

Stored size: 1.31 KB

Contents

require 'spec_helper'

describe ActiveFedora::Attributes, ".new" do
  before(:all) do
    class ProtectedParams < ActiveSupport::HashWithIndifferentAccess
      attr_accessor :permitted
      alias permitted? permitted

      def initialize(attributes)
        super(attributes)
        @permitted = false
      end

      def permit!
        @permitted = true
        self
      end

      def dup
        super.tap do |duplicate|
          duplicate.instance_variable_set :@permitted, @permitted
        end
      end
    end

    class Person < ActiveFedora::Base
      property :first_name, predicate: ::RDF::FOAF.firstName, multiple: false
      property :gender, predicate: ::RDF::FOAF.gender, multiple: false
    end
  end

  after(:all) do
    Object.send(:remove_const, :ProtectedParams)
    Object.send(:remove_const, :Person)
  end

  context "forbidden attributes" do
    let(:params) { ProtectedParams.new(first_name: 'Guille', gender: 'm') }
    it "cannot be used for mass assignment" do
      expect { Person.new(params) }.to raise_error ActiveModel::ForbiddenAttributesError
    end
  end

  context "permitted attributes" do
    let(:params) { ProtectedParams.new(first_name: 'Guille', gender: 'm').permit! }
    it "can be used for mass assignment" do
      expect { Person.new(params) }.not_to raise_error
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
active-fedora-9.10.1 spec/unit/forbidden_attributes_protection_spec.rb
active-fedora-9.10.0 spec/unit/forbidden_attributes_protection_spec.rb
active-fedora-9.10.0.pre2 spec/unit/forbidden_attributes_protection_spec.rb
active-fedora-9.10.0.pre1 spec/unit/forbidden_attributes_protection_spec.rb
active-fedora-9.9.1 spec/unit/forbidden_attributes_protection_spec.rb
active-fedora-9.9.0 spec/unit/forbidden_attributes_protection_spec.rb
active-fedora-9.8.2 spec/unit/forbidden_attributes_protection_spec.rb
active-fedora-9.8.1 spec/unit/forbidden_attributes_protection_spec.rb
active-fedora-9.8.0 spec/unit/forbidden_attributes_protection_spec.rb
active-fedora-9.7.1 spec/unit/forbidden_attributes_protection_spec.rb