# pylint: disable=unused-argument import pytest from dapd_public_api_scraper.config.loader import get_config @pytest.mark.parametrize( 'cli_args,expected', [ ([ '--tasks-file s3://tasks.json', '--tasks-file-delete', '--env dev', '--data-source-name spotify', '--data-source-entity playlists', '--data-source-sme-secret-key dev/delphi/apd/spotify_000', '--data-source-user-secret-key dev/delpi/apd/spotify_111', '--validation-schema-storage s3://dev-delphi-configs/public-data/schemas', '--workflow-db-url psql://user:password@host:port/db', '--s3-backup-bucket raw-data', '--corrupted-bucket corrupted', '--sync', '--concurrency 1982', '--aws-region us-east-1', '--kinesis-transform-stream dev-spotify-playlists', '--sentry-secret-key delphi/dev/sentry_config', '--insert-batch-size 250' ], { 'aws': { 'access_key_id': 'testing', 'endpoint_url': 'https://s3.amazonaws.com', 'region': 'us-east-1', 'secret_access_key': 'testing', }, 'storage_config': { 'raw_data_bucket': 'raw-data', 'corrupted_bucket': 'corrupted', }, 'concurrency': 1982, 'data_source': { 'credentials': { 'sme_secret_key': 'dev/delphi/apd/spotify_000', 'user_secret_key': 'dev/delpi/apd/spotify_111', }, 'dsp': 'spotify', 'entity': 'playlists', }, 'env': 'dev', 'sentry_secret_key': 'delphi/dev/sentry_config', 'sync': True, 'tasks': { 'file': 's3://tasks.json', 'file_delete': True, 'stdin': None, }, 'transform_stream': { 'name': 'dev-spotify-playlists' }, 'validation_schema_storage': { 'name': 's3://dev-delphi-configs/public-data/schemas' }, 'workflow_db': { 'db_url': 'psql://user:*****@host:port/db', 'secret_key': '', }, 'insert_batch_size': 250, 'is_local': False, 'is_removed_ttl': None, }), ([ '--tasks-file s3://tasks.json', '--env dev', '--data-source-name apple_music', '--data-source-entity tracks', '--data-source-sme-secret-key dev/delphi/apd/apple-music', '--validation-schema-storage s3://dev-delphi-configs/public-data/schemas', '--workflow-db-secret-key dev/delphi/apd/workflow_db', '--corrupted-bucket corrupted', '--s3-backup-bucket raw-data', '--kinesis-transform-stream dev-apple_music-tracks', '--is-removed-ttl 30_DAYS' ], { 'aws': { 'access_key_id': 'testing', 'endpoint_url': 'https://s3.amazonaws.com', 'region': 'us-east-2', 'secret_access_key': 'testing', }, 'storage_config': { 'raw_data_bucket': 'raw-data', 'corrupted_bucket': 'corrupted', }, 'concurrency': 1, 'data_source': { 'credentials': { 'sme_secret_key': 'dev/delphi/apd/apple-music', 'user_secret_key': '', }, 'dsp': 'apple_music', 'entity': 'tracks', }, 'env': 'dev', 'sentry_secret_key': None, 'sync': False, 'tasks': { 'file': 's3://tasks.json', 'file_delete': False, 'stdin': None, }, 'transform_stream': { 'name': 'dev-apple_music-tracks' }, 'validation_schema_storage': { 'name': 's3://dev-delphi-configs/public-data/schemas' }, 'workflow_db': { 'db_url': '', 'secret_key': 'dev/delphi/apd/workflow_db' }, 'insert_batch_size': 100, 'is_local': False, 'is_removed_ttl': '30_DAYS', }), ([ '--tasks-file s3://tasks.json', '--env dev', '--data-source-name apple_music', '--data-source-entity tracks', '--data-source-sme-secret-key dev/delphi/apd/spotify_000', '--validation-schema-storage s3://dev-delphi-configs/public-data/schemas', '--workflow-db-secret-key dev/delphi/apd/workflow_db', '--s3-backup-bucket raw-data', '--corrupted-bucket corrupted', '--kinesis-transform-stream dev-apple_music-tracks', '--some-unknown-arg 1235', '--some-unknown-flag', '--is-removed-ttl abcDEFghj' ], { 'aws': { 'access_key_id': 'testing', 'endpoint_url': 'https://s3.amazonaws.com', 'region': 'us-east-2', 'secret_access_key': 'testing', }, 'storage_config': { 'raw_data_bucket': 'raw-data', 'corrupted_bucket': 'corrupted', }, 'concurrency': 1, 'data_source': { 'credentials': { 'sme_secret_key': 'dev/delphi/apd/spotify_000', 'user_secret_key': '', }, 'dsp': 'apple_music', 'entity': 'tracks', }, 'env': 'dev', 'sentry_secret_key': None, 'sync': False, 'tasks': { 'file': 's3://tasks.json', 'file_delete': False, 'stdin': None, }, 'transform_stream': { 'name': 'dev-apple_music-tracks' }, 'validation_schema_storage': { 'name': 's3://dev-delphi-configs/public-data/schemas' }, 'workflow_db': { 'db_url': '', 'secret_key': 'dev/delphi/apd/workflow_db' }, 'insert_batch_size': 100, 'is_local': False, 'is_removed_ttl': 'abcDEFghj', }), ] ) def test_config_from_cli(aws_credentials, cli_args, expected): cli_args = ' '.join(cli_args).split() got = get_config(cli_args) assert got.to_dict() == expected