assets_test.rb 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. # encoding: utf-8
  2. require 'test_helper'
  3. class AssetsTest < ActiveSupport::TestCase
  4. test 'user' do
  5. roles = Role.where( name: %w(Agent Admin) )
  6. groups = Group.all
  7. org = Organization.create_or_update(
  8. name: 'some user org',
  9. updated_by_id: 1,
  10. created_by_id: 1,
  11. )
  12. user1 = User.create_or_update(
  13. login: 'assets1@example.org',
  14. firstname: 'assets1',
  15. lastname: 'assets1',
  16. email: 'assets1@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. user2 = User.create_or_update(
  26. login: 'assets2@example.org',
  27. firstname: 'assets2',
  28. lastname: 'assets2',
  29. email: 'assets2@example.org',
  30. password: 'some_pass',
  31. active: true,
  32. updated_by_id: 1,
  33. created_by_id: 1,
  34. roles: roles,
  35. groups: groups,
  36. )
  37. user3 = User.create_or_update(
  38. login: 'assets3@example.org',
  39. firstname: 'assets3',
  40. lastname: 'assets3',
  41. email: 'assets3@example.org',
  42. password: 'some_pass',
  43. active: true,
  44. updated_by_id: user1.id,
  45. created_by_id: user2.id,
  46. roles: roles,
  47. groups: groups,
  48. )
  49. user3 = User.find(user3.id)
  50. assets = user3.assets({})
  51. org = Organization.find(org.id)
  52. attributes = org.attributes_with_associations
  53. attributes.delete('user_ids')
  54. assert( diff(attributes, assets[:Organization][org.id]), 'check assets')
  55. user1 = User.find(user1.id)
  56. attributes = user1.attributes_with_associations
  57. attributes['accounts'] = {}
  58. attributes['password'] = ''
  59. attributes.delete('token_ids')
  60. attributes.delete('authorization_ids')
  61. assert( diff(attributes, assets[:User][user1.id]), 'check assets' )
  62. user2 = User.find(user2.id)
  63. attributes = user2.attributes_with_associations
  64. attributes['accounts'] = {}
  65. attributes['password'] = ''
  66. attributes.delete('token_ids')
  67. attributes.delete('authorization_ids')
  68. assert( diff(attributes, assets[:User][user2.id]), 'check assets' )
  69. user3 = User.find(user3.id)
  70. attributes = user3.attributes_with_associations
  71. attributes['accounts'] = {}
  72. attributes['password'] = ''
  73. attributes.delete('token_ids')
  74. attributes.delete('authorization_ids')
  75. assert( diff(attributes, assets[:User][user3.id]), 'check assets' )
  76. # touch org, check if user1 has changed
  77. sleep 2
  78. org2 = Organization.find(org.id)
  79. org2.note = "some note...#{rand(9_999_999_999_999)}"
  80. org2.save
  81. attributes = org2.attributes_with_associations
  82. attributes.delete('user_ids')
  83. assert( !diff(attributes, assets[:Organization][org2.id]), 'check assets' )
  84. user1_new = User.find(user1.id)
  85. attributes = user1_new.attributes_with_associations
  86. attributes['accounts'] = {}
  87. attributes['password'] = ''
  88. attributes.delete('token_ids')
  89. attributes.delete('authorization_ids')
  90. assert( !diff(attributes, assets[:User][user1_new.id]), 'check assets' )
  91. # check new assets lookup
  92. assets = user3.assets({})
  93. attributes = org2.attributes_with_associations
  94. attributes.delete('user_ids')
  95. assert( diff(attributes, assets[:Organization][org.id]), 'check assets')
  96. user1 = User.find(user1.id)
  97. attributes = user1.attributes_with_associations
  98. attributes['accounts'] = {}
  99. attributes['password'] = ''
  100. attributes.delete('token_ids')
  101. attributes.delete('authorization_ids')
  102. assert( diff(attributes, assets[:User][user1.id]), 'check assets' )
  103. user2 = User.find(user2.id)
  104. attributes = user2.attributes_with_associations
  105. attributes['accounts'] = {}
  106. attributes['password'] = ''
  107. attributes.delete('token_ids')
  108. attributes.delete('authorization_ids')
  109. assert( diff(attributes, assets[:User][user2.id]), 'check assets' )
  110. user3 = User.find(user3.id)
  111. attributes = user3.attributes_with_associations
  112. attributes['accounts'] = {}
  113. attributes['password'] = ''
  114. attributes.delete('token_ids')
  115. attributes.delete('authorization_ids')
  116. assert( diff(attributes, assets[:User][user3.id]), 'check assets' )
  117. end
  118. test 'organization' do
  119. roles = Role.where( name: %w(Agent Admin) )
  120. admin1 = User.create_or_update(
  121. login: 'admin1@example.org',
  122. firstname: 'admin1',
  123. lastname: 'admin1',
  124. email: 'admin1@example.org',
  125. password: 'some_pass',
  126. active: true,
  127. updated_by_id: 1,
  128. created_by_id: 1,
  129. roles: roles,
  130. )
  131. roles = Role.where( name: %w(Customer) )
  132. org = Organization.create_or_update(
  133. name: 'some customer org',
  134. updated_by_id: admin1.id,
  135. created_by_id: 1,
  136. )
  137. user1 = User.create_or_update(
  138. login: 'assets1@example.org',
  139. firstname: 'assets1',
  140. lastname: 'assets1',
  141. email: 'assets1@example.org',
  142. password: 'some_pass',
  143. active: true,
  144. updated_by_id: 1,
  145. created_by_id: 1,
  146. organization_id: org.id,
  147. roles: roles,
  148. )
  149. user2 = User.create_or_update(
  150. login: 'assets2@example.org',
  151. firstname: 'assets2',
  152. lastname: 'assets2',
  153. email: 'assets2@example.org',
  154. password: 'some_pass',
  155. active: true,
  156. updated_by_id: 1,
  157. created_by_id: 1,
  158. organization_id: org.id,
  159. roles: roles,
  160. )
  161. user3 = User.create_or_update(
  162. login: 'assets3@example.org',
  163. firstname: 'assets3',
  164. lastname: 'assets3',
  165. email: 'assets3@example.org',
  166. password: 'some_pass',
  167. active: true,
  168. updated_by_id: user1.id,
  169. created_by_id: user2.id,
  170. roles: roles,
  171. )
  172. org = Organization.find(org.id)
  173. assets = org.assets({})
  174. attributes = org.attributes_with_associations
  175. attributes.delete('user_ids')
  176. assert( diff(attributes, assets[:Organization][org.id]), 'check assets' )
  177. admin1 = User.find(admin1.id)
  178. attributes = admin1.attributes_with_associations
  179. attributes['accounts'] = {}
  180. attributes['password'] = ''
  181. attributes.delete('token_ids')
  182. attributes.delete('authorization_ids')
  183. assert( diff(attributes, assets[:User][admin1.id]), 'check assets' )
  184. user1 = User.find(user1.id)
  185. attributes = user1.attributes_with_associations
  186. attributes['accounts'] = {}
  187. attributes['password'] = ''
  188. attributes.delete('token_ids')
  189. attributes.delete('authorization_ids')
  190. assert( diff(attributes, assets[:User][user1.id]), 'check assets' )
  191. user2 = User.find(user2.id)
  192. attributes = user2.attributes_with_associations
  193. attributes['accounts'] = {}
  194. attributes['password'] = ''
  195. attributes.delete('token_ids')
  196. attributes.delete('authorization_ids')
  197. assert( diff(attributes, assets[:User][user2.id]), 'check assets' )
  198. user3 = User.find(user3.id)
  199. attributes = user3.attributes_with_associations
  200. attributes['accounts'] = {}
  201. attributes['password'] = ''
  202. attributes.delete('token_ids')
  203. attributes.delete('authorization_ids')
  204. assert_nil( assets[:User][user3.id], 'check assets' )
  205. # touch user 2, check if org has changed
  206. sleep 2
  207. user_new_2 = User.find(user2.id)
  208. user_new_2.lastname = 'assets2'
  209. user_new_2.save
  210. org_new = Organization.find(org.id)
  211. attributes = org_new.attributes_with_associations
  212. attributes.delete('user_ids')
  213. assert( !diff(attributes, assets[:Organization][org_new.id]), 'check assets' )
  214. attributes = user_new_2.attributes_with_associations
  215. attributes['accounts'] = {}
  216. attributes['password'] = ''
  217. attributes.delete('token_ids')
  218. attributes.delete('authorization_ids')
  219. assert( !diff(attributes, assets[:User][user_new_2.id]), 'check assets' )
  220. # check new assets lookup
  221. assets = org_new.assets({})
  222. attributes = org_new.attributes_with_associations
  223. attributes.delete('user_ids')
  224. assert( diff(attributes, assets[:Organization][org_new.id]), 'check assets' )
  225. attributes = user_new_2.attributes_with_associations
  226. attributes['accounts'] = {}
  227. attributes['password'] = ''
  228. attributes.delete('token_ids')
  229. attributes.delete('authorization_ids')
  230. assert( diff(attributes, assets[:User][user_new_2.id]), 'check assets' )
  231. end
  232. def diff(o1, o2)
  233. return true if o1 == o2
  234. if o1['updated_at']
  235. o1['updated_at'] = o1['updated_at'].to_s
  236. end
  237. if o2['updated_at']
  238. o2['updated_at'] = o2['updated_at'].to_s
  239. end
  240. return true if (o1.to_a - o2.to_a).empty?
  241. puts "ERROR: difference \n1: #{o1.inspect}\n2: #{o2.inspect}\ndiff: #{(o1.to_a - o2.to_a).inspect}"
  242. false
  243. end
  244. end