Beispiel #1
0
def test_db_params_from_environment_not_set(monkeypatch):
    """
    Test missing db params from environment settings.
    """
    # Arrange
    monkeypatch.delenv('TEST_DBTYPE', raising=False)

    # Act
    with pytest.raises(ETLHelperDbParamsError,
                       match=r".*environment variable is not set.*"):
        DbParams.from_environment(prefix='TEST_')
def test_db_params_from_environment(monkeypatch):
    """
    Test capturing db params from environment settings.
    """
    # Arrange
    monkeypatch.setenv('TEST_DB_PARAMS_ENV_DBTYPE', 'ORACLE')
    monkeypatch.setenv('TEST_DB_PARAMS_ENV_HOST', 'test.host')
    monkeypatch.setenv('TEST_DB_PARAMS_ENV_PORT', '1234')
    monkeypatch.setenv('TEST_DB_PARAMS_ENV_DBNAME', 'testdb')
    monkeypatch.setenv('TEST_DB_PARAMS_ENV_USER', 'testuser')
    monkeypatch.setenv('TEST_DB_PARAMS_ENV_PASSWORD', 'dont want this')

    # Act
    db_params = DbParams.from_environment(prefix='TEST_DB_PARAMS_ENV_')

    # Assert
    assert db_params.dbtype == 'ORACLE'
    assert db_params.host == 'test.host'
    assert db_params.port == '1234'
    assert db_params.dbname == 'testdb'
    assert db_params.user == 'testuser'

    # Confirm that password variable wasn't included
    assert 'PASSWORD' not in db_params
    assert 'password' not in db_params
def test_db_params_validate_params_invalid_dbtype():
    with pytest.raises(ETLHelperDbParamsError, match=r'.* not in valid types .*') as excinfo:
        DbParams(dbtype='not valid')

    # Check that exception doesn't include lower exceptions from stack
    exception_chain = excinfo.getrepr().chain
    assert len(exception_chain) == 1
Beispiel #4
0
def test_db_params_copy():
    """
    Test db_params can copy themselves.
    """
    # Arrange
    test_params = DbParams(dbtype='PG',
                           host='localhost',
                           port=5432,
                           dbname='etlhelper',
                           user='******')

    # Act
    test_params2 = test_params.copy()

    # Assert
    assert test_params2 == test_params
    assert test_params2 is not test_params
    assert isinstance(test_params2, DbParams)
def test_params():
    """Return an example DbParams class."""
    test_params_example = DbParams(
        dbtype='PG',
        host='localhost',
        port=5432,
        dbname='etlhelper',
        user='******')
    return test_params_example
Beispiel #6
0
def test_db_params_repr():
    """Test DbParams string representation"""
    test_params = DbParams(dbtype='PG',
                           host='localhost',
                           port=5432,
                           dbname='etlhelper',
                           user='******')
    result = str(test_params)
    expected = ("DbParams(host='localhost', "
                "port='5432', dbname='etlhelper', "
                "user='******', dbtype='PG')")
    assert result == expected
Beispiel #7
0
def test_db_params_from_environment(monkeypatch):
    """
    Test capturing db params from environment settings.
    """
    # Arrange
    monkeypatch.setenv('TEST_DB_PARAMS_ENV_DBTYPE', 'ORACLE')
    monkeypatch.setenv('TEST_DB_PARAMS_ENV_HOST', 'test.host')
    monkeypatch.setenv('TEST_DB_PARAMS_ENV_PORT', '1234')
    monkeypatch.setenv('TEST_DB_PARAMS_ENV_DBNAME', 'testdb')
    monkeypatch.setenv('TEST_DB_PARAMS_ENV_USER', 'testuser')

    # Act
    db_params = DbParams.from_environment(prefix='TEST_DB_PARAMS_ENV_')

    # Assert
    db_params.dbtype = 'ORACLE'
    db_params.host = 'test.host'
    db_params.port = '1234'
    db_params.dbname = 'testdb'
    db_params.user = '******'
Beispiel #8
0
def test_db_params_validate_params():
    with pytest.raises(ETLHelperDbParamsError,
                       match=r'.* not in valid types .*'):
        DbParams(dbtype='not valid')
def test_db_params_validate_params_extra_param():
    with pytest.raises(ETLHelperDbParamsError,
                       match=r"Invalid parameter\(s\): {'extra_param'}"):
        DbParams(dbtype='ORACLE', host='localhost', port=1, dbname='test',
                 user='******', extra_param=1)
def test_db_params_validate_params_missing_params():
    with pytest.raises(ETLHelperDbParamsError,
                       match=r"{'user'} not set. Required parameters are .*"):
        # missing user
        DbParams(dbtype='ORACLE', host='localhost', port=1, dbname='test')