Skip to content

Instantly share code, notes, and snippets.

@dennyabraham
Forked from steveklabnik/privacy_filter.rb
Created December 12, 2011 04:13
Show Gist options
  • Select an option

  • Save dennyabraham/1464804 to your computer and use it in GitHub Desktop.

Select an option

Save dennyabraham/1464804 to your computer and use it in GitHub Desktop.

Revisions

  1. dennyabraham revised this gist Dec 12, 2011. 1 changed file with 10 additions and 11 deletions.
    21 changes: 10 additions & 11 deletions privacy_filter_spec.rb
    Original file line number Diff line number Diff line change
    @@ -2,24 +2,23 @@

    describe PrivacyFilter do

    before do
    PrivacyFilter.stub!(:first_article? => false,
    :administrator? => false,
    :user? => false)
    end
    let (:controller) { mock("controller", :authenticate_administrator! => nil, :authenticate_user! => nil, :params => {}) }

    it "allows access to the root article" do
    PrivacyFilter.unstub!(:first_article?)
    PrivacyFilter.filter(stub(:params => {:id => 1})).should be_true
    controller.stub!(:params => {:id => 1})

    PrivacyFilter.filter(controller).should be_true
    end

    it "allows access for administrators" do
    PrivacyFilter.unstub!(:administrator?)
    PrivacyFilter.filter(stub(:authenticate_administrator! => true)).should be_true
    controller.stub!(:authenticate_administrator! => true)

    PrivacyFilter.filter(controller).should be_true
    end

    it "allows access to users" do
    PrivacyFilter.unstub!(:user?)
    PrivacyFilter.filter(stub(:authenticate_user! => true)).should be_true
    controller.stub!(:authenticate_user! => true)

    PrivacyFilter.filter(controller).should be_true
    end
    end
  2. @steveklabnik steveklabnik created this gist Dec 12, 2011.
    21 changes: 21 additions & 0 deletions privacy_filter.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@
    class PrivacyFilter
    class << self
    def filter(controller)
    @controller = controller

    first_article? or administrator? or user?
    end

    def first_article?
    @controller.params[:id] == 1
    end

    def administrator?
    @controller.authenticate_administrator!
    end

    def user?
    @controller.authenticate_user!
    end
    end
    end
    25 changes: 25 additions & 0 deletions privacy_filter_spec.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,25 @@
    require "app/models/privacy_filter"

    describe PrivacyFilter do

    before do
    PrivacyFilter.stub!(:first_article? => false,
    :administrator? => false,
    :user? => false)
    end

    it "allows access to the root article" do
    PrivacyFilter.unstub!(:first_article?)
    PrivacyFilter.filter(stub(:params => {:id => 1})).should be_true
    end

    it "allows access for administrators" do
    PrivacyFilter.unstub!(:administrator?)
    PrivacyFilter.filter(stub(:authenticate_administrator! => true)).should be_true
    end

    it "allows access to users" do
    PrivacyFilter.unstub!(:user?)
    PrivacyFilter.filter(stub(:authenticate_user! => true)).should be_true
    end
    end