users_controller_test.rb 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. require 'test_helper'
  2. class UsersControllerTest < ActionDispatch::IntegrationTest
  3. def setup
  4. @user = users(:daniel)
  5. @other_user = users(:ben)
  6. @student_user = users(:billy)
  7. end
  8. test "should display age correctly" do
  9. log_in_as @user
  10. get user_path @user
  11. assert_select ".user-age", /[A-z]+\: [0-9]+/
  12. end
  13. test "should show user" do
  14. log_in_as @user
  15. get user_url(@user)
  16. assert_response :success
  17. end
  18. test "should get edit" do
  19. log_in_as(@user)
  20. get edit_user_url(@user)
  21. assert_response :success
  22. end
  23. test "should update user" do
  24. log_in_as(@user)
  25. patch user_url(@user), params: { user: { email: @user.email, login: @user.login } }
  26. assert_redirected_to user_url(@user)
  27. end
  28. test "should redirect edit when not logged in" do
  29. get edit_user_path(@user)
  30. assert_not flash.empty?
  31. assert_redirected_to login_url
  32. end
  33. test "should redirect update when not logged in" do
  34. patch user_path(@user), params: { user: { name: @user.name,
  35. email: @user.email } }
  36. assert_not flash.empty?
  37. assert_redirected_to login_url
  38. end
  39. test "should not allow the name attribute to be edited by non-admin" do
  40. log_in_as(@user)
  41. assert_not_equal @user.name, "Wrong Name"
  42. patch user_path(@user), params: {
  43. user: { password: 'newpass',
  44. password_confirmation: 'newpass',
  45. name: "Wrong Name" } }
  46. assert_not_equal @user.reload.name, "Wrong Name"
  47. end
  48. test "should redirect edit when unauthorized" do
  49. log_in_as(@other_user)
  50. get edit_user_path(@user)
  51. assert flash.empty?
  52. assert_redirected_to root_url
  53. end
  54. test "should redirect update when unauthorized" do
  55. log_in_as(@other_user)
  56. patch user_path(@user), params: { user: { name: @user.name,
  57. email: @user.email } }
  58. assert flash.empty?
  59. assert_redirected_to root_url
  60. end
  61. test "should update name attribute when logged in as admin" do
  62. log_in_as(@user)
  63. patch user_url(@student_user), params: { user: { name: "New Name" } }
  64. assert_equal @student_user.reload.name, "New Name"
  65. assert_redirected_to user_url(@student_user)
  66. end
  67. end