Esempio n. 1
0
def test_optional_content_normalisation_config():
    """Test that the content.target normalisation passes."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['content'] = [
        {
            'source': 'from/here',
            'overwrite': 'always'
        },
    ]

    settings = validate_settings(settings)

    assert isinstance(settings, dict) is True
    assert 'content' in settings
    assert len(settings['content']) == 1
    assert 'target' in settings['content'][0]
    assert settings['content'][0]['target'] == ''

    settings = deepcopy(REQUIRED_SETTINGS)
    settings['content'] = [
        {
            'source': 'from/here',
            'target': None,
            'overwrite': 'always'
        },
    ]

    settings = validate_settings(settings)

    assert isinstance(settings, dict) is True
    assert 'content' in settings
    assert len(settings['content']) == 1
    assert 'target' in settings['content'][0]
    assert settings['content'][0]['target'] == ''
def test_invalid_packages_source():
    """Test that an invalid packages source fails."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['packages'] = {'invalid': ['package1', 'package2']}

    validated = validate_settings(settings)
    assert isinstance(validated, list) is True
Esempio n. 3
0
def test_empty_sources():
    """Test that an empty source list passes."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['sources'] = {'apt': []}

    validated = validate_settings(settings)
    assert isinstance(validated, dict) is True
Esempio n. 4
0
def test_invalid_default_url():
    """Test that an invalid packages source fails."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['jupyter_notebook'] = {'default_url': ''}

    validated = validate_settings(settings)
    assert isinstance(validated, list) is True
def test_hacks_config():
    """Test that the optional hacks settings pass."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['hacks'] = ['missing-man1']

    validated = validate_settings(settings)
    assert isinstance(validated, dict) is True
def test_invalid_web_apps_config():
    """Test that an invalid web_apps config fails."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['web_apps'] = {}

    validated = validate_settings(settings)
    assert isinstance(validated, list) is True
def test_invalid_script_type():
    """Test that an invalid script type fails."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['scripts'] = {'file': ['package1', 'package2']}

    validated = validate_settings(settings)
    assert isinstance(validated, list) is True
Esempio n. 8
0
def test_jupyter_notebook_config():
    """Test that the optional packages settings pass."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['jupyter_notebook'] = {'default_url': 'default'}

    validated = validate_settings(settings)
    assert isinstance(validated, dict) is True
def test_invalid_hacks():
    """Test that an invalid packages source fails."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['packs'] = ['does-not-exist']

    validated = validate_settings(settings)
    assert isinstance(validated, list) is True
    assert 'hacks: invalid value does-not-exist'
def test_packs_config():
    """Test that the optional packs settings pass."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['packs'] = [
        'tutorial-server'
    ]

    validated = validate_settings(settings)
    assert isinstance(validated, dict) is True
def test_missing_part_keys():
    """Test that missing part keys fail."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['tutorial_server'] = {'parts': [{}], 'default': 'tutorial'}

    validated = validate_settings(settings)
    assert isinstance(validated, list) is True
    assert 'tutorial_server.parts.0.name: required field' in validated
    assert 'tutorial_server.parts.0.type: required field' in validated
    assert 'tutorial_server.parts.0.path: required field' in validated
def test_invalid_type_config():
    """Test that an invalid type setting fails."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['type'] = 'invalid'

    errors = validate_settings(settings)

    assert isinstance(errors, list) is True
    assert len(errors) == 1
    assert errors[0] == 'type: unallowed value invalid'
def test_missing_type_config():
    """Test that a missing type setting fails."""
    settings = deepcopy(REQUIRED_SETTINGS)
    del settings['type']

    errors = validate_settings(settings)

    assert isinstance(errors, list) is True
    assert len(errors) == 1
    assert errors[0] == 'type: required field'
def test_missing_module_presentation_config():
    """Test that a missing module.presentation setting fails."""
    settings = deepcopy(REQUIRED_SETTINGS)
    del settings['module']['presentation']

    errors = validate_settings(settings)

    assert isinstance(errors, list) is True
    assert len(errors) == 1
    assert errors[0] == 'module.presentation: required field'
def test_packages_config():
    """Test that the optional packages settings pass."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['packages'] = {
        'apt': ['package1', 'package2'],
        'pip': ['package1', 'package2']
    }

    validated = validate_settings(settings)
    assert isinstance(validated, dict) is True
Esempio n. 16
0
def test_missing_keys():
    """Test that missing keys generate an error."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['sources'] = {'apt': [{}]}

    validated = validate_settings(settings)
    assert isinstance(validated, list) is True
    assert len(validated) == 3
    assert 'sources.apt.0.deb: required field' in validated
    assert 'sources.apt.0.key: required field' in validated
    assert 'sources.apt.0.name: required field' in validated
