def test_create_generic_ds_with_invalid_config():
    """
    Tests creating a generic data source with invalid config using create data source function
    """
    test_config = util.read_app_config()
    data_source_list = test_config[DC.DATA_SOURCES_PARENT]

    with pytest.raises(DataSourceException):
        ds.create_datasource(data_source_list[3][DC.NAME])

    with pytest.raises(DataSourceException):
        ds.create_datasource(data_source_list[4][DC.NAME])
def test_init_generic_ds():
    """
    Test creating generic data source objects
    """
    test_config = util.read_app_config()
    data_source_list = test_config[DC.DATA_SOURCES_PARENT]
    datasource = ds.DataSource(data_source_list[0])
    assert datasource.name == data_source_list[0][DC.NAME]
    datasource = ds.DataSource(data_source_list[1])
    assert datasource.name == data_source_list[1][DC.NAME]

    datasource = ds.DataSource(data_source_list[2])
    assert datasource.name == data_source_list[2][DC.NAME]
def test_init_invalid_ds():
    """
    Tests creating data sources with invalid configurations
    """
    test_config = util.read_app_config()
    data_source_list = test_config[DC.DATA_SOURCES_PARENT]
    with pytest.raises(
            DataSourceException,
            match=r".*Base Url is required when data source is not a "
            r"library*."):
        ds.DataSource(data_source_list[3])

    with pytest.raises(
            DataSourceException,
            match=r".*API Authentication token is a required field and is "
            r"missing in configuration*."):
        ds.DataSource(data_source_list[4])
def test_create_generic_ds():
    """
    Tests creating a generic data source using create data source function
    """
    test_config = util.read_app_config()
    data_source_list = test_config[DC.DATA_SOURCES_PARENT]

    datasource = ds.create_datasource(data_source_list[0][DC.NAME])
    assert isinstance(datasource, ds.DataSource)
    assert datasource.name == data_source_list[0][DC.NAME]

    datasource = ds.create_datasource(data_source_list[1][DC.NAME])
    assert isinstance(datasource, ds.DataSource)
    assert datasource.name == data_source_list[1][DC.NAME]

    datasource = ds.create_datasource(data_source_list[2][DC.NAME])
    assert isinstance(datasource, ds.DataSource)
    assert datasource.name == data_source_list[2][DC.NAME]
def default_config():
    """
    Loads the default app configuration
    """
    return util.read_app_config(override_config=True)