You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			160 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			160 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
 | 
						|
import io
 | 
						|
import logging
 | 
						|
import pytest
 | 
						|
 | 
						|
from traitlets import default
 | 
						|
from .mockextension import MockExtensionApp
 | 
						|
from notebook_shim import shim
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture
 | 
						|
def read_app_logs(capsys):
 | 
						|
    """Fixture that returns a callable to read
 | 
						|
    the current output from the application's logs
 | 
						|
    that was printed to sys.stderr.
 | 
						|
    """
 | 
						|
    def _inner():
 | 
						|
        captured = capsys.readouterr()
 | 
						|
        return captured.err
 | 
						|
    return _inner
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture
 | 
						|
def jp_server_config(capsys):
 | 
						|
    return {
 | 
						|
        "ServerApp": {
 | 
						|
            "jpserver_extensions": {
 | 
						|
                "notebook_shim": True,
 | 
						|
                "notebook_shim.tests.mockextension": True
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
@pytest.fixture
 | 
						|
def extensionapp(jp_serverapp):
 | 
						|
    return jp_serverapp.extension_manager.extension_points["mockextension"].app
 | 
						|
 | 
						|
 | 
						|
def list_test_params(param_input):
 | 
						|
    """"""
 | 
						|
    params = []
 | 
						|
    for test in param_input:
 | 
						|
        name, value = test[0], test[1]
 | 
						|
        option = (
 | 
						|
            '--MockExtensionApp.'
 | 
						|
            '{name}={value}'
 | 
						|
            .format(name=name, value=value)
 | 
						|
        )
 | 
						|
        params.append([[option], name, value])
 | 
						|
    return params
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize(
 | 
						|
    'jp_argv,trait_name,trait_value',
 | 
						|
    list_test_params([
 | 
						|
        ('enable_mathjax', False)
 | 
						|
    ])
 | 
						|
)
 | 
						|
def test_EXTAPP_AND_NBAPP_SHIM_MSG(
 | 
						|
    read_app_logs,
 | 
						|
    extensionapp,
 | 
						|
    jp_argv,
 | 
						|
    trait_name,
 | 
						|
    trait_value
 | 
						|
):
 | 
						|
    log = read_app_logs()
 | 
						|
    # Verify a shim warning appeared.
 | 
						|
    log_msg = shim.EXTAPP_AND_NBAPP_SHIM_MSG(trait_name, 'MockExtensionApp')
 | 
						|
    assert log_msg in log
 | 
						|
    # Verify the trait was updated.
 | 
						|
    assert getattr(extensionapp, trait_name) == trait_value
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize(
 | 
						|
    'jp_argv,trait_name,trait_value',
 | 
						|
    list_test_params([
 | 
						|
        ('allow_origin', ''),
 | 
						|
        ('allow_origin_pat', ''),
 | 
						|
    ])
 | 
						|
)
 | 
						|
def test_EXTAPP_AND_SVAPP_SHIM_MSG(
 | 
						|
    read_app_logs,
 | 
						|
    extensionapp,
 | 
						|
    jp_argv,
 | 
						|
    trait_name,
 | 
						|
    trait_value
 | 
						|
):
 | 
						|
    log = read_app_logs()
 | 
						|
    # Verify a shim warning appeared.
 | 
						|
    log_msg = shim.EXTAPP_AND_SVAPP_SHIM_MSG(trait_name, 'MockExtensionApp')
 | 
						|
    assert log_msg in log
 | 
						|
    # Verify the trait was updated.
 | 
						|
    assert getattr(extensionapp, trait_name) == trait_value
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize(
 | 
						|
    'jp_argv,trait_name,trait_value',
 | 
						|
    list_test_params([
 | 
						|
        ('jinja_environment_options', {}),
 | 
						|
        ('jinja_template_vars', {}),
 | 
						|
        ('extra_template_paths', []),
 | 
						|
        ('quit_button', True),
 | 
						|
    ])
 | 
						|
)
 | 
						|
def test_NOT_EXTAPP_NBAPP_AND_SVAPP_SHIM_MSG(
 | 
						|
    read_app_logs,
 | 
						|
    extensionapp,
 | 
						|
    jp_argv,
 | 
						|
    trait_name,
 | 
						|
    trait_value
 | 
						|
):
 | 
						|
    log = read_app_logs()
 | 
						|
    # Verify a shim warning appeared.
 | 
						|
    log_msg = shim.NOT_EXTAPP_NBAPP_AND_SVAPP_SHIM_MSG(trait_name, 'MockExtensionApp')
 | 
						|
    assert log_msg in log
 | 
						|
    # Verify the trait was updated.
 | 
						|
    assert getattr(extensionapp.serverapp, trait_name) == trait_value
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize(
 | 
						|
    'jp_argv,trait_name,trait_value',
 | 
						|
    list_test_params([
 | 
						|
        ('allow_credentials', False),
 | 
						|
    ])
 | 
						|
)
 | 
						|
def test_EXTAPP_TO_SVAPP_SHIM_MSG(
 | 
						|
    read_app_logs,
 | 
						|
    extensionapp,
 | 
						|
    jp_argv,
 | 
						|
    trait_name,
 | 
						|
    trait_value
 | 
						|
):
 | 
						|
    log = read_app_logs()
 | 
						|
    # Verify a shim warning appeared.
 | 
						|
    log_msg = shim.EXTAPP_TO_SVAPP_SHIM_MSG(trait_name, 'MockExtensionApp')
 | 
						|
    assert log_msg in log
 | 
						|
    # Verify the trait was updated.
 | 
						|
    assert getattr(extensionapp.serverapp, trait_name) == trait_value
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize(
 | 
						|
    'jp_argv,trait_name,trait_value',
 | 
						|
    list_test_params([
 | 
						|
        ('mathjax_config', 'TEST'),
 | 
						|
        ('mathjax_url', 'TEST')
 | 
						|
    ])
 | 
						|
)
 | 
						|
def test_EXTAPP_TO_NBAPP_SHIM_MSG(
 | 
						|
    read_app_logs,
 | 
						|
    extensionapp,
 | 
						|
    jp_argv,
 | 
						|
    trait_name,
 | 
						|
    trait_value
 | 
						|
):
 | 
						|
    log = read_app_logs()
 | 
						|
    # Verify a shim warning appeared.
 | 
						|
    log_msg = shim.EXTAPP_TO_NBAPP_SHIM_MSG(trait_name, 'MockExtensionApp')
 | 
						|
    assert log_msg in log
 |