def test_dbt_hook_get_local_fs_backend():
    """Test the correct backend is procured."""
    hook = DbtHook()

    backend = hook.get_backend("", None)

    assert isinstance(backend, DbtLocalFsBackend)
def test_dbt_hook_pull_dbt_profiles():
    """Test dbt hook calls backend correctly."""
    hook = DbtHook()
    hook.backends[("", None)] = FakeBackend()

    args, kwargs = hook.pull_dbt_profiles("/path/to/profiles",
                                          "/path/to/store")

    assert args == ("/path/to/profiles", "/path/to/store")
    assert kwargs == {}
def test_dbt_hook_get_target_from_empty_connection(no_user_airflow_conn,
                                                   database):
    """Test fetching Airflow connections."""
    hook = DbtHook()

    extra_target = hook.get_target_from_connection(no_user_airflow_conn)

    assert no_user_airflow_conn in extra_target
    assert extra_target[no_user_airflow_conn].get("type") == "postgres"
    assert extra_target[no_user_airflow_conn].get("user") is None
    assert extra_target[no_user_airflow_conn]["dbname"] == database.dbname
def test_dbt_hook_push_dbt_project():
    """Test dbt hook calls backend correctly."""
    hook = DbtHook()
    hook.backends[("", None)] = FakeBackend()

    args, kwargs = hook.push_dbt_project("/path/to/profiles",
                                         "/path/to/store",
                                         replace=True,
                                         delete_before=True)

    assert args == ("/path/to/profiles", "/path/to/store")
    assert kwargs == {"replace": True, "delete_before": True}
def test_dbt_hook_get_target_from_connection(airflow_conns, database):
    """Test fetching Airflow connections."""
    hook = DbtHook()

    for conn_id in airflow_conns:
        extra_target = hook.get_target_from_connection(conn_id)

        assert conn_id in extra_target
        assert extra_target[conn_id]["type"] == "postgres"
        assert extra_target[conn_id]["user"] == database.user
        assert extra_target[conn_id]["password"] == database.password
        assert extra_target[conn_id]["dbname"] == database.dbname
def test_dbt_hook_get_s3_backend():
    """Test the correct backend is procured."""
    try:
        from airflow.providers.amazon.aws.hooks.s3 import S3Hook
    except ImportError:
        from airflow.hooks.S3_hook import S3Hook

    hook = DbtHook()

    backend = hook.get_backend("s3", "not_aws_default")

    assert isinstance(backend, DbtS3Backend)
    assert isinstance(backend.hook, S3Hook)
    assert backend.hook.aws_conn_id == "not_aws_default"
 def dbt_hook(self):
     """Provides an existing DbtHook or creates one."""
     if self._dbt_hook is None:
         self._dbt_hook = DbtHook()
     return self._dbt_hook
Exemple #8
0
def hook():
    """Provide a DbtHook."""
    return DbtHook()
def test_dbt_hook_get_backend_raises_not_implemented():
    """Test an error is raised on unsupported backends."""
    hook = DbtHook()

    with pytest.raises(NotImplementedError):
        backend = hook.get_backend("does not exist", None)
def test_dbt_hook_get_target_from_connection_non_existent(conn_id):
    """Test None is returned when Airflow connections do not exist."""
    hook = DbtHook()
    assert hook.get_target_from_connection(conn_id) is None