1 # frozen_string_literal: true
 
   6   class StatusesControllerTest < ActionDispatch::IntegrationTest
 
   8     # test all routes which lead to this controller
 
  11         { :path => "/user/username/status", :method => :put },
 
  12         { :controller => "users/statuses", :action => "update", :user_display_name => "username" }
 
  19       # Try without logging in
 
  20       put user_status_path(user, :event => "confirm")
 
  21       assert_response :forbidden
 
  23       # Now try as a normal user
 
  25       put user_status_path(user, :event => "confirm")
 
  26       assert_redirected_to :controller => "/errors", :action => :forbidden
 
  28       # Finally try as an administrator
 
  29       session_for(create(:administrator_user))
 
  30       put user_status_path(user, :event => "confirm")
 
  31       assert_redirected_to user_path(user)
 
  32       assert_equal "confirmed", User.find(user.id).status
 
  36       user = create(:user, :home_lat => 12.1, :home_lon => 12.1, :description => "test")
 
  38       # Try without logging in
 
  39       put user_status_path(user, :event => "soft_destroy")
 
  40       assert_response :forbidden
 
  42       # Now try as a normal user
 
  44       put user_status_path(user, :event => "soft_destroy")
 
  45       assert_redirected_to :controller => "/errors", :action => :forbidden
 
  47       # Finally try as an administrator
 
  48       session_for(create(:administrator_user))
 
  49       put user_status_path(user, :event => "soft_destroy")
 
  50       assert_redirected_to user_path(user)
 
  52       # Check that the user was deleted properly
 
  54       assert_equal "user_#{user.id}", user.display_name
 
  55       assert_equal "", user.description
 
  56       assert_nil user.home_lat
 
  57       assert_nil user.home_lon
 
  58       assert_not user.avatar.attached?
 
  59       assert_not user.email_valid
 
  60       assert_nil user.new_email
 
  61       assert_nil user.auth_provider
 
  62       assert_nil user.auth_uid
 
  63       assert_equal "deleted", user.status