Ejemplo n.º 1
0
def test_foxx_dependency_management(db):
    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Prep the test service
    db.foxx.create_service(mount=service_mount,
                           source=service_file,
                           dependencies={})

    # Test get service dependencies
    assert db.foxx.dependencies(service_mount) == {}

    # Test get missing service dependencies
    with assert_raises(FoxxDependencyGetError) as err:
        db.foxx.dependencies(missing_mount)
    assert err.value.error_code == 3009

    # Test update service dependencies
    assert db.foxx.update_dependencies(service_mount, {}) == {'values': {}}

    # Test update missing service dependencies
    with assert_raises(FoxxDependencyUpdateError) as err:
        db.foxx.update_dependencies(missing_mount, {})
    assert err.value.error_code == 3009

    # Test replace service dependencies
    assert db.foxx.replace_dependencies(service_mount, {}) == {'values': {}}

    # Test replace missing service dependencies
    with assert_raises(FoxxDependencyReplaceError) as err:
        db.foxx.replace_dependencies(missing_mount, {})
    assert err.value.error_code == 3009
Ejemplo n.º 2
0
def test_foxx_development_toggle(db):
    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Prep the test service
    db.foxx.create_service(
        mount=service_mount,
        source=service_file,
        development=False,
    )

    # Test enable development mode
    service = db.foxx.enable_development(service_mount)
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['development'] is True

    # Test enable development mode for missing service
    with assert_raises(FoxxDevModeEnableError) as err:
        db.foxx.enable_development(missing_mount)
    assert err.value.error_code == 3009

    # Test disable development mode
    service = db.foxx.disable_development(service_mount)
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['development'] is False

    # Test disable development mode for missing service
    with assert_raises(FoxxDevModeDisableError) as err:
        db.foxx.disable_development(missing_mount)
    assert err.value.error_code == 3009
Ejemplo n.º 3
0
def test_foxx_development_toggle(db):
    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Prep the test service
    db.foxx.create_service(
        mount=service_mount,
        source=service_file,
        development=False,
    )

    # Test enable development mode
    service = db.foxx.enable_development(service_mount)
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['development'] is True

    # Test enable development mode for missing service
    with assert_raises(FoxxDevModeEnableError) as err:
        db.foxx.enable_development(missing_mount)
    assert err.value.error_code == 3009

    # Test disable development mode
    service = db.foxx.disable_development(service_mount)
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['development'] is False

    # Test disable development mode for missing service
    with assert_raises(FoxxDevModeDisableError) as err:
        db.foxx.disable_development(missing_mount)
    assert err.value.error_code == 3009
Ejemplo n.º 4
0
def test_foxx_config_management(db):
    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Prep the test service
    db.foxx.create_service(
        mount=service_mount,
        source=service_file,
        config={},
    )

    # Test get service config
    assert db.foxx.config(service_mount) == {}

    # Test get missing service config
    with assert_raises(FoxxConfigGetError) as err:
        db.foxx.config(missing_mount)
    assert err.value.error_code == 3009

    # Test update service config
    assert db.foxx.update_config(service_mount, {}) == {'values': {}}

    # Test update missing service config
    with assert_raises(FoxxConfigUpdateError) as err:
        db.foxx.update_config(missing_mount, {})
    assert err.value.error_code == 3009

    # Test replace service config
    assert db.foxx.replace_config(service_mount, {}) == {'values': {}}

    # Test replace missing service config
    with assert_raises(FoxxConfigReplaceError) as err:
        db.foxx.replace_config(missing_mount, {})
    assert err.value.error_code == 3009
Ejemplo n.º 5
0
def test_foxx_development_toggle(db, cluster):
    if cluster:
        pytest.skip("Not tested in a cluster setup")

    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Prep the test service
    db.foxx.create_service(
        mount=service_mount,
        source=service_file,
        development=False,
    )

    # Test enable development mode
    service = db.foxx.enable_development(service_mount)
    assert service["mount"] == service_mount
    assert service["name"] == service_name
    assert service["development"] is True

    # Test enable development mode for missing service
    with assert_raises(FoxxDevModeEnableError) as err:
        db.foxx.enable_development(missing_mount)
    assert err.value.error_code == 3009

    # Test disable development mode
    service = db.foxx.disable_development(service_mount)
    assert service["mount"] == service_mount
    assert service["name"] == service_name
    assert service["development"] is False

    # Test disable development mode for missing service
    with assert_raises(FoxxDevModeDisableError) as err:
        db.foxx.disable_development(missing_mount)
    assert err.value.error_code == 3009
