packages_controller_test.rb 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. require 'test_helper'
  2. class PackagesControllerTest < ActionDispatch::IntegrationTest
  3. setup do
  4. # set accept header
  5. @headers = { 'ACCEPT' => 'application/json', 'CONTENT_TYPE' => 'application/json' }
  6. # create agent
  7. roles = Role.where(name: %w[Admin Agent])
  8. groups = Group.all
  9. UserInfo.current_user_id = 1
  10. @admin = User.create_or_update(
  11. login: 'packages-admin',
  12. firstname: 'Packages',
  13. lastname: 'Admin',
  14. email: 'packages-admin@example.com',
  15. password: 'adminpw',
  16. active: true,
  17. roles: roles,
  18. groups: groups,
  19. )
  20. # create agent
  21. roles = Role.where(name: 'Agent')
  22. @agent = User.create_or_update(
  23. login: 'packages-agent@example.com',
  24. firstname: 'Rest',
  25. lastname: 'Agent',
  26. email: 'packages-agent@example.com',
  27. password: 'agentpw',
  28. active: true,
  29. roles: roles,
  30. groups: groups,
  31. )
  32. # create customer without org
  33. roles = Role.where(name: 'Customer')
  34. @customer_without_org = User.create_or_update(
  35. login: 'packages-customer1@example.com',
  36. firstname: 'Packages',
  37. lastname: 'Customer1',
  38. email: 'packages-customer1@example.com',
  39. password: 'customer1pw',
  40. active: true,
  41. roles: roles,
  42. )
  43. end
  44. test '01 packages index with nobody' do
  45. # index
  46. get '/api/v1/packages', params: {}, headers: @headers
  47. assert_response(401)
  48. result = JSON.parse(@response.body)
  49. assert_equal(Hash, result.class)
  50. assert_not(result['packages'])
  51. assert_equal('authentication failed', result['error'])
  52. end
  53. test '02 packages index with admin' do
  54. credentials = ActionController::HttpAuthentication::Basic.encode_credentials('packages-admin@example.com', 'adminpw')
  55. # index
  56. get '/api/v1/packages', params: {}, headers: @headers.merge('Authorization' => credentials)
  57. assert_response(200)
  58. result = JSON.parse(@response.body)
  59. assert_equal(Hash, result.class)
  60. assert(result['packages'])
  61. end
  62. test '03 packages index with admin and wrong pw' do
  63. credentials = ActionController::HttpAuthentication::Basic.encode_credentials('packages-admin@example.com', 'wrongadminpw')
  64. # index
  65. get '/api/v1/packages', params: {}, headers: @headers.merge('Authorization' => credentials)
  66. assert_response(401)
  67. result = JSON.parse(@response.body)
  68. assert_equal(Hash, result.class)
  69. assert_equal('authentication failed', result['error'])
  70. end
  71. test '04 packages index with inactive admin' do
  72. @admin.active = false
  73. @admin.save!
  74. credentials = ActionController::HttpAuthentication::Basic.encode_credentials('packages-admin@example.com', 'adminpw')
  75. # index
  76. get '/api/v1/packages', params: {}, headers: @headers.merge('Authorization' => credentials)
  77. assert_response(401)
  78. result = JSON.parse(@response.body)
  79. assert_equal(Hash, result.class)
  80. assert_equal('authentication failed', result['error'])
  81. end
  82. test '05 packages index with agent' do
  83. credentials = ActionController::HttpAuthentication::Basic.encode_credentials('packages-agent@example.com', 'agentpw')
  84. # index
  85. get '/api/v1/packages', params: {}, headers: @headers.merge('Authorization' => credentials)
  86. assert_response(401)
  87. result = JSON.parse(@response.body)
  88. assert_equal(Hash, result.class)
  89. assert_not(result['packages'])
  90. assert_equal('Not authorized (user)!', result['error'])
  91. end
  92. test '06 packages index with customer' do
  93. credentials = ActionController::HttpAuthentication::Basic.encode_credentials('packages-customer1@example.com', 'customer1pw')
  94. # index
  95. get '/api/v1/packages', params: {}, headers: @headers.merge('Authorization' => credentials)
  96. assert_response(401)
  97. result = JSON.parse(@response.body)
  98. assert_equal(Hash, result.class)
  99. assert_not(result['packages'])
  100. assert_equal('Not authorized (user)!', result['error'])
  101. end
  102. end