require 'spec_helper' describe "Authorization" do with_models describe "Roles" do it "user should have it's name in roles" do user = Factory.build :user, name: 'some_name' user.roles.should include('user:some_name') end it ":anonymous, :registered, :user roles" do anonymous = Factory.build :anonymous anonymous.roles.should == %w{anonymous user user:anonymous} user = Factory.build :user, name: 'john' user.roles.should == %w{registered user user:john} admin = Factory.build :admin, name: 'john' admin.roles.should == %w{admin manager member registered user user:john} end it "all managers should also have the member role, always" do user = Factory.build :manager, name: 'john' user.roles.should == %w{manager member registered user user:john} end it "handy methods" do u = Factory.build :anonymous u.roles.anonymous?.should be_true u.roles.registered?.should be_false u.roles.has?(:anonymous).should be_true u.should have_role(:anonymous) end it "add_role" do u = Factory.build :member, name: 'john' u.should_not have_role('manager') u.add_role :manager u.save! u.reload u.should have_role('manager') end it "remove_role" do u = Factory.build :manager, name: 'john' u.remove_role :member u.save! u.reload u.should_not have_role('manager') u.should_not have_role('member') end it "should add also all lover roles" do u = Factory.build :user, name: 'john' u.roles.should_not include('member') u.add_role :manager u.roles.should include('member') end it "special case, admin role" do u = Factory.build :user, name: 'john' u.should_not have_role('manager') u.add_role :admin u.save! u.reload u.should have_role('admin') u.should have_role('manager') end it "major_roles" do u = Factory.build :member, name: 'john' u.add_role :director u.major_roles.should == %w{director member user:john} end end end