Ejemplo n.º 6
0
def test_foxx_dependency_management(db):
    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Prep the test service
    db.foxx.create_service(
        mount=service_mount,
        source=service_file,
        dependencies={}
    )

    # Test get service dependencies
    assert db.foxx.dependencies(service_mount) == {}

    # Test get missing service dependencies
    with assert_raises(FoxxDependencyGetError) as err:
        db.foxx.dependencies(missing_mount)
    assert err.value.error_code == 3009

    # Test update service dependencies
    assert db.foxx.update_dependencies(service_mount, {}) == {'values': {}}

    # Test update missing service dependencies
    with assert_raises(FoxxDependencyUpdateError) as err:
        db.foxx.update_dependencies(missing_mount, {})
    assert err.value.error_code == 3009

    # Test replace service dependencies
    assert db.foxx.replace_dependencies(service_mount, {}) == {'values': {}}

    # Test replace missing service dependencies
    with assert_raises(FoxxDependencyReplaceError) as err:
        db.foxx.replace_dependencies(missing_mount, {})
    assert err.value.error_code == 3009
Ejemplo n.º 7
0
def test_foxx_config_management(db):
    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Prep the test service
    db.foxx.create_service(
        mount=service_mount,
        source=service_file,
        config={},
    )

    # Test get service config
    assert db.foxx.config(service_mount) == {}

    # Test get missing service config
    with assert_raises(FoxxConfigGetError) as err:
        db.foxx.config(missing_mount)
    assert err.value.error_code == 3009

    # Test update service config
    assert db.foxx.update_config(service_mount, {}) == {'values': {}}

    # Test update missing service config
    with assert_raises(FoxxConfigUpdateError) as err:
        db.foxx.update_config(missing_mount, {})
    assert err.value.error_code == 3009

    # Test replace service config
    assert db.foxx.replace_config(service_mount, {}) == {'values': {}}

    # Test replace missing service config
    with assert_raises(FoxxConfigReplaceError) as err:
        db.foxx.replace_config(missing_mount, {})
    assert err.value.error_code == 3009
Ejemplo n.º 8
0
def test_foxx_service_management(db, bad_db):
    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Test list services
    for service in db.foxx.services():
        assert 'development' in service
        assert 'legacy' in service
        assert 'mount' in service
        assert 'name' in service
        assert 'provides' in service
        assert 'version' in service

    # Test list services with bad database
    with assert_raises(FoxxServiceListError) as err:
        bad_db.foxx.services()
    assert err.value.error_code == 1228

    # Test create service
    service = db.foxx.create_service(mount=service_mount,
                                     source=service_file,
                                     config={},
                                     dependencies={},
                                     development=True,
                                     setup=True,
                                     legacy=True)
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['development'] is True
    assert service['legacy'] is True
    assert service['manifest']['configuration'] == {}
    assert service['manifest']['dependencies'] == {}

    # Test create duplicate service
    with assert_raises(FoxxServiceCreateError) as err:
        db.foxx.create_service(service_mount, 'service.zip')
    assert err.value.error_code == 3011

    # Test get service
    service = db.foxx.service(service_mount)
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['development'] is True
    assert service['manifest']['configuration'] == {}
    assert service['manifest']['dependencies'] == {}
    assert 'checksum' in service
    assert 'options' in service
    assert 'path' in service
    assert 'version' in service

    # Test get missing service
    with assert_raises(FoxxServiceGetError) as err:
        db.foxx.service(missing_mount)
    assert err.value.error_code == 3009

    # Test update service
    service = db.foxx.update_service(mount=service_mount,
                                     source=service_file,
                                     config={},
                                     dependencies={},
                                     teardown=True,
                                     setup=True,
                                     legacy=False)
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['legacy'] is False

    # Test update missing service
    with assert_raises(FoxxServiceUpdateError) as err:
        db.foxx.update_service(missing_mount, 'service.zip')
    assert err.value.error_code == 3009

    # Test replace service
    service = db.foxx.replace_service(mount=service_mount,
                                      source=service_file,
                                      config={},
                                      dependencies={},
                                      teardown=True,
                                      setup=True,
                                      legacy=True,
                                      force=False)
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['legacy'] is True

    # Test replace missing service
    with assert_raises(FoxxServiceReplaceError) as err:
        db.foxx.replace_service(missing_mount, 'service.zip')
    assert err.value.error_code == 3009

    assert db.foxx.delete_service(service_mount, teardown=False) is True
    assert service_mount not in extract('mount', db.foxx.services())

    # Test delete missing service
    with assert_raises(FoxxServiceDeleteError) as err:
        db.foxx.delete_service(missing_mount, teardown=False)
    assert err.value.error_code == 3009
