Beispiel #1
0
def test_required(mocker):
    _patch = {}
    mocker.patch.dict('os.environ', _patch, clear=True)

    with pytest.raises(RuntimeError) as exc_info:
        discover_settings()

    assert 'DB_URL' in exc_info.value.args[0]
Beispiel #2
0
def test_required(mocker):
    _patch = {}
    mocker.patch.dict('os.environ', _patch, clear=True)

    with pytest.raises(RuntimeError) as exc_info:
        discover_settings()

    assert 'DB_URL' in exc_info.value.args[0]
Beispiel #3
0
def prepare(settings=None):
    """This function prepares an application/script for use with this codebase.

    :return: an environment dictionary containing the newly created
             ``engines``, ``settings`` and a ``closer`` function.
             The ``engines`` value is a ``sqlalchemy.engine.Engine`` instance
             that can be used to connect to the database.
    :rtype: dict

    .. seealso::
       For instructions on how to use this function see: :ref:`scripting_usage`

    """
    # Get the settings
    settings = discover_settings(settings)
    engines = {
        'common': create_engine(settings['db.common.url']),
        'readonly': create_engine(settings['db.readonly.url']),
        'super': create_engine(settings['db.super.url']),
    }

    def closer():
        for e in engines.values():
            e.dispose()

    return {'closer': closer, 'engines': engines, 'settings': settings}
Beispiel #4
0
def test_with_existing_settings_and_no_env(mocker):
    common_url = 'postgresql:///common'

    mocker.patch.dict('os.environ', {}, clear=True)
    existing_settings = {'db.common.url': common_url}

    settings = discover_settings(existing_settings)

    assert settings['db.common.url'] == common_url
    assert settings['db.readonly.url'] == common_url
    assert settings['db.super.url'] == common_url
Beispiel #5
0
def test_with_existing_settings_and_no_env(mocker):
    common_url = 'postgresql:///common'

    mocker.patch.dict('os.environ', {}, clear=True)
    existing_settings = {
        'db.common.url': common_url
    }

    settings = discover_settings(existing_settings)

    assert settings['db.common.url'] == common_url
    assert settings['db.readonly.url'] == common_url
    assert settings['db.super.url'] == common_url
Beispiel #6
0
def test_other_urls_not_required(mocker):
    common_url = 'postgresql:///common'

    _patch = {
        'DB_URL': common_url,
    }
    mocker.patch.dict('os.environ', _patch, clear=True)

    settings = discover_settings()

    assert settings['db.common.url'] == common_url
    assert settings['db.readonly.url'] == common_url
    assert settings['db.super.url'] == common_url
Beispiel #7
0
def test_other_urls_not_required(mocker):
    common_url = 'postgresql:///common'

    _patch = {
        'DB_URL': common_url,
    }
    mocker.patch.dict('os.environ', _patch, clear=True)

    settings = discover_settings()

    assert settings['db.common.url'] == common_url
    assert settings['db.readonly.url'] == common_url
    assert settings['db.super.url'] == common_url
Beispiel #8
0
def test_success(mocker):
    common_url = 'postgresql:///common'
    readonly_url = 'postgresql:///readonly'
    super_url = 'postgresql:///super'

    _patch = {
        'DB_URL': common_url,
        'DB_READONLY_URL': readonly_url,
        'DB_SUPER_URL': super_url,
    }
    mocker.patch.dict('os.environ', _patch, clear=True)

    settings = discover_settings()

    assert settings['db.common.url'] == common_url
    assert settings['db.readonly.url'] == readonly_url
    assert settings['db.super.url'] == super_url
Beispiel #9
0
def test_success(mocker):
    common_url = 'postgresql:///common'
    readonly_url = 'postgresql:///readonly'
    super_url = 'postgresql:///super'

    _patch = {
        'DB_URL': common_url,
        'DB_READONLY_URL': readonly_url,
        'DB_SUPER_URL': super_url,
    }
    mocker.patch.dict('os.environ', _patch, clear=True)

    settings = discover_settings()

    assert settings['db.common.url'] == common_url
    assert settings['db.readonly.url'] == readonly_url
    assert settings['db.super.url'] == super_url
Beispiel #10
0
def test_with_existing_settings(mocker):
    common_url = 'postgresql:///common'
    other_url = 'oracle:///common'

    _patch = {
        'DB_URL': other_url,
        'DB_READONLY_URL': other_url,
        'DB_SUPER_URL': other_url,
    }
    mocker.patch.dict('os.environ', _patch, clear=True)
    existing_settings = {'db.common.url': common_url}

    settings = discover_settings(existing_settings)

    assert settings['db.common.url'] == common_url
    assert settings['db.readonly.url'] == other_url
    assert settings['db.super.url'] == other_url
Beispiel #11
0
def test_with_existing_settings(mocker):
    common_url = 'postgresql:///common'
    other_url = 'oracle:///common'

    _patch = {
        'DB_URL': other_url,
        'DB_READONLY_URL': other_url,
        'DB_SUPER_URL': other_url,
    }
    mocker.patch.dict('os.environ', _patch, clear=True)
    existing_settings = {
        'db.common.url': common_url
    }

    settings = discover_settings(existing_settings)

    assert settings['db.common.url'] == common_url
    assert settings['db.readonly.url'] == other_url
    assert settings['db.super.url'] == other_url