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)
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
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)
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
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 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
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
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)
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
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
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