Ejemplo n.º 9
0
def test_foxx_misc_functions(db, bad_db):
    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Prep the test service
    db.foxx.create_service(
        mount=service_mount,
        source=service_file,
    )

    # Test get service readme
    assert 'Apache 2' in db.foxx.readme(service_mount)

    # Test get missing service readme
    with assert_raises(FoxxReadmeGetError) as err:
        db.foxx.readme(missing_mount)
    assert err.value.error_code == 3009

    # Test get service swagger
    swagger = db.foxx.swagger(service_mount)
    assert 'swagger' in swagger
    assert 'paths' in swagger
    assert 'info' in swagger
    assert 'base_path' in swagger

    # Test get missing service swagger
    with assert_raises(FoxxSwaggerGetError) as err:
        db.foxx.swagger(missing_mount)
    assert err.value.error_code == 3009

    # Test download service
    assert isinstance(db.foxx.download(service_mount), string_types)

    # Test download missing service
    with assert_raises(FoxxDownloadError) as err:
        db.foxx.download(missing_mount)
    assert err.value.error_code == 3009

    # Test commit service state
    assert db.foxx.commit(replace=True) is True
    assert db.foxx.commit(replace=False) is True

    # Test commit service state with bad database
    with assert_raises(FoxxCommitError) as err:
        bad_db.foxx.commit(replace=True)
    assert err.value.error_code == 1228

    # Test list service scripts
    scripts = db.foxx.scripts(service_mount)
    assert 'setup' in scripts
    assert 'teardown' in scripts

    # Test list missing service scripts
    with assert_raises(FoxxScriptListError) as err:
        db.foxx.scripts(missing_mount)
    assert err.value.error_code == 3009

    # Test run service script
    assert db.foxx.run_script(service_mount, 'setup', []) == {}
    assert db.foxx.run_script(service_mount, 'teardown', []) == {}

    # Test run missing service script
    with assert_raises(FoxxScriptRunError) as err:
        db.foxx.run_script(service_mount, 'invalid', ())
    assert err.value.error_code == 3016

    # Test run tests on service
    result_string = db.foxx.run_tests(mount=service_mount,
                                      reporter='suite',
                                      idiomatic=True)
    result_json = json.loads(result_string)
    assert 'stats' in result_json
    assert 'tests' in result_json

    result_string = db.foxx.run_tests(mount=service_mount,
                                      reporter='stream',
                                      output_format='x-ldjson')
    for result_part in result_string.split('\r\n'):
        if len(result_part) == 0:
            continue
        assert result_part.startswith('[')
        assert result_part.endswith(']')

    result_string = db.foxx.run_tests(mount=service_mount,
                                      reporter='stream',
                                      output_format='text')
    assert result_string.startswith('[[')
    assert result_string.endswith(']]')

    result_string = db.foxx.run_tests(mount=service_mount,
                                      reporter='xunit',
                                      output_format='xml')
    assert result_string.strip().startswith('<')
    assert result_string.strip().endswith('>')

    # Test run tests on missing service
    with assert_raises(FoxxTestRunError) as err:
        db.foxx.run_tests(missing_mount)
    assert err.value.error_code == 3009
