Sha256: 22f128f8708606eefd06a7ca7fb6f124f7cfcabbcbb149b9f1f3868deef5578c

Contents?: true

Size: 1.37 KB

Versions: 4

Compression:

Stored size: 1.37 KB

Contents

require_relative '../spec_helper'


class ExportedLimitsTest < Lanes::TestCase

    class LimitsTestingModel

        include Lanes::Concerns::ExportScope
        include Lanes::Concerns::ExportMethods

        def self.scope(name, query)# act like ActiveRecord model
        end

        def secret_method( name, query )
        end

        def test_method( name, query )
        end

        export_methods :test_method, limit: lambda{ | user, type, name |
            user == 'anon'
        }

        export_scope :admin_data, lambda{ | param |
            param
        }, limit: :only_admins

        export_methods :secret_method, limit: :only_admins


        def self.only_admins( user, type, name )
            return user == 'admin'
        end

    end

    def test_limits
        assert LimitsTestingModel.has_exported_method?( 'test_method', 'anon' ), "anyone can retrieve no_limit data"

        assert LimitsTestingModel.has_exported_scope?( 'admin_data', 'admin' ), "Admins can retrieve admin data"
        refute LimitsTestingModel.has_exported_scope?( 'admin_data', 'non-admin' ), "Non-Admin cannot retrieve admin data"

        assert LimitsTestingModel.has_exported_method?( 'secret_method', 'admin' ), "Public can retrieve public data"
        refute LimitsTestingModel.has_exported_method?( 'secret_method', 'unk' ), "User must be admin to retrieve public data"
    end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
lanes-0.0.5 spec/concerns/exported_limits_spec.rb
lanes-0.0.3 spec/concerns/exported_limits_spec.rb
lanes-0.0.2 spec/concerns/exported_limits_spec.rb
lanes-0.0.1 spec/concerns/exported_limits_spec.rb