test_extension.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. import io
  2. import logging
  3. import pytest
  4. from traitlets import default
  5. from .mockextension import MockExtensionApp
  6. from notebook_shim import shim
  7. @pytest.fixture
  8. def read_app_logs(capsys):
  9. """Fixture that returns a callable to read
  10. the current output from the application's logs
  11. that was printed to sys.stderr.
  12. """
  13. def _inner():
  14. captured = capsys.readouterr()
  15. return captured.err
  16. return _inner
  17. @pytest.fixture
  18. def jp_server_config(capsys):
  19. return {
  20. "ServerApp": {
  21. "jpserver_extensions": {
  22. "notebook_shim": True,
  23. "notebook_shim.tests.mockextension": True
  24. }
  25. }
  26. }
  27. @pytest.fixture
  28. def extensionapp(jp_serverapp):
  29. return jp_serverapp.extension_manager.extension_points["mockextension"].app
  30. def list_test_params(param_input):
  31. """"""
  32. params = []
  33. for test in param_input:
  34. name, value = test[0], test[1]
  35. option = (
  36. '--MockExtensionApp.'
  37. '{name}={value}'
  38. .format(name=name, value=value)
  39. )
  40. params.append([[option], name, value])
  41. return params
  42. @pytest.mark.parametrize(
  43. 'jp_argv,trait_name,trait_value',
  44. list_test_params([
  45. ('enable_mathjax', False)
  46. ])
  47. )
  48. def test_EXTAPP_AND_NBAPP_SHIM_MSG(
  49. read_app_logs,
  50. extensionapp,
  51. jp_argv,
  52. trait_name,
  53. trait_value
  54. ):
  55. log = read_app_logs()
  56. # Verify a shim warning appeared.
  57. log_msg = shim.EXTAPP_AND_NBAPP_SHIM_MSG(trait_name, 'MockExtensionApp')
  58. assert log_msg in log
  59. # Verify the trait was updated.
  60. assert getattr(extensionapp, trait_name) == trait_value
  61. @pytest.mark.parametrize(
  62. 'jp_argv,trait_name,trait_value',
  63. list_test_params([
  64. ('allow_origin', ''),
  65. ('allow_origin_pat', ''),
  66. ])
  67. )
  68. def test_EXTAPP_AND_SVAPP_SHIM_MSG(
  69. read_app_logs,
  70. extensionapp,
  71. jp_argv,
  72. trait_name,
  73. trait_value
  74. ):
  75. log = read_app_logs()
  76. # Verify a shim warning appeared.
  77. log_msg = shim.EXTAPP_AND_SVAPP_SHIM_MSG(trait_name, 'MockExtensionApp')
  78. assert log_msg in log
  79. # Verify the trait was updated.
  80. assert getattr(extensionapp, trait_name) == trait_value
  81. @pytest.mark.parametrize(
  82. 'jp_argv,trait_name,trait_value',
  83. list_test_params([
  84. ('jinja_environment_options', {}),
  85. ('jinja_template_vars', {}),
  86. ('extra_template_paths', []),
  87. ('quit_button', True),
  88. ])
  89. )
  90. def test_NOT_EXTAPP_NBAPP_AND_SVAPP_SHIM_MSG(
  91. read_app_logs,
  92. extensionapp,
  93. jp_argv,
  94. trait_name,
  95. trait_value
  96. ):
  97. log = read_app_logs()
  98. # Verify a shim warning appeared.
  99. log_msg = shim.NOT_EXTAPP_NBAPP_AND_SVAPP_SHIM_MSG(trait_name, 'MockExtensionApp')
  100. assert log_msg in log
  101. # Verify the trait was updated.
  102. assert getattr(extensionapp.serverapp, trait_name) == trait_value
  103. @pytest.mark.parametrize(
  104. 'jp_argv,trait_name,trait_value',
  105. list_test_params([
  106. ('allow_credentials', False),
  107. ])
  108. )
  109. def test_EXTAPP_TO_SVAPP_SHIM_MSG(
  110. read_app_logs,
  111. extensionapp,
  112. jp_argv,
  113. trait_name,
  114. trait_value
  115. ):
  116. log = read_app_logs()
  117. # Verify a shim warning appeared.
  118. log_msg = shim.EXTAPP_TO_SVAPP_SHIM_MSG(trait_name, 'MockExtensionApp')
  119. assert log_msg in log
  120. # Verify the trait was updated.
  121. assert getattr(extensionapp.serverapp, trait_name) == trait_value
  122. @pytest.mark.parametrize(
  123. 'jp_argv,trait_name,trait_value',
  124. list_test_params([
  125. ('mathjax_config', 'TEST'),
  126. ('mathjax_url', 'TEST')
  127. ])
  128. )
  129. def test_EXTAPP_TO_NBAPP_SHIM_MSG(
  130. read_app_logs,
  131. extensionapp,
  132. jp_argv,
  133. trait_name,
  134. trait_value
  135. ):
  136. log = read_app_logs()
  137. # Verify a shim warning appeared.
  138. log_msg = shim.EXTAPP_TO_NBAPP_SHIM_MSG(trait_name, 'MockExtensionApp')
  139. assert log_msg in log