test_jitsi_meet.py 2.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import datetime
  2. import jwt
  3. from nose.tools import raises
  4. from tracim.lib.jitsi_meet.jitsi_meet import JitsiTokenConfig
  5. from tracim.lib.jitsi_meet.jitsi_meet import JitsiMeetRoom
  6. from tracim.lib.jitsi_meet.jitsi_meet import NoTokenConfigError
  7. class TestJitsiMeetRoom(object):
  8. TOKEN_CONFIG = JitsiTokenConfig(
  9. app_id='test',
  10. secret='secret',
  11. alg='HS256',
  12. duration=60,
  13. )
  14. ROOM = 'room'
  15. DOMAIN = 'tracim'
  16. def test_unit__generate_token(self) -> None:
  17. jmr = JitsiMeetRoom(
  18. domain=self.DOMAIN,
  19. room=self.ROOM,
  20. token_config=self.TOKEN_CONFIG,
  21. )
  22. str_token = jmr.generate_token()
  23. decoded_token = jwt.decode(str_token,
  24. key=self.TOKEN_CONFIG.secret,
  25. algorithm=self.TOKEN_CONFIG.alg,
  26. audience='*',
  27. issuer=self.TOKEN_CONFIG.app_id,
  28. )
  29. assert decoded_token.get('room') == self.ROOM
  30. assert decoded_token.get('iat')
  31. assert decoded_token.get('iat') == decoded_token.get('nbf')
  32. assert decoded_token.get('exp') == decoded_token.get('iat') + self.TOKEN_CONFIG.duration # nopep8
  33. @raises(NoTokenConfigError)
  34. def test_unit__generate_token__no_token(self) -> None:
  35. jmr = JitsiMeetRoom(
  36. domain=self.DOMAIN,
  37. room=self.ROOM,
  38. token_config=None,
  39. )
  40. jmr.generate_token()
  41. def test_unit__generate_url_token(self) -> None:
  42. jmr = JitsiMeetRoom(
  43. domain=self.DOMAIN,
  44. room=self.ROOM,
  45. token_config=self.TOKEN_CONFIG,
  46. )
  47. def generate_token():
  48. return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MTYyNzA3NzksImlzcyI6InRlc3QiLCJhdWQiOiIqIiwibmJmIjoxNTE2MjcwNzE5LCJyb29tIjoicm9vbSIsImlhdCI6MTUxNjI3MDcxOX0.zqFBUcPGjlCfXTjuFP7brqalY8TKlgcg6DUE72KhCx0' # nopep8
  49. jmr.generate_token = generate_token
  50. url = jmr.generate_url()
  51. assert url == 'https://{domain}/{room}?jwt={token}'.format(
  52. domain=self.DOMAIN,
  53. room=self.ROOM,
  54. token=generate_token()
  55. )
  56. def test_unit__generate_url_no_token(self) -> None:
  57. jmr = JitsiMeetRoom(
  58. domain=self.DOMAIN,
  59. room=self.ROOM,
  60. token_config=None,
  61. )
  62. url = jmr.generate_url()
  63. assert url == 'https://{domain}/{room}'.format(
  64. domain=self.DOMAIN,
  65. room=self.ROOM,
  66. )