require "test_helper" module Users class StatusesControllerTest < ActionDispatch::IntegrationTest ## # test all routes which lead to this controller def test_routes assert_routing( { :path => "/user/username/status", :method => :put }, { :controller => "users/statuses", :action => "update", :user_display_name => "username" } ) end def test_update user = create(:user) # Try without logging in put user_status_path(user, :event => "confirm") assert_response :forbidden # Now try as a normal user session_for(user) put user_status_path(user, :event => "confirm") assert_redirected_to :controller => "/errors", :action => :forbidden # Finally try as an administrator session_for(create(:administrator_user)) put user_status_path(user, :event => "confirm") assert_redirected_to user_path(user) assert_equal "confirmed", User.find(user.id).status end def test_destroy user = create(:user, :home_lat => 12.1, :home_lon => 12.1, :description => "test") # Try without logging in put user_status_path(user, :event => "soft_destroy") assert_response :forbidden # Now try as a normal user session_for(user) put user_status_path(user, :event => "soft_destroy") assert_redirected_to :controller => "/errors", :action => :forbidden # Finally try as an administrator session_for(create(:administrator_user)) put user_status_path(user, :event => "soft_destroy") assert_redirected_to user_path(user) # Check that the user was deleted properly user.reload assert_equal "user_#{user.id}", user.display_name assert_equal "", user.description assert_nil user.home_lat assert_nil user.home_lon assert_not user.avatar.attached? assert_not user.email_valid assert_nil user.new_email assert_nil user.auth_provider assert_nil user.auth_uid assert_equal "deleted", user.status end end end