Beispiel #1
0
    def test_raises_exception_if_adding_number_different_to_inbound_number(
            self, notify_db_session):
        service = create_service()
        inbound_number = create_inbound_number(number='+15551234567')

        with pytest.raises(SmsSenderInboundNumberIntegrityException):
            dao_add_sms_sender_for_service(service_id=service.id,
                                           sms_sender='+15557654321',
                                           is_default=False,
                                           inbound_number_id=inbound_number.id)
Beispiel #2
0
def add_service_sms_sender(service_id):
    dao_fetch_service_by_id(service_id)
    form = validate(request.get_json(), add_service_sms_sender_request)
    inbound_number_id = form.get('inbound_number_id', None)
    sms_sender = form.get('sms_sender')

    if inbound_number_id:
        updated_number = dao_allocate_number_for_service(
            service_id=service_id, inbound_number_id=inbound_number_id)
        # the sms_sender in the form is not set, use the inbound number
        sms_sender = updated_number.number
        existing_sms_sender = dao_get_sms_senders_by_service_id(service_id)
        # we don't want to create a new sms sender for the service if we are allocating an inbound number.
        if len(existing_sms_sender) == 1:
            update_existing_sms_sender = existing_sms_sender[0]
            new_sms_sender = update_existing_sms_sender_with_inbound_number(
                service_sms_sender=update_existing_sms_sender,
                sms_sender=sms_sender,
                inbound_number_id=inbound_number_id)

            return jsonify(new_sms_sender.serialize()), 201

    new_sms_sender = dao_add_sms_sender_for_service(
        service_id=service_id,
        sms_sender=sms_sender,
        is_default=form['is_default'],
        inbound_number_id=inbound_number_id)
    return jsonify(new_sms_sender.serialize()), 201
Beispiel #3
0
    def test_raises_exception_if_adding_number_to_use_already_allocated_inbound_number(
            self, notify_db_session):
        service_with_inbound_number = create_service_with_inbound_number()
        inbound_number = InboundNumber.query.filter_by(
            service_id=service_with_inbound_number.id).one()

        new_service = create_service(service_name='new service')

        with pytest.raises(SmsSenderInboundNumberIntegrityException) as e:
            dao_add_sms_sender_for_service(service_id=new_service.id,
                                           sms_sender='new-number',
                                           is_default=False,
                                           inbound_number_id=inbound_number.id)

        expected_msg = f'Inbound number: {inbound_number.id} is not available'
        assert expected_msg in str(e.value)
Beispiel #4
0
def test_archive_sms_sender_raises_an_error_if_attempting_to_archive_an_inbound_number(
        notify_db_session, is_default):
    service = create_service_with_inbound_number(inbound_number='7654321')
    dao_add_sms_sender_for_service(service.id, 'second', is_default=True)

    inbound_number = next(x for x in service.service_sms_senders
                          if x.inbound_number_id)

    # regardless of whether inbound number is default or not, can't delete it
    dao_update_service_sms_sender(service.id,
                                  inbound_number.id,
                                  is_default=is_default)

    with pytest.raises(ArchiveValidationError) as e:
        archive_sms_sender(service_id=service.id,
                           sms_sender_id=inbound_number.id)

    assert 'You cannot delete an inbound number' in str(e.value)
    assert not inbound_number.archived
Beispiel #5
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
Beispiel #6
0
def test_archive_sms_sender_does_not_archive_a_sender_for_a_different_service(
        sample_service):
    service = create_service(service_name="First service")
    sms_sender = dao_add_sms_sender_for_service(service_id=sample_service.id,
                                                sms_sender='second',
                                                is_default=False)

    with pytest.raises(SQLAlchemyError):
        archive_sms_sender(service.id, sms_sender.id)

    assert not sms_sender.archived
Beispiel #7
0
def test_archive_sms_sender(notify_db_session):
    service = create_service()
    second_sms_sender = dao_add_sms_sender_for_service(service_id=service.id,
                                                       sms_sender='second',
                                                       is_default=False)

    archive_sms_sender(service_id=service.id,
                       sms_sender_id=second_sms_sender.id)

    assert second_sms_sender.archived is True
    assert second_sms_sender.updated_at is not None
Beispiel #8
0
def test_dao_get_sms_senders_by_service_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)
    results = dao_get_sms_senders_by_service_id(service_id=service.id)
    assert len(results) == 2
    for x in results:
        if x.is_default:
            assert x.sms_sender == 'testing'
        else:
            assert x == second_sender
