218 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			218 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
require 'spec_helper'
 | 
						|
require 'ruby-debug'
 | 
						|
 | 
						|
 | 
						|
describe AppAuth do 
 | 
						|
  
 | 
						|
  before  do
 | 
						|
    User.all.destroy
 | 
						|
    Role.all.destroy
 | 
						|
    SubRole.all.destroy
 | 
						|
    AppAuth.all.destroy
 | 
						|
    ModuleApp.all.destroy
 | 
						|
    
 | 
						|
    #Create some fixtures of Main Role
 | 
						|
    main_role_key = ["Stud","Teacher","Staff"]
 | 
						|
    @new_main_role_list = main_role_key.each do |role|
 | 
						|
      new_role = Role.new :key => role
 | 
						|
      new_role.save
 | 
						|
    end
 | 
						|
    #Create Some SubRoles
 | 
						|
    sub_role_key = ["graduated_school","undergraduated_school","TA","Senior"]
 | 
						|
    @new_main_role_list = sub_role_key.each do |role|
 | 
						|
      new_role = SubRole.new :key => role
 | 
						|
      new_role.save
 | 
						|
    end
 | 
						|
    
 | 
						|
    #Create some users of User
 | 
						|
    user_emails = ["a_good_ug_stud_1","a_good_ug_stud_2","a_bad_ug_stud","a_good_g_stud","a_bad_g_stud","a_teacher","a_staff"]
 | 
						|
    user_emails.each do |user_email|
 | 
						|
      email=user_email+"@rulingcom.com"
 | 
						|
      new_user = User.new :email=> email
 | 
						|
      new_user.save
 | 
						|
    end
 | 
						|
    #MRK = Member Role Key    SRK=Sub Role Key
 | 
						|
    @stud_MRK = Role.first(conditions:{key:"Stud"})
 | 
						|
    @teacher_MRK = Role.first(conditions:{key:"Teacher"})
 | 
						|
    @staff_MRK = Role.first(conditions:{key:"Staff"})
 | 
						|
    
 | 
						|
    @graduated_SRK = SubRole.first(conditions:{key:"graduated_school"})
 | 
						|
    @under_graduated_SRK = SubRole.first(conditions:{key:"undergraduated_school"})
 | 
						|
    @ta_SRK = SubRole.first(conditions:{key:"TA"})
 | 
						|
    @senior_SRK = SubRole.first(conditions:{key:"Senior"})
 | 
						|
    
 | 
						|
    @stud_MRK.sub_roles += [@graduated,@under_graduated,@ta]
 | 
						|
    @stud_MRK.save!
 | 
						|
    
 | 
						|
    @teacher_MRK.sub_roles = [@senior]
 | 
						|
    @teacher_MRK.save!
 | 
						|
    
 | 
						|
    @good_ug_stu_1 = User.first(conditions:{email:"a_good_ug_stud_1@rulingcom.com"})    
 | 
						|
    @good_ug_stu_2 = User.first(conditions:{email:"a_good_ug_stud_2@rulingcom.com"})
 | 
						|
    @bad_ug_stu = User.first(conditions:{email:"a_bad_ug_stud@rulingcom.com"})
 | 
						|
    
 | 
						|
    @good_g_stu = User.first(conditions:{email:"a_good_g_stud@rulingcom.com"})
 | 
						|
    @bad_g_stu = User.first(conditions:{email:"a_bad_g_stud@rulingcom.com"})
 | 
						|
    @teacher = User.first(conditions:{email:"a_teacher@rulingcom.com"})
 | 
						|
    @staff =  User.first(conditions:{email:"a_staff@rulingcom.com"})
 | 
						|
    
 | 
						|
    #setting Roles for users
 | 
						|
    @good_g_stu.role = @stud_MRK
 | 
						|
    @bad_g_stu.role = @stud_MRK
 | 
						|
    @good_ug_stu_1.role = @stud_MRK
 | 
						|
    @good_ug_stu_2.role = @stud_MRK
 | 
						|
    @bad_ug_stu.role = @stud_MRK
 | 
						|
    
 | 
						|
    @good_g_stu.sub_roles = [@graduated_SRK,@ta_SRK]
 | 
						|
    @bad_g_stu.sub_roles << @graduated_SRK
 | 
						|
    @good_ug_stu_1.sub_roles << @under_graduated_SRK
 | 
						|
    @good_ug_stu_2.sub_roles << @under_graduated_SRK
 | 
						|
    @bad_ug_stu.sub_roles << @under_graduated_SRK
 | 
						|
 | 
						|
    @teacher.role = @teacher_MRK
 | 
						|
    @staff.role = @staff_MRK
 | 
						|
 | 
						|
    @good_g_stu.save!
 | 
						|
    @bad_g_stu.save!
 | 
						|
    @good_ug_stu_1.save!
 | 
						|
    @good_ug_stu_2.save!
 | 
						|
    @bad_ug_stu.save!
 | 
						|
    
 | 
						|
    @teacher.save!
 | 
						|
    @staff.save!
 | 
						|
 | 
						|
  end
 | 
						|
  describe "Starting a ClassBulletin Auth for teacher , staff and ta" do
 | 
						|
    before do
 | 
						|
      @bulletin_app_auth = AppAuth.new()
 | 
						|
      #all teacher and staff has access right
 | 
						|
      @bulletin_app_auth.roles = [@teacher_MRK,@staff_MRK]
 | 
						|
      #all person with TA sub_role has access right
 | 
						|
      @bulletin_app_auth.sub_roles << @ta_SRK
 | 
						|
 | 
						|
      #a_bad_ug_stud add to block to bulletin_app_auth 
 | 
						|
      #@bulletin_app_auth.blocked_users << @bad_ug_stu
 | 
						|
 | 
						|
      #all teacher has access right
 | 
						|
      # @bulletin_app_auth.roles << @teacher_MRK
 | 
						|
 | 
						|
      # @bulletin_app_auth.privilege_users << @staff
 | 
						|
      @bulletin_app_auth.save!
 | 
						|
    end
 | 
						|
    context "Should just initialize all obj that is needed" do
 | 
						|
 | 
						|
      it "Testing @bulletin_app_auth init result" do
 | 
						|
        @bulletin_app_auth.roles.should have(2).item     #teacher staff
 | 
						|
        @bulletin_app_auth.sub_roles.should have(1).item  #ta
 | 
						|
      end
 | 
						|
 | 
						|
      it "@bulletin_app_auth should have Roles: Staff , Teacher " do
 | 
						|
        key_ary = @bulletin_app_auth.roles.collect do |role|
 | 
						|
          role.key
 | 
						|
        end
 | 
						|
        key_ary.sort.should == ["Staff","Teacher"].sort
 | 
						|
      end
 | 
						|
      
 | 
						|
      it "bulletin_app_auth should have 3 auth users" do
 | 
						|
        user_ary = [@teacher,@staff,@good_g_stu]
 | 
						|
       @bulletin_app_auth.auth_users.sort.should == user_ary.sort  
 | 
						|
       check_user_has_app user_ary
 | 
						|
      end
 | 
						|
      
 | 
						|
      it "Adding a undergraduate stud into app_auth by privilege list" do
 | 
						|
        user_ary = [@teacher,@staff,@good_g_stu,@good_ug_stu_1]
 | 
						|
       @bulletin_app_auth.add_user_to_privilege_list  @good_ug_stu_1
 | 
						|
       @bulletin_app_auth.auth_users.sort.should == user_ary.sort  
 | 
						|
       check_user_has_app user_ary       
 | 
						|
      end
 | 
						|
      
 | 
						|
      it "Adding all graudated-stud into app_auth" do
 | 
						|
       user_ary = [@teacher,@staff,@good_g_stu,@bad_g_stu]
 | 
						|
       @bulletin_app_auth.add_sub_role  @graduated_SRK
 | 
						|
       @bulletin_app_auth.auth_users.sort.should == user_ary.sort  
 | 
						|
       check_user_has_app user_ary
 | 
						|
      end
 | 
						|
      
 | 
						|
      it "Blocking bad-graduate student" do
 | 
						|
        user_ary =[@teacher,@staff,@good_g_stu]
 | 
						|
       @bulletin_app_auth.add_sub_role  @graduated_SRK
 | 
						|
       @bulletin_app_auth.add_user_to_black_list @bad_g_stu
 | 
						|
       @bulletin_app_auth.auth_users_after_block_list.sort.should == user_ary.sort  
 | 
						|
       check_user_has_app user_ary
 | 
						|
      end
 | 
						|
      
 | 
						|
      it "Removing all graudated-stud from app_auth" do
 | 
						|
        user_ary =[@teacher,@staff,@good_g_stu]
 | 
						|
        @bulletin_app_auth.add_sub_role  @graduated_SRK
 | 
						|
        @bulletin_app_auth.remove_sub_role  @graduated_SRK
 | 
						|
       @bulletin_app_auth.auth_users.sort.should == user_ary.sort  
 | 
						|
       check_user_has_app user_ary
 | 
						|
      end
 | 
						|
      
 | 
						|
 | 
						|
      # it "@bulletin_app_auth should have one Privialage user which is belongs to Staff" do
 | 
						|
      #   p_user_ary = @bulletin_app_auth.privilege_users.collect do |p_user|
 | 
						|
      #     p_user.roles.key
 | 
						|
      #   end
 | 
						|
      #   p_user_ary.should include("Staff")
 | 
						|
      # end
 | 
						|
      
 | 
						|
      # it "@bulletin_app_auth should have one student listed at blocklist" do
 | 
						|
      #   @bad_stu = User.first(conditions:{email:"a_bad_g_stud@rulingcom.com"})
 | 
						|
      #   @bulletin_app_auth.blocked_users.should have(1).item
 | 
						|
      #   @bulletin_app_auth.blocked_users.should include(@bad_stu)
 | 
						|
      # end
 | 
						|
          
 | 
						|
    #   it "[Development #1]-1.Authorizing roles: roles + blocklist" do
 | 
						|
    #     @good_stu = User.first(conditions:{email:"a_good_g_stud@rulingcom.com"})
 | 
						|
    #     @teacher = User.first(conditions:{email:"a_teacher@rulingcom.com"})
 | 
						|
    #     @staff =  User.first(conditions:{email:"a_staff@rulingcom.com"})
 | 
						|
    #     ary = [@good_stu,@teacher,@staff]
 | 
						|
    #     @bulletin_app_auth.auth_users_after_block_list.should == ary
 | 
						|
    #   end
 | 
						|
    #   
 | 
						|
    #   it "[Development #1]-2.Authorizing single users: list of users [new_user1~2]" do
 | 
						|
    #     user_emails = ["new_user1","new_user2","new_user3","new_user4"]
 | 
						|
    #     user_emails.each do |user_email|
 | 
						|
    #       email=user_email+"@rulingcom.com"
 | 
						|
    #       new_user = User.new :email=> email
 | 
						|
    #       new_user.save
 | 
						|
    #     end
 | 
						|
    #     user1= User.first(conditions:{email:"new_user1@rulingcom.com"})
 | 
						|
    #     user2= User.first(conditions:{email:"new_user2@rulingcom.com"})
 | 
						|
    #     user3= User.first(conditions:{email:"new_user3@rulingcom.com"})
 | 
						|
    #     user4= User.first(conditions:{email:"new_user4@rulingcom.com"})
 | 
						|
    #     
 | 
						|
    #     @bulletin_app_auth.privilege_users << user1
 | 
						|
    #     @bulletin_app_auth.privilege_users << user2
 | 
						|
    #     
 | 
						|
    #     @bulletin_app_auth.auth_users_after_block_list.should include(user1,user2)
 | 
						|
    #     @bulletin_app_auth.auth_users_after_block_list.should_not include(user3,user4)
 | 
						|
    #     
 | 
						|
    #   end
 | 
						|
    #   
 | 
						|
    #   it "[Development #1]-3.Authorizing roles and single users: roles + blocklist + list of users" do
 | 
						|
    #     @bulletin_app_auth.auth_users.should have(7).item 
 | 
						|
    #   end
 | 
						|
    #   
 | 
						|
    #   it "[Development #1]-4.Authorizing all: blocklist" do
 | 
						|
    #     @bad_stu = User.first(conditions:{email:"a_bad_g_stud@rulingcom.com"})
 | 
						|
    #     @new_bulletin_app_auth = (AppAuth.new :all => true)
 | 
						|
    #     @new_bulletin_app_auth.blocked_users << @bad_stu 
 | 
						|
    #     
 | 
						|
    #     @new_bulletin_app_auth.auth_users.should == User.all.entries
 | 
						|
    #     @new_bulletin_app_auth.auth_users_after_block_list.should_not include(@bad_stu)
 | 
						|
    #     @new_bulletin_app_auth.save!
 | 
						|
    #   end
 | 
						|
      def check_user_has_app(user_ary)
 | 
						|
        user_ary.each do |user|
 | 
						|
         user.avb_apps.should include(@bulletin_app_auth) 
 | 
						|
        end
 | 
						|
      end
 | 
						|
     end
 | 
						|
    
 | 
						|
    
 | 
						|
    
 | 
						|
  end
 | 
						|
 | 
						|
end |