API de comptabilité horaire.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

users_controller_test.rb 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. require "test_helper"
  2. class Api::V1::UsersControllerTest < ActionDispatch::IntegrationTest
  3. setup do
  4. @user = users(:one)
  5. end
  6. # INDEX
  7. test "should access user index" do
  8. get api_v1_users_url,
  9. headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
  10. as: :json
  11. assert_response :success
  12. end
  13. test "should forbid user index" do
  14. get api_v1_users_url, as: :json
  15. assert_response :forbidden
  16. end
  17. #SHOW
  18. test "should show user" do
  19. get api_v1_user_url(@user),
  20. headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
  21. as: :json
  22. assert_response :success
  23. # Test to ensure response contains the correct email
  24. json_response = JSON.parse(self.response.body, symbolize_names: true)
  25. assert_equal @user.email, json_response.dig(:data, :attributes, :email)
  26. assert_equal @user.username, json_response.dig(:data, :attributes, :username)
  27. end
  28. test "should not show user" do
  29. get api_v1_user_url(@user),
  30. as: :json
  31. assert_response :forbidden
  32. end
  33. #CREATE
  34. test "should create user" do
  35. assert_difference('User.count') do
  36. post api_v1_users_url,
  37. params: { user: { email: 'test@test.org', username: 'new_user_name', password: '123456' } },
  38. as: :json
  39. end
  40. assert_response :created
  41. end
  42. test "should not create user with taken email" do
  43. assert_no_difference('User.count') do
  44. post api_v1_users_url,
  45. params: { user: { email: @user.email, username: 'username_test', password: '123456' } },
  46. as: :json
  47. end
  48. assert_response :unprocessable_entity
  49. end
  50. test "should not create user with taken username" do
  51. assert_no_difference('User.count') do
  52. post api_v1_users_url,
  53. params: { user: { email: "test@email.com", username: @user.username, password: '123456' } },
  54. as: :json
  55. end
  56. assert_response :unprocessable_entity
  57. end
  58. #UPDATE
  59. test "should update user" do
  60. patch api_v1_user_url(@user),
  61. params: { user: { email: @user.email, password: '123456' } },
  62. headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
  63. as: :json
  64. assert_response :success
  65. end
  66. test "should forbid update user" do
  67. patch api_v1_user_url(@user),
  68. params: { user: { email: @user.email, password: '123456' } },
  69. as: :json
  70. assert_response :forbidden
  71. end
  72. #DESTROY
  73. test "should destroy user" do
  74. assert_difference('User.count', -1) do
  75. delete api_v1_user_url(@user),
  76. headers: { Authorization: JsonWebToken.encode(user_id: @user.id) },
  77. as: :json
  78. end
  79. assert_response :no_content
  80. end
  81. test "should forbid destroy user" do
  82. assert_no_difference('User.count') do
  83. delete api_v1_user_url(@user), as: :json
  84. end
  85. assert_response :forbidden
  86. end
  87. end