Ejemplo n.º 10
0
def test_foxx_service_management_file(db, cluster):
    if cluster:
        pytest.skip('Not tested in a cluster setup')

    path = os.path.join(os.path.dirname(__file__), 'static', 'service.zip')
    bad_path = os.path.join(os.path.dirname(__file__), 'static', 'service')

    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Test create service by file with wrong extension
    with assert_raises(ValueError):
        db.foxx.create_service_with_file(service_mount, bad_path)

    # Test create service by file
    service = db.foxx.create_service_with_file(mount=service_mount,
                                               filename=path,
                                               development=True,
                                               setup=True,
                                               legacy=True)
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['development'] is True
    assert service['legacy'] is True
    assert service['manifest']['configuration'] == {}
    assert service['manifest']['dependencies'] == {}

    # Test create duplicate service
    with assert_raises(FoxxServiceCreateError) as err:
        db.foxx.create_service_with_file(service_mount, path)
    assert err.value.error_code == 3011

    # Update config and dependencies
    assert db.foxx.update_config(service_mount, {}) == {'values': {}}
    assert db.foxx.update_dependencies(service_mount, {}) == {'values': {}}

    # Test update service by file
    service = db.foxx.update_service_with_file(mount=service_mount,
                                               filename=path,
                                               teardown=False,
                                               setup=False,
                                               legacy=False,
                                               force=False)
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['legacy'] is False

    # Test update missing service
    with assert_raises(FoxxServiceUpdateError) as err:
        db.foxx.update_service_with_file(missing_mount, path)
    assert err.value.error_code == 3009

    # Test replace service by file
    service = db.foxx.replace_service_with_file(mount=service_mount,
                                                filename=path,
                                                teardown=True,
                                                setup=True,
                                                legacy=True,
                                                force=False)
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['legacy'] is True

    # Test replace missing service
    with assert_raises(FoxxServiceReplaceError) as err:
        db.foxx.replace_service_with_file(missing_mount, path)
    assert err.value.error_code == 3009

    assert db.foxx.delete_service(service_mount, teardown=False) is True
    assert service_mount not in extract('mount', db.foxx.services())
Ejemplo n.º 11
0
def test_foxx_service_management_json(db, bad_db, cluster):
    if cluster:
        pytest.skip("Not tested in a cluster setup")

    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Test list services
    for service in db.foxx.services():
        assert "development" in service
        assert "legacy" in service
        assert "mount" in service
        assert "name" in service
        assert "provides" in service
        assert "version" in service

    # Test list services with bad database
    with assert_raises(FoxxServiceListError) as err:
        bad_db.foxx.services()
    assert err.value.error_code in {11, 1228}

    # Test create service
    service = db.foxx.create_service(
        mount=service_mount,
        source=service_file,
        config={},
        dependencies={},
        development=True,
        setup=True,
        legacy=True,
    )
    assert service["mount"] == service_mount
    assert service["name"] == service_name
    assert service["development"] is True
    assert service["legacy"] is True
    assert service["manifest"]["configuration"] == {}
    assert service["manifest"]["dependencies"] == {}

    # Test create duplicate service
    with assert_raises(FoxxServiceCreateError) as err:
        db.foxx.create_service(service_mount, "service.zip")
    assert err.value.error_code == 3011

    # Test get service
    service = db.foxx.service(service_mount)
    assert service["mount"] == service_mount
    assert service["name"] == service_name
    assert service["development"] is True
    assert service["manifest"]["configuration"] == {}
    assert service["manifest"]["dependencies"] == {}
    assert "checksum" in service
    assert "options" in service
    assert "path" in service
    assert "version" in service

    # Test get missing service
    with assert_raises(FoxxServiceGetError) as err:
        db.foxx.service(missing_mount)
    assert err.value.error_code == 3009

    # Test update service
    service = db.foxx.update_service(
        mount=service_mount,
        source=service_file,
        config={},
        dependencies={},
        teardown=True,
        setup=True,
        legacy=False,
        force=False,
    )
    assert service["mount"] == service_mount
    assert service["name"] == service_name
    assert service["legacy"] is False

    # Test update missing service
    with assert_raises(FoxxServiceUpdateError) as err:
        db.foxx.update_service(missing_mount, "service.zip")
    assert err.value.error_code == 3009

    # Test replace service
    service = db.foxx.replace_service(
        mount=service_mount,
        source=service_file,
        config={},
        dependencies={},
        teardown=True,
        setup=True,
        legacy=True,
        force=False,
    )
    assert service["mount"] == service_mount
    assert service["name"] == service_name
    assert service["legacy"] is True

    # Test replace missing service
    with assert_raises(FoxxServiceReplaceError) as err:
        db.foxx.replace_service(missing_mount, "service.zip")
    assert err.value.error_code == 3009

    assert db.foxx.delete_service(service_mount, teardown=False) is True
    assert service_mount not in extract("mount", db.foxx.services())

    # Test delete missing service
    with assert_raises(FoxxServiceDeleteError) as err:
        db.foxx.delete_service(missing_mount, teardown=False)
    assert err.value.error_code == 3009
