diff --git a/Gemfile b/Gemfile --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,7 @@ gem 'mysql2' #for testing gem 'sqlite3' +gem 'rails-controller-testing' #for dumping database into yaml gem 'yaml_db' diff --git a/Gemfile.lock b/Gemfile.lock --- a/Gemfile.lock +++ b/Gemfile.lock @@ -159,6 +159,10 @@ bundler (>= 1.3.0) railties (= 5.0.7.2) sprockets-rails (>= 2.0.0) + rails-controller-testing (1.0.4) + actionpack (>= 5.0.1.x) + actionview (>= 5.0.1.x) + activesupport (>= 5.0.1.x) rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) @@ -258,6 +262,7 @@ momentjs-rails mysql2 rails (~> 5.0) + rails-controller-testing rails_bootstrap_sortable rdiscount rouge diff --git a/app/controllers/announcements_controller.rb b/app/controllers/announcements_controller.rb --- a/app/controllers/announcements_controller.rb +++ b/app/controllers/announcements_controller.rb @@ -1,6 +1,6 @@ class AnnouncementsController < ApplicationController - before_filter :admin_authorization + before_action :admin_authorization in_place_edit_for :announcement, :published diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,7 +1,7 @@ class ApplicationController < ActionController::Base protect_from_forgery - before_filter :current_user + before_action :current_user SINGLE_USER_MODE_CONF_KEY = 'system.single_user_mode' MULTIPLE_IP_LOGIN_CONF_KEY = 'right.multiple_ip_login' diff --git a/app/controllers/configurations_controller.rb b/app/controllers/configurations_controller.rb --- a/app/controllers/configurations_controller.rb +++ b/app/controllers/configurations_controller.rb @@ -1,7 +1,7 @@ class ConfigurationsController < ApplicationController - before_filter :authenticate - before_filter { |controller| controller.authorization_by_roles(['admin'])} + before_action :authenticate + before_action { |controller| controller.authorization_by_roles(['admin'])} def index diff --git a/app/controllers/contest_management_controller.rb b/app/controllers/contest_management_controller.rb --- a/app/controllers/contest_management_controller.rb +++ b/app/controllers/contest_management_controller.rb @@ -1,6 +1,6 @@ class ContestManagementController < ApplicationController - before_filter :admin_authorization + before_action :admin_authorization def index @num_contests = Contest.count() diff --git a/app/controllers/contests_controller.rb b/app/controllers/contests_controller.rb --- a/app/controllers/contests_controller.rb +++ b/app/controllers/contests_controller.rb @@ -1,6 +1,6 @@ class ContestsController < ApplicationController - before_filter :admin_authorization + before_action :admin_authorization in_place_edit_for :contest, :title in_place_edit_for :contest, :enabled diff --git a/app/controllers/graders_controller.rb b/app/controllers/graders_controller.rb --- a/app/controllers/graders_controller.rb +++ b/app/controllers/graders_controller.rb @@ -1,6 +1,6 @@ class GradersController < ApplicationController - before_filter :admin_authorization + before_action :admin_authorization verify :method => :post, :only => ['clear_all', 'start_exam', diff --git a/app/controllers/heartbeat_controller.rb b/app/controllers/heartbeat_controller.rb --- a/app/controllers/heartbeat_controller.rb +++ b/app/controllers/heartbeat_controller.rb @@ -1,5 +1,5 @@ class HeartbeatController < ApplicationController - before_filter :admin_authorization, :only => ['index'] + before_action :admin_authorization, :only => ['index'] def edit #@user = User.find_by_login(params[:id]) diff --git a/app/controllers/main_controller.rb b/app/controllers/main_controller.rb --- a/app/controllers/main_controller.rb +++ b/app/controllers/main_controller.rb @@ -1,19 +1,19 @@ class MainController < ApplicationController - before_filter :authenticate, :except => [:index, :login] - before_filter :check_viewability, :except => [:index, :login] + before_action :authenticate, :except => [:index, :login] + before_action :check_viewability, :except => [:index, :login] - append_before_filter :confirm_and_update_start_time, + append_before_action :confirm_and_update_start_time, :except => [:index, :login, :confirm_contest_start] # to prevent log in box to be shown when user logged out of the # system only in some tab - prepend_before_filter :reject_announcement_refresh_when_logged_out, + prepend_before_action :reject_announcement_refresh_when_logged_out, :only => [:announcements] - before_filter :authenticate_by_ip_address, :only => [:list] + before_action :authenticate_by_ip_address, :only => [:list] # COMMENTED OUT: filter in each action instead # before_filter :verify_time_limit, :only => [:submit] diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -1,6 +1,6 @@ class MessagesController < ApplicationController - before_filter :authenticate + before_action :authenticate verify :method => :post, :only => ['create'], :redirect_to => { :action => 'list' } diff --git a/app/controllers/report_controller.rb b/app/controllers/report_controller.rb --- a/app/controllers/report_controller.rb +++ b/app/controllers/report_controller.rb @@ -2,11 +2,11 @@ class ReportController < ApplicationController - before_filter :authenticate + before_action :authenticate - before_filter :admin_authorization, only: [:login_stat,:submission_stat, :stuck, :cheat_report, :cheat_scruntinize, :show_max_score, :current_score] + before_action :admin_authorization, only: [:login_stat,:submission_stat, :stuck, :cheat_report, :cheat_scruntinize, :show_max_score, :current_score] - before_filter(only: [:problem_hof]) { |c| + before_action(only: [:problem_hof]) { |c| return false unless authenticate admin_authorization unless GraderConfiguration["right.user_view_submission"] diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb --- a/app/controllers/site_controller.rb +++ b/app/controllers/site_controller.rb @@ -1,6 +1,6 @@ class SiteController < ApplicationController - before_filter :site_admin_authorization, :except => 'login' + before_action :site_admin_authorization, :except => 'login' def login # Site administrator login diff --git a/app/controllers/sites_controller.rb b/app/controllers/sites_controller.rb --- a/app/controllers/sites_controller.rb +++ b/app/controllers/sites_controller.rb @@ -1,6 +1,6 @@ class SitesController < ApplicationController - before_filter :admin_authorization + before_action :admin_authorization # GET /sites # GET /sites.xml diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -1,6 +1,6 @@ class TasksController < ApplicationController - before_filter :authenticate, :check_viewability + before_action :authenticate, :check_viewability def index redirect_to :action => 'list' diff --git a/app/controllers/test_controller.rb b/app/controllers/test_controller.rb --- a/app/controllers/test_controller.rb +++ b/app/controllers/test_controller.rb @@ -1,6 +1,6 @@ class TestController < ApplicationController - before_filter :authenticate, :check_viewability + before_action :authenticate, :check_viewability # # COMMENT OUT: filter in each action instead diff --git a/app/controllers/user_admin_controller.rb b/app/controllers/user_admin_controller.rb --- a/app/controllers/user_admin_controller.rb +++ b/app/controllers/user_admin_controller.rb @@ -4,7 +4,7 @@ include MailHelperMethods - before_filter :admin_authorization + before_action :admin_authorization # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html) verify :method => :post, :only => [ diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -4,19 +4,19 @@ include MailHelperMethods - before_filter :authenticate, :except => [:new, + before_action :authenticate, :except => [:new, :register, :confirm, :forget, :retrieve_password] - before_filter :verify_online_registration, :only => [:new, + before_action :verify_online_registration, :only => [:new, :register, :forget, :retrieve_password] - before_filter :authenticate, :profile_authorization, only: [:profile] + before_action :authenticate, :profile_authorization, only: [:profile] - before_filter :admin_authorization, only: [:stat, :toggle_activate, :toggle_enable] + before_action :admin_authorization, only: [:stat, :toggle_activate, :toggle_enable] verify :method => :post, :only => [:chg_passwd], diff --git a/config/routes.rb b/config/routes.rb --- a/config/routes.rb +++ b/config/routes.rb @@ -5,7 +5,8 @@ root :to => 'main#login' #logins - get 'login/login', to: 'login#login' + match 'login/login', to: 'login#login', via: [:get,:post] + resources :contests diff --git a/test/integration/login_test.rb b/test/integration/login_test.rb --- a/test/integration/login_test.rb +++ b/test/integration/login_test.rb @@ -8,14 +8,14 @@ test "login with invalid information" do get root_path assert_response :success - post login_login_path, login: "root", password: "hahaha" + post login_login_path, params: {login: "root", password: "hahaha"} assert_redirected_to root_path end test "normal user login" do get root_path assert_response :success - post login_login_path, {login: "john", password: "hello" } + post login_login_path, params: {login: "john", password: "hello" } assert_redirected_to main_list_path end @@ -24,7 +24,7 @@ GraderConfiguration.reload get root_path assert_response :success - post login_login_path, {login: "john", password: "hello" } + post login_login_path, params: {login: "john", password: "hello" } follow_redirect! assert_redirected_to root_path end @@ -34,7 +34,7 @@ GraderConfiguration.reload get root_path assert_response :success - post login_login_path, {login: "admin", password: "admin" } + post login_login_path, params: {login: "admin", password: "admin" } assert_redirected_to main_list_path end end