def test_invalid_web_app():
    """Test that an invalid packages source fails."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['web_apps'] = [
        {}
    ]

    validated = validate_settings(settings)
    assert isinstance(validated, list) is True
    assert 'web_apps.0.path: required field' in validated
    assert 'web_apps.0.cmdline: required field' in validated
def test_scripts_config():
    """Test that the optional scripts settings pass."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['scripts'] = [{
        'inline': ['line1', 'line2']
    }, {
        'inline': ['line1', 'line2']
    }]

    validated = validate_settings(settings)
    assert isinstance(validated, dict) is True
def test_multiple_errors_config():
    """Test that multiple missing fields produce multiple errors."""
    settings = deepcopy(REQUIRED_SETTINGS)
    del settings['module']['code']
    del settings['module']['presentation']

    errors = validate_settings(settings)

    assert isinstance(errors, list) is True
    assert len(errors) == 2
    assert errors[0] == 'module.code: required field'
    assert errors[1] == 'module.presentation: required field'
Esempio n. 20
0
def test_sources_config():
    """Test that the optional sources settings pass."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['sources'] = {
        'apt': [{
            'name': 'source1',
            'key': 'https://example.org/url',
            'deb': 'deb somewhere dist'
        }]
    }

    validated = validate_settings(settings)
    assert isinstance(validated, dict) is True
def test_cmdline_must_be_list():
    """Tests that the cmdline value must be a list."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['web_apps'] = [
        {
            'path': 'mount',
            'cmdline': 'cmd'
        }
    ]

    validated = validate_settings(settings)
    assert isinstance(validated, list) is True
    assert 'web_apps.0.cmdline: must be of list type' in validated
Esempio n. 22
0
def test_invalid_content_source_config():
    """Test that an invalid content.source setting fails."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['content'] = [{
        'source': '',
        'target': 'there',
        'overwrite': 'always'
    }]

    errors = validate_settings(settings)

    assert isinstance(errors, list) is True
    assert len(errors) == 1
    assert errors[0] == 'content.0.source: empty values not allowed'
Esempio n. 23
0
def test_invalid_content_config():
    """Test that a non-list content structure fails."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['content'] = {
        'source': 'from/here',
        'target': 'there',
        'overwrite': 'always'
    }

    errors = validate_settings(settings)

    assert isinstance(errors, list) is True
    assert len(errors) == 1
    assert errors[0] == 'content: must be of list type'
Esempio n. 24
0
def test_invalid_content_overwrite_config():
    """Test that an invalid content.overwrite setting fails."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['content'] = [{
        'source': 'from/here',
        'target': 'there',
        'overwrite': 'sometimes'
    }]

    errors = validate_settings(settings)

    assert isinstance(errors, list) is True
    assert len(errors) == 1
    assert errors[0] == 'content.0.overwrite: unallowed value sometimes'
def test_empty_values():
    """Test that an empty settings fail."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['web_apps'] = [
        {
            'path': '',
            'cmdline': []
        }
    ]

    validated = validate_settings(settings)
    assert isinstance(validated, list) is True
    assert 'web_apps.0.path: empty values not allowed' in validated
    assert 'web_apps.0.cmdline: empty values not allowed' in validated
def test_invalid_types_fail():
    """Test that invalid part types fail."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['tutorial_server'] = {
        'parts': [{
            'name': 'tutorial',
            'type': 'files',
            'path': ''
        }],
        'default': 'tutorial'
    }

    validated = validate_settings(settings)
    assert isinstance(validated, list) is True
    assert 'tutorial_server.parts.0.type: unallowed value files' in validated
def test_empty_values_fail():
    """Test that empty values fail."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['tutorial_server'] = {
        'parts': [{
            'name': '',
            'type': 'tutorial',
            'path': ''
        }],
        'default': ''
    }

    validated = validate_settings(settings)
    assert isinstance(validated, list) is True
    assert 'tutorial_server.parts.0.name: empty values not allowed' in validated
    assert 'tutorial_server.default: empty values not allowed' in validated
def test_default_must_be_boolean():
    """Tests that the default value must be a boolean value."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['web_apps'] = [
        {
            'path': 'mount',
            'cmdline': [
                'cmd',
                'param'
            ],
            'default': 'true'
        }
    ]

    validated = validate_settings(settings)
    assert isinstance(validated, list) is True
    assert 'web_apps.0.default: must be of boolean type' in validated
def test_default_values():
    """Test that the default values are set correctly."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['web_apps'] = [
        {
            'path': 'mount',
            'cmdline': [
                'cmd',
                'param'
            ]
        }
    ]

    validated = validate_settings(settings)
    assert isinstance(validated, dict) is True
    assert validated['web_apps'][0]['port'] == 0
    assert validated['web_apps'][0]['default'] is False
def test_web_apps_config():
    """Test that the optional web_apps settings pass."""
    settings = deepcopy(REQUIRED_SETTINGS)
    settings['web_apps'] = [
        {
            'path': 'mount',
            'cmdline': [
                'cmd',
                'param'
            ],
            'port': 342,
            'default': True
        }
    ]

    validated = validate_settings(settings)
    assert isinstance(validated, dict) is True