Ejemplo n.º 12
0
def test_foxx_misc_functions(db, bad_db, cluster):
    if cluster:
        pytest.skip("Not tested in a cluster setup")

    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Prep the test service
    db.foxx.create_service(
        mount=service_mount,
        source=service_file,
    )

    # Test get service readme
    assert "Apache 2" in db.foxx.readme(service_mount)

    # Test get missing service readme
    with assert_raises(FoxxReadmeGetError) as err:
        db.foxx.readme(missing_mount)
    assert err.value.error_code == 3009

    # Test get service swagger
    swagger = db.foxx.swagger(service_mount)
    assert "swagger" in swagger
    assert "paths" in swagger
    assert "info" in swagger
    assert "base_path" in swagger

    # Test get missing service swagger
    with assert_raises(FoxxSwaggerGetError) as err:
        db.foxx.swagger(missing_mount)
    assert err.value.error_code == 3009

    # Test download service
    assert isinstance(db.foxx.download(service_mount), str)

    # Test download missing service
    with assert_raises(FoxxDownloadError) as err:
        db.foxx.download(missing_mount)
    assert err.value.error_code == 3009

    # Test commit service state
    assert db.foxx.commit(replace=True) is True
    assert db.foxx.commit(replace=False) is True

    # Test commit service state with bad database
    with assert_raises(FoxxCommitError) as err:
        bad_db.foxx.commit(replace=True)
    assert err.value.error_code in {11, 1228}

    # Test list service scripts
    scripts = db.foxx.scripts(service_mount)
    assert "setup" in scripts
    assert "teardown" in scripts

    # Test list missing service scripts
    with assert_raises(FoxxScriptListError) as err:
        db.foxx.scripts(missing_mount)
    assert err.value.error_code == 3009

    # Test run service script
    assert db.foxx.run_script(service_mount, "setup", []) == {}
    assert db.foxx.run_script(service_mount, "teardown", []) == {}

    # Test run missing service script
    with assert_raises(FoxxScriptRunError) as err:
        db.foxx.run_script(service_mount, "invalid", ())
    assert err.value.error_code == 3016

    # Test run tests on service
    result_str = db.foxx.run_tests(mount=service_mount,
                                   reporter="suite",
                                   idiomatic=True,
                                   name_filter="science")
    result_json = json.loads(result_str)
    assert "stats" in result_json
    assert "tests" in result_json
    assert "suites" in result_json

    result_str = db.foxx.run_tests(mount=service_mount,
                                   reporter="stream",
                                   output_format="x-ldjson")
    for result_part in result_str.split("\r\n"):
        if len(result_part) == 0:
            continue
        assert result_part.startswith("[")
        assert result_part.endswith("]")

    result_str = db.foxx.run_tests(mount=service_mount,
                                   reporter="stream",
                                   output_format="text")
    assert result_str.startswith("[")
    assert result_str.endswith("]") or result_str.endswith("\r\n")

    result_str = db.foxx.run_tests(mount=service_mount,
                                   reporter="xunit",
                                   output_format="xml")
    assert result_str.startswith("[")
    assert result_str.endswith("]") or result_str.endswith("\r\n")

    # Test run tests on missing service
    with assert_raises(FoxxTestRunError) as err:
        db.foxx.run_tests(missing_mount)
    assert err.value.error_code == 3009
