def send(self, notification_type, message, excluded_targets, options, **kwargs): """ While we receive a `targets` parameter here, it is unused, as the SNS topic is pre-configured in the plugin configuration, and can't reasonably be changed dynamically. """ partition = current_app.config.get("LEMUR_AWS_PARTITION", "aws") topic_arn = f"arn:{partition}:sns:{self.get_option('region', options)}:" \ f"{self.get_option('accountNumber', options)}:" \ f"{self.get_option('topicName', options)}" current_app.logger.info(f"Publishing {notification_type} notification to topic {topic_arn}") sns.publish(topic_arn, message, notification_type, options, region_name=self.get_option("region", options))
def test_publish(certificate, endpoint): data = [certificate_notification_output_schema.dump(certificate).data] topic_arn, sqs_client, queue_url = create_and_subscribe_to_topic() message_ids = publish(topic_arn, data, "expiration", get_options(), region_name="us-east-1") assert len(message_ids) == len(data) received_messages = sqs_client.receive_message(QueueUrl=queue_url)["Messages"] for certificate in data: expected_message_id = message_ids[certificate["name"]] actual_message = next( (m for m in received_messages if json.loads(m["Body"])["MessageId"] == expected_message_id), None) actual_json = json.loads(actual_message["Body"]) assert actual_json["Message"] == format_message(certificate, "expiration", get_options()) assert actual_json["Subject"] == "Lemur: Expiration Notification"