Exemplo n.º 1
0
def test_missing_cache_file():
    with pytest.raises(ValueError):
        SnowflakeConnector(user='',
                           password='',
                           account='',
                           name='',
                           ocsp_response_cache_filename='/blah')

    SnowflakeConnector(user='',
                       password='',
                       account='',
                       name='',
                       ocsp_response_cache_filename=__file__)
Exemplo n.º 2
0
def snowflake_connector_malformed():
    return SnowflakeConnector(
        identifier='snowflake_test',
        name='test_name',
        user='******',
        password='******',
        account='test_account',
        default_warehouse='warehouse_1',
    )
Exemplo n.º 3
0
def snowflake_connector():
    return SnowflakeConnector(
        identifier='snowflake_test',
        name='test_name',
        authentication_method=AuthenticationMethod.PLAIN,
        user='******',
        password='******',
        account='test_account',
        default_warehouse='warehouse_1',
    )
Exemplo n.º 4
0
def test_set_warehouse_without_default_warehouse(snowflake_datasource):
    sc_without_default_warehouse = SnowflakeConnector(
        identifier='snowflake_test',
        name='test_name',
        authentication_method=AuthenticationMethod.PLAIN,
        user='******',
        password='******',
        account='test_account',
    )
    snowflake_datasource.warehouse = None
    new_data_source = sc_without_default_warehouse._set_warehouse(
        snowflake_datasource)
    assert new_data_source.warehouse is None
    SnowflakeConnector.get_snowflake_connection_manager().force_clean()
Exemplo n.º 5
0
def snowflake_connector_oauth(mocker):
    user_tokens_keeper = mocker.Mock(
        access_token=SecretStr(OAUTH_ACCESS_TOKEN),
        refresh_token=SecretStr(OAUTH_REFRESH_TOKEN),
        update_tokens=mocker.Mock(),
    )
    sso_credentials_keeper = mocker.Mock(
        client_id=OAUTH_CLIENT_ID,
        client_secret=SecretStr(OAUTH_CLIENT_SECRET))
    return SnowflakeConnector(
        name='test_name',
        authentication_method=AuthenticationMethod.OAUTH,
        user='******',
        password='******',
        account='test_account',
        token_endpoint=OAUTH_TOKEN_ENDPOINT,
        token_endpoint_content_type=OAUTH_TOKEN_ENDPOINT_CONTENT_TYPE,
        user_tokens_keeper=user_tokens_keeper,
        sso_credentials_keeper=sso_credentials_keeper,
        default_warehouse='default_wh',
    )
Exemplo n.º 6
0
def test_get_unique_datasource_identifier():
    snowflake_connector = SnowflakeConnector(
        identifier='snowflake_test',
        name='test_name',
        authentication_method=AuthenticationMethod.PLAIN,
        user='******',
        password='******',
        account='test_account',
        default_warehouse='warehouse_1',
    )

    datasource = SnowflakeDataSource(
        name='test_name',
        domain='test_domain',
        database='database_1',
        warehouse='warehouse_1',
        query='test_query with %(foo)s and %(pokemon)s',
        query_object={
            'schema': 'SHOW_SCHEMA',
            'table': 'MY_TABLE',
            'columns': ['col1', 'col2']
        },
        parameters={
            'foo': 'bar',
            'pokemon': 'pikachu'
        },
    )
    key = snowflake_connector.get_cache_key(datasource)

    datasource2 = SnowflakeDataSource(
        name='test_name',
        domain='test_domain',
        database='database_1',
        warehouse='warehouse_1',
        query='test_query with %(foo)s and %(pokemon)s',
        query_object={
            'schema': 'SHOW_SCHEMA',
            'table': 'MY_TABLE',
            'columns': ['col1', 'col2']
        },
        parameters={
            'foo': 'bar',
            'pokemon': 'pikachu',
            'foo': 'bar'
        },
    )
    key2 = snowflake_connector.get_cache_key(datasource2)

    assert key == key2

    datasource3 = SnowflakeDataSource(
        name='test_name',
        domain='test_domain',
        database='database_2',
        warehouse='warehouse_1',
        query='test_query with %(foo)s and %(pokemon)s',
        query_object={
            'schema': 'SHOW_SCHEMA',
            'table': 'MY_TABLE',
            'columns': ['col1', 'col2']
        },
        parameters={
            'foo': 'bar',
            'pokemon': 'pikachu'
        },
    )

    key3 = snowflake_connector.get_cache_key(datasource3)
    assert key != key3

    another_snowflake_connector = SnowflakeConnector(
        identifier='snowflake_test',
        name='test_name',
        authentication_method=AuthenticationMethod.PLAIN,
        user='******',
        password='******',
        account='another_test_account',
        default_warehouse='warehouse_1',
    )

    assert snowflake_connector.get_cache_key(
        datasource) != another_snowflake_connector.get_cache_key(datasource)
    assert snowflake_connector.get_cache_key(
        datasource2) != another_snowflake_connector.get_cache_key(datasource2)
    assert snowflake_connector.get_cache_key(
        datasource3) != another_snowflake_connector.get_cache_key(datasource3)
Exemplo n.º 7
0
import pytest

from toucan_connectors.snowflake import SnowflakeConnector, SnowflakeDataSource

sc = SnowflakeConnector(name='test_name',
                        user='******',
                        password='******',
                        account='test_account')

sd = SnowflakeDataSource(name='test_name',
                         domain='test_domain',
                         database='test_database',
                         warehouse='test_warehouse',
                         query='test_query')


def test_snowflake(mocker):
    snock = mocker.patch('snowflake.connector.connect')
    reasq = mocker.patch('pandas.read_sql')

    sc.get_df(sd)

    snock.assert_called_once_with(user='******',
                                  password='******',
                                  account='test_account',
                                  database='test_database',
                                  warehouse='test_warehouse',
                                  ocsp_response_cache_filename=None)

    reasq.assert_called_once_with('test_query', con=snock())