token_test.rb 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. # encoding: utf-8
  2. require 'test_helper'
  3. class TokenTest < ActiveSupport::TestCase
  4. test 'token' do
  5. groups = Group.all
  6. roles = Role.where(name: 'Agent')
  7. agent1 = User.create_or_update(
  8. login: 'token-agent1@example.com',
  9. firstname: 'Token',
  10. lastname: 'Agent1',
  11. email: 'token-agent1@example.com',
  12. password: 'agentpw',
  13. active: true,
  14. roles: roles,
  15. groups: groups,
  16. updated_by_id: 1,
  17. created_by_id: 1,
  18. )
  19. # invalid token
  20. user = Token.check(
  21. action: 'PasswordReset',
  22. name: '1NV4L1D',
  23. )
  24. assert_not(user)
  25. # generate fresh token
  26. token = Token.create(
  27. action: 'PasswordReset',
  28. user_id: agent1.id,
  29. )
  30. assert(token)
  31. assert_equal(nil, token.persistent)
  32. user = Token.check(
  33. action: 'PasswordReset_NotExisting',
  34. name: token.name,
  35. )
  36. assert_not(user)
  37. user = Token.check(
  38. action: 'PasswordReset',
  39. name: token.name,
  40. )
  41. assert(user)
  42. assert_equal('Token', user.firstname)
  43. assert_equal('Agent1', user.lastname)
  44. assert_equal('token-agent1@example.com', user.email)
  45. # two days but not persistent
  46. token = Token.create(
  47. action: 'PasswordReset',
  48. user_id: agent1.id,
  49. created_at: 2.days.ago,
  50. persistent: false,
  51. )
  52. user = Token.check(
  53. action: 'PasswordReset',
  54. name: token.name,
  55. )
  56. assert_not(user)
  57. # two days but persistent
  58. token = Token.create(
  59. action: 'iCal',
  60. user_id: agent1.id,
  61. created_at: 2.days.ago,
  62. persistent: true,
  63. )
  64. user = Token.check(
  65. action: 'iCal',
  66. name: token.name,
  67. )
  68. assert(user)
  69. assert_equal('Token', user.firstname)
  70. assert_equal('Agent1', user.lastname)
  71. assert_equal('token-agent1@example.com', user.email)
  72. # api token with permissions
  73. token = Token.create(
  74. action: 'api',
  75. label: 'some label',
  76. persistent: true,
  77. user_id: agent1.id,
  78. preferences: {
  79. permission: ['admin', 'ticket.agent'], # agent has no access to admin.*
  80. }
  81. )
  82. user = Token.check(
  83. action: 'api',
  84. name: token.name,
  85. permission: 'admin.session',
  86. )
  87. assert_not(user)
  88. user = Token.check(
  89. action: 'api',
  90. name: token.name,
  91. permission: 'admin',
  92. )
  93. assert_not(user)
  94. user = Token.check(
  95. action: 'api',
  96. name: token.name,
  97. permission: 'ticket',
  98. )
  99. assert_not(user)
  100. user = Token.check(
  101. action: 'api',
  102. name: token.name,
  103. permission: 'ticket.agent',
  104. )
  105. assert(user)
  106. assert_equal('Token', user.firstname)
  107. assert_equal('Agent1', user.lastname)
  108. assert_equal('token-agent1@example.com', user.email)
  109. user = Token.check(
  110. action: 'api',
  111. name: token.name,
  112. permission: ['ticket.agent', 'not_existing'],
  113. )
  114. assert(user)
  115. assert_equal('Token', user.firstname)
  116. assert_equal('Agent1', user.lastname)
  117. assert_equal('token-agent1@example.com', user.email)
  118. end
  119. end