def test_dao_add_sms_sender_for_service_switches_default(notify_db_session):
    service = create_service()
    new_sms_sender = dao_add_sms_sender_for_service(service_id=service.id,
                                                    sms_sender='new_sms',
                                                    is_default=True,
                                                    inbound_number_id=None)

    service_sms_senders = ServiceSmsSender.query.order_by(
        ServiceSmsSender.created_at).all()
    assert len(service_sms_senders) == 2
    assert service_sms_senders[0].sms_sender == 'testing'
    assert not service_sms_senders[0].is_default
    assert service_sms_senders[1] == new_sms_sender
def test_dao_update_service_sms_sender_raises_exception_when_no_default_after_update(
        notify_db_session):
    service = create_service()
    sms_sender = dao_add_sms_sender_for_service(service_id=service.id,
                                                sms_sender='new_sms',
                                                is_default=True,
                                                inbound_number_id=None)
    with pytest.raises(expected_exception=Exception) as e:
        dao_update_service_sms_sender(service_id=service.id,
                                      service_sms_sender_id=sms_sender.id,
                                      is_default=False,
                                      sms_sender="updated")
    assert 'You must have at least one SMS sender as the default' in str(
        e.value)
Beispiel #11
0
def test_dao_add_sms_sender_for_service(notify_db_session):
    service = create_service()
    new_sms_sender = dao_add_sms_sender_for_service(
        service_id=service.id,
        sms_sender="new_sms",
        is_default=False,
        inbound_number_id=None,
    )

    service_sms_senders = ServiceSmsSender.query.order_by(
        ServiceSmsSender.created_at).all()
    assert len(service_sms_senders) == 2
    assert service_sms_senders[0].sms_sender == "testing"
    assert service_sms_senders[0].is_default
    assert not service_sms_senders[0].archived
    assert service_sms_senders[1] == new_sms_sender
Beispiel #12
0
    def test_dao_switches_default(self, notify_db_session):
        service = create_service()
        existing_sms_sender = ServiceSmsSender.query.filter_by(
            service_id=service.id).one()

        new_sms_sender = dao_add_sms_sender_for_service(service_id=service.id,
                                                        sms_sender='new_sms',
                                                        is_default=True,
                                                        inbound_number_id=None)

        existing_sms_sender_after_updates = ServiceSmsSender.query.filter_by(
            id=existing_sms_sender.id).one()
        assert not existing_sms_sender_after_updates.is_default

        new_sms_sender_after_updates = ServiceSmsSender.query.filter_by(
            id=new_sms_sender.id).one()
        assert new_sms_sender_after_updates.is_default
Beispiel #13
0
    def test_dao_add_sms_sender_for_service(self, notify_db_session):
        service = create_service()

        service_sms_senders = ServiceSmsSender.query.filter_by(
            service_id=service.id).all()
        assert len(service_sms_senders) == 1

        new_sms_sender = dao_add_sms_sender_for_service(service_id=service.id,
                                                        sms_sender='new_sms',
                                                        is_default=False,
                                                        inbound_number_id=None)

        service_sms_senders_after_updates = ServiceSmsSender.query.filter_by(
            service_id=service.id).all()
        assert len(service_sms_senders_after_updates) == 2

        assert new_sms_sender in service_sms_senders_after_updates
def test_dao_update_service_sms_sender_switches_default(notify_db_session):
    service = create_service()
    sms_sender = dao_add_sms_sender_for_service(service_id=service.id,
                                                sms_sender='new_sms',
                                                is_default=False,
                                                inbound_number_id=None)
    dao_update_service_sms_sender(service_id=service.id,
                                  service_sms_sender_id=sms_sender.id,
                                  is_default=True,
                                  sms_sender="updated")
    sms_senders = ServiceSmsSender.query.filter_by(
        service_id=service.id).order_by(ServiceSmsSender.created_at).all()
    assert len(sms_senders) == 2
    assert sms_senders[0].sms_sender == 'testing'
    assert not sms_senders[0].is_default
    assert sms_senders[1].sms_sender == 'updated'
    assert sms_senders[1].is_default
def add_service_sms_sender(service_id):
    form = validate(request.get_json(), add_service_sms_sender_request)
    new_sms_sender = dao_add_sms_sender_for_service(service_id=service_id,
                                                    **form)
    return jsonify(new_sms_sender.serialize()), 201