def test_manually_request_configuration(): """Manually specify a configuration. Ensure that bad or unknown configurations will throw an InvalidConfigurationError. """ # bad configuration with pytest.raises(InvalidConfigurationError): ConfigurationFactory.get_config(config_type="UNDEFINED") # good configuration configuration = ConfigurationFactory.get_config(config_type="TEST") assert hasattr(configuration, "POSTGRES_PORT") assert hasattr(configuration, "POSTGRES_HOSTNAME")
def test_load_configuration_from_env_for_storage_manager(): """Ensure that a configuration object can be pulled from the environment and has the default configs.""" configuration = ConfigurationFactory.get_config("TEST") assert hasattr(configuration, "SCHEMA_STORAGE_TYPE") assert hasattr(configuration, "DEFAULT_LOCAL_GENERATION_PAYLOAD_PATH") assert hasattr(configuration, "AWS_S3_REGION") assert hasattr(configuration, "AWS_S3_STORAGE_BUCKET_NAME") assert hasattr(configuration, "AWS_S3_STORAGE_OBJECT_NAME")
def test_load_configuration_from_env(): """Load a configuration from the configuration factory. Ensure that a configuration object can be pulled from the environment. """ configuration = ConfigurationFactory.from_env() assert hasattr(configuration, "POSTGRES_PORT") assert hasattr(configuration, "POSTGRES_HOSTNAME")
def base_s3_test_configs(): configs = ConfigurationFactory.get_config("TEST") # set random value to pass check. configs.SCHEMA_STORAGE_TYPE = "S3" configs.AWS_S3_REGION = "test-region" configs.AWS_ACCESS_KEY_ID = "test-key" configs.AWS_SECRET_ACCESS_KEY = "test-access" configs.AWS_S3_STORAGE_BUCKET_NAME = "my-bucket-name" configs.AWS_S3_STORAGE_OBJECT_NAME = "my-object-name" return configs
def get_static_folder_from_app(): static_folder = ConfigurationFactory.from_env().STATIC_FOLDER return static_folder
from data_resource.config import ConfigurationFactory from data_resource.generator.api_manager import generate_api from data_resource.generator.model_manager import create_models from data_resource.shared_utils.log_factory import LogFactory from data_resource.storage.storage_manager import StorageManager from data_resource.shared_utils.validator import validate_data_resource_schema import json import os from data_resource.shared_utils.api_exceptions import ApiError logger = LogFactory.get_console_logger("generator:app") storage = StorageManager(ConfigurationFactory.from_env()) def get_static_folder_from_app(): static_folder = ConfigurationFactory.from_env().STATIC_FOLDER return static_folder def save_swagger(swagger): static_folder = get_static_folder_from_app() swagger_file = os.path.join(static_folder, "static/swagger.json") logger.info(swagger_file) with open(swagger_file, "w") as _file: _file.write(json.dumps(swagger)) def start_data_resource_generator(generation_payload, api,
def test_s3_manager_config_check_failure(): """Ensure that the s3 manager will throw a RuntimeError when AWS configs not found.""" with pytest.raises(RuntimeError): _ = S3Manager(ConfigurationFactory.get_config("TEST"))
"""Database and ORM Fixtures.""" from sqlalchemy import create_engine, MetaData from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import scoped_session, sessionmaker from data_resource.config import ConfigurationFactory from data_resource.shared_utils.log_factory import LogFactory logger = LogFactory.get_console_logger("database") data_resource_config = ConfigurationFactory.from_env() logger.info( f"Connecting to DB at '{data_resource_config.SQLALCHEMY_DATABASE_URI}'...") engine = create_engine( data_resource_config.SQLALCHEMY_DATABASE_URI, pool_size=40, max_overflow=0) # FIXME test suite maxes the pool size out for some reason from sqlalchemy.schema import CreateSchema # noqa: E402 if not engine.dialect.has_schema(engine, "admin"): engine.execute(CreateSchema("admin")) db_session = scoped_session( sessionmaker(autocommit=False, autoflush=False, bind=engine)) admin_base = declarative_base(metadata=MetaData(bind=engine, schema="admin"))
def _check_auth(): """Raises authlib error if not authorized.""" if not ConfigurationFactory.from_env().SKIP_AUTH_CHECK: # provider.validate_token() token_required(provider)(lambda: None)()
"""This is copy and pasted from the generator.api_manager.core.versioned_resource code. This allows the application to ignore auth if its running in test mode. """ from data_resource.shared_utils.log_factory import LogFactory from data_resource.config import ConfigurationFactory from brighthive_authlib import token_required import functools logger = LogFactory.get_console_logger("admin:authchecker") provider = ConfigurationFactory.from_env().get_oauth2_provider() def _check_auth(): """Raises authlib error if not authorized.""" if not ConfigurationFactory.from_env().SKIP_AUTH_CHECK: # provider.validate_token() token_required(provider)(lambda: None)() def check_auth(func): @functools.wraps(func) def check_auth_wrapper(*args, **kwargs): _check_auth() return func(*args, **kwargs) return check_auth_wrapper