from unittest.mock import ANY, MagicMock, patch from sientia_do.temporal.activities.postgres import Postgres from scouter.activities.activities import Activities from scouter.activities.api import API from scouter.activities.gates import Gates from scouter.activities.mongodb import MongoDB from scouter.activities.redis import Redis @patch('scouter.activities.activities.MongoDB.__init__') @patch('scouter.activities.activities.Postgres.__init__') @patch('scouter.activities.activities.Redis.__init__') @patch('scouter.activities.activities.Gates.__init__') @patch('scouter.activities.activities.API.__init__') @patch('scouter.activities.activities.MetricsController') def test___init__( mock_metrics_controller, mock_api_init, mock_gates_init, mock_redis_init, mock_postgres_init, mock_mongodb_init, ): postgres_config = { 'host': 'localhost', 'port': 5432, 'user': 'postgres', 'password': 'postgres', 'dbname': 'postgres', 'min_connections': 1, 'max_connections': 10, } redis_config = {'host': 'localhost', 'port': 6379, 'username': 'redis', 'password': 'redis'} mongodb_config = { 'connection_string': 'mongodb://localhost:27017', 'database_name': 'test_database', } api_config = { 'base_url': 'https://api.example.com', 'auth_type': 'bearer', 'auth_token': 'test_token', } logger = MagicMock() notification_handler = MagicMock() activities = Activities( postgres_config=postgres_config, redis_config=redis_config, mongodb_config=mongodb_config, api_config=api_config, logger=logger, notification_handler=notification_handler, ) assert isinstance(activities, Activities) assert isinstance(activities, Postgres) assert isinstance(activities, Redis) assert isinstance(activities, MongoDB) assert isinstance(activities, Gates) assert isinstance(activities, API) mock_postgres_init.assert_called_once_with( ANY, host=postgres_config['host'], port=postgres_config['port'], user=postgres_config['user'], password=postgres_config['password'], dbname=postgres_config['dbname'], min_connections=postgres_config['min_connections'], max_connections=postgres_config['max_connections'], logger=logger, notification_handler=notification_handler, metrics_controller=mock_metrics_controller.return_value, ) mock_redis_init.assert_called_once_with( ANY, host=redis_config['host'], port=redis_config['port'], username=redis_config['username'], password=redis_config['password'], logger=logger, notification_handler=notification_handler, metrics_controller=mock_metrics_controller.return_value, ) mock_mongodb_init.assert_called_once_with( ANY, connection_string=mongodb_config['connection_string'], database_name=mongodb_config['database_name'], logger=logger, notification_handler=notification_handler, metrics_controller=mock_metrics_controller.return_value, ) mock_gates_init.assert_called_once_with( ANY, logger=logger, notification_handler=notification_handler, metrics_controller=mock_metrics_controller.return_value, ) mock_api_init.assert_called_once_with( ANY, base_url=api_config['base_url'], auth_type=api_config['auth_type'], auth_token=api_config['auth_token'], logger=logger, notification_handler=notification_handler, metrics_controller=mock_metrics_controller.return_value, ) @patch('scouter.activities.activities.Postgres.__init__') @patch('scouter.activities.activities.Redis.__init__') @patch('scouter.activities.activities.Gates.__init__') @patch('scouter.activities.activities.MongoDB.__init__') @patch('scouter.activities.activities.API.__init__') @patch('scouter.activities.activities.Postgres.close') @patch('scouter.activities.activities.MongoDB.close') @patch('scouter.activities.activities.Redis.close') @patch('scouter.activities.activities.Gates.close') @patch('scouter.activities.activities.API.close') def test_shutdown( mock_api_close, mock_gates_close, mock_redis_close, mock_mongodb_close, mock_postgres_close, _mock_api_init, _mock_mongodb_init, _mock_gates_init, _mock_redis_init, _mock_postgres_init, ): postgres_config = { 'host': 'localhost', 'port': 5432, 'user': 'postgres', 'password': 'postgres', 'dbname': 'postgres', 'min_connections': 1, 'max_connections': 10, } redis_config = {'host': 'localhost', 'port': 6379, 'username': 'redis', 'password': 'redis'} mongodb_config = { 'connection_string': 'mongodb://localhost:27017', 'database_name': 'test_database', } api_config = { 'base_url': 'https://api.example.com', 'auth_type': 'bearer', 'auth_token': 'test_token', } logger = MagicMock() notification_handler = MagicMock() activities = Activities( postgres_config=postgres_config, redis_config=redis_config, mongodb_config=mongodb_config, api_config=api_config, logger=logger, notification_handler=notification_handler, ) activities.shutdown() mock_postgres_close.assert_called() mock_mongodb_close.assert_called() mock_redis_close.assert_called() mock_gates_close.assert_called() mock_api_close.assert_called()