# pylint: disable=redefined-outer-name,unused-argument,invalid-name,protected-access import os import pytest from dapd_exporter_lambda.entities import BatchPrioritiesEnum, ProjectsEnum from dapd_exporter_lambda.exceptions import InvalidPayloadParameters from dapd_exporter_lambda.services.config import ConfigService def test_load_config__ok(config): env = 'test' event = { 'project': 'dapd_apple', } service = ConfigService(env, event) config = service.load_config() assert config.env == env assert config.project == ProjectsEnum.DAPD_APPLE def test_load_config__ok_for_decibel(): env = 'test' event = { 'project': 'decibel', } service = ConfigService(env, event) config = service.load_config() assert config.env == env assert config.project == ProjectsEnum.DECIBEL assert config.priority == BatchPrioritiesEnum.MEDIUM def test_load_config__invalid_project(): env = 'test' event = { 'project': 'foo', } service = ConfigService(env, event) with pytest.raises(InvalidPayloadParameters): service.load_config() @pytest.mark.parametrize( 'project,result', [ ('decibel', 'decibel_db_secret_key'), ('dapd_apple', 'dapd_apple_db_secret_key'), ('unknown', None), ] ) def test_get_db_secret_key(project, result): env = 'test' event = { 'project': project, } decibel_db_secret_key = 'decibel_db_secret_key' os.environ['DECIBEL_DB_SECRET_KEY'] = decibel_db_secret_key service = ConfigService(env, event) if project == 'unknown': with pytest.raises(InvalidPayloadParameters): service._get_project() else: api_db_secret_key = service._get_api_db_secret_key() etl_db_secret_key = service._get_etl_db_secret_key() assert api_db_secret_key == etl_db_secret_key == result