async def insanic_application_with_event_polling(self, monkeypatch, insanic_application, create_global_sns, filter_policy): monkeypatch.setattr( settings, "INIESTA_SNS_PRODUCER_GLOBAL_TOPIC_ARN", create_global_sns["TopicArn"], raising=False, ) monkeypatch.setattr( settings, "INIESTA_INITIALIZATION_TYPE", ["SNS_PRODUCER"], raising=False, ) from iniesta import Iniesta Iniesta.init_app(insanic_application) client = await SNSClient.initialize( topic_arn=create_global_sns["TopicArn"]) class TestView(InsanicView): permission_classes = [] @client.publish_event(event="testEvent") def get(self, request, *args, **kwargs): return json_response({"help": "me"}) insanic_application.add_route(TestView.as_view(), "/tests/event/") return insanic_application
def insanic_application( self, set_global_topic_arn, set_filters, monkeypatch, ): monkeypatch.setattr( settings, "INIESTA_INITIALIZATION_TYPE", ["EVENT_POLLING", "SNS_PRODUCER"], raising=False, ) app = Insanic("xavi") Iniesta.init_app(app) yield app
async def test_insanic_run_sns_not_set( self, insanic_application, test_server, monkeypatch ): monkeypatch.setattr( settings, "INIESTA_INITIALIZATION_TYPE", ["EVENT_POLLING", "SNS_PRODUCER"], raising=False, ) with pytest.raises(ImproperlyConfigured) as exc_info: Iniesta.init_app(insanic_application) await test_server(insanic_application) assert "INIESTA_SNS_PRODUCER_GLOBAL_TOPIC_ARN" in str(exc_info.value)
def test_init_app_invalid_choice( self, monkeypatch, insanic_application, invalid_initialization_types, set_sns_arn, ): monkeypatch.setattr( settings, "INIESTA_INITIALIZATION_TYPE", invalid_initialization_types, raising=False, ) with pytest.raises(ImproperlyConfigured): Iniesta.init_app(insanic_application)
def test_trying_to_initialize_more_than_once( self, insanic_application, set_sns_arn, initialization_types, monkeypatch, ): monkeypatch.setattr( settings, "INIESTA_INITIALIZATION_TYPE", initialization_types, raising=False, ) Iniesta.init_app(insanic_application) if initialization_types != (): with pytest.raises( ImproperlyConfigured, match="Iniesta has already been initialized!", ): Iniesta.init_app(insanic_application) else: assert Iniesta.initialization_type == 0 Iniesta.init_app(insanic_application)
async def test_insanic_run_bad_topic_arn( self, insanic_application, test_server, topic_arn, init_method_name, monkeypatch, ): monkeypatch.setattr( settings, "INIESTA_INITIALIZATION_TYPE", ["EVENT_POLLING", "SNS_PRODUCER"], raising=False, ) monkeypatch.setattr( settings, "INIESTA_SNS_PRODUCER_GLOBAL_TOPIC_ARN", topic_arn ) Iniesta.init_app(insanic_application) with pytest.raises(botocore.exceptions.ClientError) as exc_info: await test_server(insanic_application) assert exc_info
async def test_init_app( self, monkeypatch, insanic_application, set_sns_arn, initialization_types, ): monkeypatch.setattr( settings, "INIESTA_INITIALIZATION_TYPE", initialization_types, raising=False, ) Iniesta.init_app(insanic_application) final = 0 for i in initialization_types: final |= InitializationTypes[i] assert Iniesta.initialization_type == final assert Iniesta.config_imported is True checks = [] after_server_start_listener_functions = self._get_function_list( insanic_application.listeners["after_server_start"] ) before_server_stop_listener_functions = self._get_function_list( insanic_application.listeners["before_server_stop"] ) if InitializationTypes.SNS_PRODUCER.name in initialization_types: assert ( IniestaListener.after_server_start_producer_check in after_server_start_listener_functions ) checks.append(InitializationTypes.SNS_PRODUCER.name) if InitializationTypes.QUEUE_POLLING.name in initialization_types: assert ( IniestaListener.after_server_start_start_queue_polling in after_server_start_listener_functions ) assert ( IniestaListener.before_server_stop_stop_polling in before_server_stop_listener_functions ) checks.append(InitializationTypes.QUEUE_POLLING.name) if InitializationTypes.EVENT_POLLING.name in initialization_types: assert ( IniestaListener.after_server_start_event_polling in after_server_start_listener_functions ) assert ( IniestaListener.before_server_stop_stop_polling in before_server_stop_listener_functions ) checks.append(InitializationTypes.EVENT_POLLING.name) if InitializationTypes.CUSTOM.name in initialization_types: checks.append(InitializationTypes.CUSTOM.name) assert sorted(checks) == sorted(initialization_types)