|  |  | require File.expand_path('../../test_helper', __FILE__)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | class CoursesControllerTest < ActionController::TestCase
 | 
						
						
						
							|  |  | 	fixtures :courses, 
 | 
						
						
						
							|  |  |             :course_infos,
 | 
						
						
						
							|  |  |             :course_statuses,
 | 
						
						
						
							|  |  |             :users, 
 | 
						
						
						
							|  |  |             :user_extensions, 
 | 
						
						
						
							|  |  |             :bids,
 | 
						
						
						
							|  |  |             :homework_for_courses,
 | 
						
						
						
							|  |  |             :journals_for_messages,
 | 
						
						
						
							|  |  |             :schools,
 | 
						
						
						
							|  |  |             :roles, 
 | 
						
						
						
							|  |  |             :members, 
 | 
						
						
						
							|  |  |             :member_roles, 
 | 
						
						
						
							|  |  |             :enabled_modules, 
 | 
						
						
						
							|  |  |             :boards, 
 | 
						
						
						
							|  |  |             :messages
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def setup
 | 
						
						
						
							|  |  |     @request.session[:user_id] = nil
 | 
						
						
						
							|  |  |     @request.session[:ctime] = Time.now.to_i
 | 
						
						
						
							|  |  |     @request.session[:atime] = Time.now.to_i
 | 
						
						
						
							|  |  |     Setting.default_language = 'en'
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # Get :index
 | 
						
						
						
							|  |  |   def test_index_by_anonymous_should_not_show_private_projects
 | 
						
						
						
							|  |  |     get :index
 | 
						
						
						
							|  |  |     assert_response :success
 | 
						
						
						
							|  |  |     assert_template 'index'
 | 
						
						
						
							|  |  |     courses = assigns(:courses)
 | 
						
						
						
							|  |  |     assert_not_nil courses
 | 
						
						
						
							|  |  |     assert courses.all?(&:is_public?)
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # Get :new
 | 
						
						
						
							|  |  | 	# 人员添加课程的权限是不属于任何角色
 | 
						
						
						
							|  |  | 	def test_new_course_anyone_temporary
 | 
						
						
						
							|  |  |     @request.session[:user_id] = 20
 | 
						
						
						
							|  |  | 		Role.find_by_name("Non member").add_permission! :add_course #Non member
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 		get :new
 | 
						
						
						
							|  |  | 		assert_response :success
 | 
						
						
						
							|  |  | 		assert_template :new
 | 
						
						
						
							|  |  | 	end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # post :create
 | 
						
						
						
							|  |  | 	def test_create_course_with_access_control
 | 
						
						
						
							|  |  | 		@request.session[:user_id] = 20
 | 
						
						
						
							|  |  | 		Role.find_by_name("Non member").add_permission! :add_course #Non member
 | 
						
						
						
							|  |  |     course_name = 'course_one'
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 		post :create,
 | 
						
						
						
							|  |  | 			:class_period => '32',
 | 
						
						
						
							|  |  | 			:time => '2014',
 | 
						
						
						
							|  |  | 			:term => 'spring',
 | 
						
						
						
							|  |  | 			:course => {
 | 
						
						
						
							|  |  | 				:name => course_name, # names can't contain space.
 | 
						
						
						
							|  |  | 				:password => '1234',
 | 
						
						
						
							|  |  | 				:description => 'description',
 | 
						
						
						
							|  |  | 				:is_public => '1',
 | 
						
						
						
							|  |  | 				:course_type => '1'
 | 
						
						
						
							|  |  | 			}
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 		assert_response :found
 | 
						
						
						
							|  |  | 		course = Course.find_by_name(course_name)
 | 
						
						
						
							|  |  |     red_url = "courses/#{course.id}/settings"
 | 
						
						
						
							|  |  |     assert_match %r(#{red_url}), @response.redirect_url
 | 
						
						
						
							|  |  |     # 创建成功跳转settings方法会带参数一枚,故一下方法失败
 | 
						
						
						
							|  |  | 		# assert_redirected_to "courses/#{course.id}/settings"
 | 
						
						
						
							|  |  | 	end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # post :create 403
 | 
						
						
						
							|  |  |   def test_create_course_without_access_control
 | 
						
						
						
							|  |  |     @request.session[:user_id] = 20
 | 
						
						
						
							|  |  |     #Role.find_by_name("Non member").add_permission! :add_course #Non member
 | 
						
						
						
							|  |  |     course_name = 'course_one'
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     post :create,
 | 
						
						
						
							|  |  |       :class_period => '32',
 | 
						
						
						
							|  |  |       :time => '2014',
 | 
						
						
						
							|  |  |       :term => 'spring',
 | 
						
						
						
							|  |  |       :course => {
 | 
						
						
						
							|  |  |         :name => course_name, # names can't contain space.
 | 
						
						
						
							|  |  |         :password => '1234',
 | 
						
						
						
							|  |  |         :description => 'description',
 | 
						
						
						
							|  |  |         :is_public => '1',
 | 
						
						
						
							|  |  |         :course_type => '1'
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     assert_response :forbidden
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  |   test ':homework get by non-member is access' do
 | 
						
						
						
							|  |  |     get :homework, {id: 1}
 | 
						
						
						
							|  |  |     assert_response :success
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   test ':feedback Get by non-member is access' do
 | 
						
						
						
							|  |  |     get :feedback, {id: 1}
 | 
						
						
						
							|  |  |     assert_response :success
 | 
						
						
						
							|  |  |     # 检测留言是否在其中以及不报错
 | 
						
						
						
							|  |  |     jfms = JournalsForMessage.where(jour_type: 'Course', jour_id: 1, m_parent_id: nil).reorder('id DESC')
 | 
						
						
						
							|  |  |     jfms.take(5).each do |j|
 | 
						
						
						
							|  |  |       assert_select "li#word_li_#{j.id}"
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   test ':homework get by non-member' do
 | 
						
						
						
							|  |  |     get :homework, {id: 1}
 | 
						
						
						
							|  |  |     assert_response :success
 | 
						
						
						
							|  |  |     course = Course.find(1)
 | 
						
						
						
							|  |  |     assert course.homeworks.any?
 | 
						
						
						
							|  |  |     course.homeworks.each do |homework|
 | 
						
						
						
							|  |  |       assert_select '.bid_path', homework.name
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   test ':new_homework by no user should not new_homework course_001' do
 | 
						
						
						
							|  |  |     get :new_homework, {id: 1}
 | 
						
						
						
							|  |  |     assert_response 403
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  |   test ':new_homework by loged & allowed user should get new_homework course_001' do
 | 
						
						
						
							|  |  |     user_id = 25
 | 
						
						
						
							|  |  |     member = Member.create(user_id: user_id, project_id: -1, course_id: 1, roles: [Role.last])
 | 
						
						
						
							|  |  |     MemberRole.create(member_id: member.id, role_id: 3)
 | 
						
						
						
							|  |  |     @request.session[:user_id] = user_id
 | 
						
						
						
							|  |  |     get :new_homework, {id: 1}
 | 
						
						
						
							|  |  |     assert_response :success
 | 
						
						
						
							|  |  |     assert_template 'new_homework'
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   test ':member by ano' do
 | 
						
						
						
							|  |  |     get :member, {id: 1}
 | 
						
						
						
							|  |  |     assert_response :success
 | 
						
						
						
							|  |  |     assert_template 'member'
 | 
						
						
						
							|  |  |     assert assigns(:members).any?
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | #  test "#index by non-admin user with view_time_entries permission should show overall spent time link" do
 | 
						
						
						
							|  |  | #    @request.session[:user_id] = 3
 | 
						
						
						
							|  |  | #    get :index
 | 
						
						
						
							|  |  | #    assert_template 'index'
 | 
						
						
						
							|  |  | #    assert_select 'a[href=?]', '/time_entries'
 | 
						
						
						
							|  |  | #  end
 | 
						
						
						
							|  |  | #
 | 
						
						
						
							|  |  | #  test "#index by non-admin user without view_time_entries permission should not show overall spent time link" do
 | 
						
						
						
							|  |  | #    Role.find(2).remove_permission! :view_time_entries
 | 
						
						
						
							|  |  | #    Role.non_member.remove_permission! :view_time_entries
 | 
						
						
						
							|  |  | #    Role.anonymous.remove_permission! :view_time_entries
 | 
						
						
						
							|  |  | #    @request.session[:user_id] = 3
 | 
						
						
						
							|  |  | #
 | 
						
						
						
							|  |  | #    get :index
 | 
						
						
						
							|  |  | #    assert_template 'index'
 | 
						
						
						
							|  |  | #    assert_select 'a[href=?]', '/time_entries', 0
 | 
						
						
						
							|  |  | #  end
 | 
						
						
						
							|  |  | end
 | 
						
						
						
							|  |  | 
 |