def lambda_handler(event, context): AppLogging.init('info') app_config = AppConfig( config_file=os.environ['config_file'] ) config = app_config.asdict() database_connection_info_func = lambda: DatabaseConnectionInfo( user=config['database']['user'], password=config['database']['password'], host=config['database']['host'], port=config['database']['port'], database=config['database']['name'] ) database_connector = MySqlConnector( connection_info=database_connection_info_func() ) database_inventory_repository = DatabaseInventoryRepository( database_connector=database_connector ) file_inventory_repository = FileInventoryRepository() inventory_repositories = { 'file': file_inventory_repository, 'database': database_inventory_repository } inventory_repository = inventory_repositories[inventory_repository_selector(app_config)] http_utils = HttpUtils( func_get_headers=lambda: (event['headers'] or dict()).items() ) def behavior_factory(name, value): if name == "throw": return ThrowException() elif name == "compute": return Compute(value) elif name == "malloc": return Malloc(value) elif name == "invalid_query": return InvalidQuery(database_inventory_repository) else: return None behavior_repository = Repository( app_id=app_config.get_app_id(), behavior_factory_func=behavior_factory ) AppLogging.init('info') if(inventory_repository_selector(app_config) == 'database'): setup_database = SetupDatabaseAction(database_connector, database_connection_info_func(), get_inventory_data()) setup_database.execute() endpoint = (event['resource'] or "").lower() if endpoint == "/": index = IndexHandler(app_config, behavior_repository) resp = index.index_message() elif endpoint == "/validatemessage": message = MessageHandler(app_config, http_utils, behavior_repository) resp = message.validate() elif endpoint == "/help": resp = help_message() elif endpoint == "/inventory": inventory = InventoryHandler(app_config, inventory_repository, http_utils, behavior_repository) resp = inventory.get_inventory() elif endpoint == "/inventory/{id+}": inventory = InventoryHandler(app_config, inventory_repository, http_utils, behavior_repository) item_id = event['pathParameters']['id'] resp = inventory.get_inventory_item(item_id) else: body = "Unsupported endpoint: " + endpoint resp = TronResponse(body, dict(), 404) return get_lambda_reponse(resp)
def test_get_app_id(self, request_mock): app_config = AppConfig(self.arguments) result = app_config.get_app_id() self.assertEqual(result, 'app1')