Ejemplo n.º 13
0
def test_foxx_service_management_file(db, cluster):
    if cluster:
        pytest.skip("Not tested in a cluster setup")

    path = os.path.join(os.path.dirname(__file__), "static", "service.zip")
    bad_path = os.path.join(os.path.dirname(__file__), "static", "service")

    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Test create service by file with wrong extension
    with assert_raises(ValueError):
        db.foxx.create_service_with_file(service_mount, bad_path)

    # Test create service by file
    service = db.foxx.create_service_with_file(
        mount=service_mount,
        filename=path,
        development=True,
        setup=True,
        legacy=True,
        config={"foo": "bar"},
        dependencies={},
    )
    assert service["mount"] == service_mount
    assert service["name"] == service_name
    assert service["development"] is True
    assert service["legacy"] is True
    assert service["manifest"]["configuration"] == {}
    assert service["manifest"]["dependencies"] == {}

    # Test create duplicate service
    with assert_raises(FoxxServiceCreateError) as err:
        db.foxx.create_service_with_file(service_mount, path)
    assert err.value.error_code == 3011

    # Update config and dependencies
    assert db.foxx.update_config(service_mount, {}) == {"values": {}}
    assert db.foxx.update_dependencies(service_mount, {}) == {"values": {}}

    # Test update service by file
    service = db.foxx.update_service_with_file(
        mount=service_mount,
        filename=path,
        teardown=False,
        setup=False,
        legacy=False,
        force=False,
        config={},
        dependencies={},
    )
    assert service["mount"] == service_mount
    assert service["name"] == service_name
    assert service["legacy"] is False
    assert service["manifest"]["configuration"] == {}
    assert service["manifest"]["dependencies"] == {}

    # Test update missing service
    with assert_raises(FoxxServiceUpdateError) as err:
        db.foxx.update_service_with_file(missing_mount, path)
    assert err.value.error_code == 3009

    # Test replace service by file
    service = db.foxx.replace_service_with_file(
        mount=service_mount,
        filename=path,
        teardown=True,
        setup=True,
        legacy=True,
        force=False,
        config={},
        dependencies={},
    )
    assert service["mount"] == service_mount
    assert service["name"] == service_name
    assert service["legacy"] is True
    assert service["manifest"]["configuration"] == {}
    assert service["manifest"]["dependencies"] == {}

    # Test replace missing service
    with assert_raises(FoxxServiceReplaceError) as err:
        db.foxx.replace_service_with_file(missing_mount, path)
    assert err.value.error_code == 3009

    assert db.foxx.delete_service(service_mount, teardown=False) is True
    assert service_mount not in extract("mount", db.foxx.services())
Ejemplo n.º 14
0
def test_foxx_service_management(db, bad_db):
    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Test list services
    for service in db.foxx.services():
        assert 'development' in service
        assert 'legacy' in service
        assert 'mount' in service
        assert 'name' in service
        assert 'provides' in service
        assert 'version' in service

    # Test list services with bad database
    with assert_raises(FoxxServiceListError) as err:
        bad_db.foxx.services()
    assert err.value.error_code in {11, 1228}

    # Test create service
    service = db.foxx.create_service(
        mount=service_mount,
        source=service_file,
        config={},
        dependencies={},
        development=True,
        setup=True,
        legacy=True
    )
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['development'] is True
    assert service['legacy'] is True
    assert service['manifest']['configuration'] == {}
    assert service['manifest']['dependencies'] == {}

    # Test create duplicate service
    with assert_raises(FoxxServiceCreateError) as err:
        db.foxx.create_service(service_mount, 'service.zip')
    assert err.value.error_code == 3011

    # Test get service
    service = db.foxx.service(service_mount)
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['development'] is True
    assert service['manifest']['configuration'] == {}
    assert service['manifest']['dependencies'] == {}
    assert 'checksum' in service
    assert 'options' in service
    assert 'path' in service
    assert 'version' in service

    # Test get missing service
    with assert_raises(FoxxServiceGetError) as err:
        db.foxx.service(missing_mount)
    assert err.value.error_code == 3009

    # Test update service
    service = db.foxx.update_service(
        mount=service_mount,
        source=service_file,
        config={},
        dependencies={},
        teardown=True,
        setup=True,
        legacy=False
    )
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['legacy'] is False

    # Test update missing service
    with assert_raises(FoxxServiceUpdateError) as err:
        db.foxx.update_service(missing_mount, 'service.zip')
    assert err.value.error_code == 3009

    # Test replace service
    service = db.foxx.replace_service(
        mount=service_mount,
        source=service_file,
        config={},
        dependencies={},
        teardown=True,
        setup=True,
        legacy=True,
        force=False
    )
    assert service['mount'] == service_mount
    assert service['name'] == 'test'
    assert service['legacy'] is True

    # Test replace missing service
    with assert_raises(FoxxServiceReplaceError) as err:
        db.foxx.replace_service(missing_mount, 'service.zip')
    assert err.value.error_code == 3009

    assert db.foxx.delete_service(service_mount, teardown=False) is True
    assert service_mount not in extract('mount', db.foxx.services())

    # Test delete missing service
    with assert_raises(FoxxServiceDeleteError) as err:
        db.foxx.delete_service(missing_mount, teardown=False)
    assert err.value.error_code == 3009
