Пример #1
0
def test_dao_get_service_sms_senders_id_raises_exception_with_archived_sms_sender(
        notify_db_session):
    service = create_service()
    archived_sms_sender = create_service_sms_sender(service=service,
                                                    sms_sender="second",
                                                    is_default=False,
                                                    archived=True)
    with pytest.raises(expected_exception=SQLAlchemyError):
        dao_get_service_sms_sender_by_id(
            service_id=service.id,
            service_sms_sender_id=archived_sms_sender.id)
Пример #2
0
def check_service_sms_sender_id(service_id, sms_sender_id, notification_type):
    if sms_sender_id:
        try:
            return dao_get_service_sms_sender_by_id(service_id, sms_sender_id).sms_sender
        except NoResultFound:
            message = 'sms_sender_id {} does not exist in database for service id {}'\
                .format(sms_sender_id, service_id)
            raise BadRequestError(message=message)
Пример #3
0
def test_dao_get_service_sms_sender_by_id(notify_db_session):
    service = create_service()
    second_sender = dao_add_sms_sender_for_service(service_id=service.id,
                                                   sms_sender='second',
                                                   is_default=False,
                                                   inbound_number_id=None)
    result = dao_get_service_sms_sender_by_id(
        service_id=service.id, service_sms_sender_id=second_sender.id)
    assert result.sms_sender == "second"
    assert not result.is_default
def save_sms(self,
             service_id,
             notification_id,
             encrypted_notification,
             sender_id=None):
    notification = encryption.decrypt(encrypted_notification)
    service = dao_fetch_service_by_id(service_id)
    template = dao_get_template_by_id(notification['template'],
                                      version=notification['template_version'])

    if sender_id:
        reply_to_text = dao_get_service_sms_sender_by_id(
            service_id, sender_id).sms_sender
    else:
        reply_to_text = template.get_reply_to_text()

    if not service_allowed_to_send_to(notification['to'], service,
                                      KEY_TYPE_NORMAL):
        current_app.logger.debug(
            "SMS {} failed as restricted service".format(notification_id))
        return

    try:
        saved_notification = persist_notification(
            template_id=notification['template'],
            template_version=notification['template_version'],
            recipient=notification['to'],
            service=service,
            personalisation=notification.get('personalisation'),
            notification_type=SMS_TYPE,
            api_key_id=None,
            key_type=KEY_TYPE_NORMAL,
            created_at=datetime.utcnow(),
            job_id=notification.get('job', None),
            job_row_number=notification.get('row_number', None),
            notification_id=notification_id,
            reply_to_text=reply_to_text)

        provider_tasks.deliver_sms.apply_async(
            [str(saved_notification.id)],
            queue=QueueNames.SEND_SMS
            if not service.research_mode else QueueNames.RESEARCH_MODE)

        current_app.logger.debug("SMS {} created at {} for job {}".format(
            saved_notification.id, saved_notification.created_at,
            notification.get('job', None)))

    except SQLAlchemyError as e:
        handle_exception(self, notification, notification_id, e)
Пример #5
0
def get_reply_to_text(notification_type, sender_id, service, template):
    reply_to = None
    if sender_id:
        try:
            if notification_type == EMAIL_TYPE:
                message = 'Reply to email address not found'
                reply_to = dao_get_reply_to_by_id(service.id,
                                                  sender_id).email_address
            elif notification_type == SMS_TYPE:
                message = 'SMS sender not found'
                reply_to = dao_get_service_sms_sender_by_id(
                    service.id, sender_id).get_reply_to_text()
        except NoResultFound:
            raise BadRequestError(message=message)
    else:
        reply_to = template.get_reply_to_text()
    return reply_to
def get_service_sms_sender_by_id(service_id, sms_sender_id):
    sms_sender = dao_get_service_sms_sender_by_id(
        service_id=service_id, service_sms_sender_id=sms_sender_id)
    return jsonify(sms_sender.serialize()), 200
Пример #7
0
def test_dao_get_service_sms_sender_by_id_raise_exception_when_not_found(
        notify_db_session):
    service = create_service()
    with pytest.raises(expected_exception=SQLAlchemyError):
        dao_get_service_sms_sender_by_id(service_id=service.id,
                                         service_sms_sender_id=uuid.uuid4())