Exemplo n.º 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]
Exemplo n.º 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]
Exemplo n.º 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}
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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