Ejemplo n.º 15
0
def test_foxx_misc_functions(db, bad_db):
    service_mount = generate_service_mount()
    missing_mount = generate_service_mount()

    # Prep the test service
    db.foxx.create_service(
        mount=service_mount,
        source=service_file,
    )

    # Test get service readme
    assert 'Apache 2' in db.foxx.readme(service_mount)

    # Test get missing service readme
    with assert_raises(FoxxReadmeGetError) as err:
        db.foxx.readme(missing_mount)
    assert err.value.error_code == 3009

    # Test get service swagger
    swagger = db.foxx.swagger(service_mount)
    assert 'swagger' in swagger
    assert 'paths' in swagger
    assert 'info' in swagger
    assert 'base_path' in swagger

    # Test get missing service swagger
    with assert_raises(FoxxSwaggerGetError) as err:
        db.foxx.swagger(missing_mount)
    assert err.value.error_code == 3009

    # Test download service
    assert isinstance(db.foxx.download(service_mount), string_types)

    # Test download missing service
    with assert_raises(FoxxDownloadError) as err:
        db.foxx.download(missing_mount)
    assert err.value.error_code == 3009

    # Test commit service state
    assert db.foxx.commit(replace=True) is True
    assert db.foxx.commit(replace=False) is True

    # Test commit service state with bad database
    with assert_raises(FoxxCommitError) as err:
        bad_db.foxx.commit(replace=True)
    assert err.value.error_code in {11, 1228}

    # Test list service scripts
    scripts = db.foxx.scripts(service_mount)
    assert 'setup' in scripts
    assert 'teardown' in scripts

    # Test list missing service scripts
    with assert_raises(FoxxScriptListError) as err:
        db.foxx.scripts(missing_mount)
    assert err.value.error_code == 3009

    # Test run service script
    assert db.foxx.run_script(service_mount, 'setup', []) == {}
    assert db.foxx.run_script(service_mount, 'teardown', []) == {}

    # Test run missing service script
    with assert_raises(FoxxScriptRunError) as err:
        db.foxx.run_script(service_mount, 'invalid', ())
    assert err.value.error_code == 3016

    # Test run tests on service
    result_string = db.foxx.run_tests(
        mount=service_mount,
        reporter='suite',
        idiomatic=True
    )
    result_json = json.loads(result_string)
    assert 'stats' in result_json
    assert 'tests' in result_json

    result_string = db.foxx.run_tests(
        mount=service_mount,
        reporter='stream',
        output_format='x-ldjson'
    )
    for result_part in result_string.split('\r\n'):
        if len(result_part) == 0:
            continue
        assert result_part.startswith('[')
        assert result_part.endswith(']')

    result_string = db.foxx.run_tests(
        mount=service_mount,
        reporter='stream',
        output_format='text'
    )
    assert result_string.startswith('[[')
    assert result_string.endswith(']]')

    result_string = db.foxx.run_tests(
        mount=service_mount,
        reporter='xunit',
        output_format='xml'
    )
    assert result_string.strip().startswith('<')
    assert result_string.strip().endswith('>')

    # Test run tests on missing service
    with assert_raises(FoxxTestRunError) as err:
        db.foxx.run_tests(missing_mount)
    assert err.value.error_code == 3009