calendar_controller_test.rb 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. require 'test_helper'
  2. class CalendarControllerTest < 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!(
  11. login: 'calendar-admin',
  12. firstname: 'Packages',
  13. lastname: 'Admin',
  14. email: 'calendar-admin@example.com',
  15. password: 'adminpw',
  16. active: true,
  17. roles: roles,
  18. groups: groups,
  19. )
  20. end
  21. test '01 calendar index with nobody' do
  22. get '/api/v1/calendars', params: {}, headers: @headers
  23. assert_response(401)
  24. result = JSON.parse(@response.body)
  25. assert_equal(Hash, result.class)
  26. assert_equal('authentication failed', result['error'])
  27. get '/api/v1/calendars_init', params: {}, headers: @headers
  28. assert_response(401)
  29. result = JSON.parse(@response.body)
  30. assert_equal(Hash, result.class)
  31. assert_equal('authentication failed', result['error'])
  32. end
  33. test '02 calendar index with admin' do
  34. credentials = ActionController::HttpAuthentication::Basic.encode_credentials('calendar-admin@example.com', 'adminpw')
  35. # index
  36. get '/api/v1/calendars', params: {}, headers: @headers.merge('Authorization' => credentials)
  37. assert_response(200)
  38. result = JSON.parse(@response.body)
  39. assert_equal(Array, result.class)
  40. assert(result)
  41. assert_equal(1, result.count)
  42. get '/api/v1/calendars?expand=true', params: {}, headers: @headers.merge('Authorization' => credentials)
  43. assert_response(200)
  44. result = JSON.parse(@response.body)
  45. assert_equal(Array, result.class)
  46. assert(result)
  47. assert_equal(1, result.count)
  48. get '/api/v1/calendars?full=true', params: {}, headers: @headers.merge('Authorization' => credentials)
  49. assert_response(200)
  50. result = JSON.parse(@response.body)
  51. assert_equal(Hash, result.class)
  52. assert(result)
  53. assert(result['record_ids'])
  54. assert_equal(1, result['record_ids'].count)
  55. assert(result['assets'])
  56. assert(result['assets'].present?)
  57. # index
  58. get '/api/v1/calendars_init', params: {}, headers: @headers.merge('Authorization' => credentials)
  59. assert_response(200)
  60. result = JSON.parse(@response.body)
  61. assert_equal(Hash, result.class)
  62. assert(result['record_ids'])
  63. assert(result['ical_feeds'])
  64. assert_equal('Denmark', result['ical_feeds']['http://www.google.com/calendar/ical/da.danish%23holiday%40group.v.calendar.google.com/public/basic.ics'])
  65. assert_equal('Austria', result['ical_feeds']['http://www.google.com/calendar/ical/de.austrian%23holiday%40group.v.calendar.google.com/public/basic.ics'])
  66. assert(result['timezones'])
  67. assert_equal(2, result['timezones']['Africa/Johannesburg'])
  68. assert_equal(-8, result['timezones']['America/Sitka'])
  69. assert(result['assets'])
  70. end
  71. end