object_cache_test.rb 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. require 'test_helper'
  3. class ObjectCacheTest < ActiveSupport::TestCase
  4. test 'organization cache' do
  5. org = Organization.create_or_update(
  6. name: 'some org cache member',
  7. updated_by_id: 1,
  8. created_by_id: 1,
  9. )
  10. roles = Role.where(name: %w[Agent Admin])
  11. groups = Group.all
  12. user1 = User.create_or_update(
  13. login: 'object_cache1@example.org',
  14. firstname: 'object_cache1',
  15. lastname: 'object_cache1',
  16. email: 'object_cache1@example.org',
  17. password: 'some_pass',
  18. active: true,
  19. updated_by_id: 1,
  20. created_by_id: 1,
  21. organization_id: org.id,
  22. roles: roles,
  23. groups: groups,
  24. )
  25. assets = org.assets({})
  26. assert_equal(org.member_ids.sort, assets[:Organization][org.id]['member_ids'].sort)
  27. user1.organization_id = nil
  28. user1.save
  29. org.reload
  30. assets = org.assets({})
  31. assert_equal(org.member_ids.sort, assets[:Organization][org.id]['member_ids'].sort)
  32. end
  33. test 'user cache' do
  34. roles = Role.where(name: %w[Agent Admin])
  35. groups = Group.all.order(:id)
  36. # be sure that at least one admin is available
  37. User.create_or_update(
  38. login: 'last_admin_check@example.org',
  39. firstname: 'last_admin_check',
  40. lastname: 'last_admin_check',
  41. email: 'last_admin_check@example.org',
  42. password: 'some_pass',
  43. active: true,
  44. updated_by_id: 1,
  45. created_by_id: 1,
  46. roles: roles,
  47. groups: groups,
  48. )
  49. user1 = User.create_or_update(
  50. login: 'object_cache1@example.org',
  51. firstname: 'object_cache1',
  52. lastname: 'object_cache1',
  53. email: 'object_cache1@example.org',
  54. password: 'some_pass',
  55. active: true,
  56. updated_by_id: 1,
  57. created_by_id: 1,
  58. roles: roles,
  59. groups: groups,
  60. )
  61. assets = user1.assets({})
  62. assert_equal(user1.group_ids_access_map.sort, assets[:User][user1.id]['group_ids'].sort)
  63. # update group
  64. group1 = groups.first
  65. group1.note = "some note #{SecureRandom.uuid}"
  66. group1.save
  67. assets = user1.assets({})
  68. assert(assets[:Group][group1.id])
  69. assert_equal(group1.note, assets[:Group][group1.id]['note'])
  70. # update group
  71. assert_equal(user1.group_ids_access_map.sort, assets[:User][user1.id]['group_ids'].sort)
  72. user1.group_ids = []
  73. user1.save
  74. assets = user1.assets({})
  75. assert_equal(user1.group_ids_access_map.sort, assets[:User][user1.id]['group_ids'].sort)
  76. # update role
  77. assert_equal(user1.role_ids.sort, assets[:User][user1.id]['role_ids'].sort)
  78. user1.role_ids = []
  79. user1.save
  80. assets = user1.assets({})
  81. assert_equal(user1.role_ids.sort, assets[:User][user1.id]['role_ids'].sort)
  82. # update groups
  83. assert_equal(user1.organization_ids.sort, assets[:User][user1.id]['organization_ids'].sort)
  84. user1.organization_ids = [1]
  85. user1.save
  86. assets = user1.assets({})
  87. assert_equal(user1.organization_ids.sort, assets[:User][user1.id]['organization_ids'].sort)
  88. end
  89. end